在 Python 中使用 SciPy、NumPy 和 Pandas 存储数据
随着数据和用例的指数级增长,数据分箱或分类对于理解这些数据变得必要。
关于数据分箱,可以使用不同的技术,例如数据聚类或更经典的统计技术(例如回归分析)。
我们将了解为什么需要数据分箱以及哪种技术最适合哪种情况。
Python 中的分箱
分箱是推断不同变量关系的最强大的分析技术之一。
分箱是一种非参数且高度灵活的技术,其中变量被分类为不同的集合以揭示模式和趋势。 它广泛适用于各种数据集和微小样本量。
分箱是将数据分组到箱中的过程。 它可以用于各种目的,例如按范围对数据点进行分组、按密度对数据点进行分组或按相似性对数据点进行分组。
在 python 中对数据进行装箱的方法有多种,例如使用 numpy.digitize()
函数、pandas.cut()
函数以及使用 scipy.stats.binned_statistic()
函数。
每种方法都有优点和缺点,因此选择适合任务的方法至关重要。
数据装箱的重要性
数据分箱是一个简单的概念:对数据进行分类以进行更直接的分析。 例如,您可能在 CSV 中有多个大型数据表,并且您希望将数据分成更小的块。
数据分箱允许您将数据放入不同的组中,以便您可以更好地分析它,我们还可以使用它来创建漂亮的可视化效果。
那么,为什么需要数据分箱呢? 首先,数据分箱至关重要,因为它可以帮助您更好地分析数据。 例如,您可以将整个数据表拆分为更容易理解或可视化的更小的块。
数据分箱可以帮助您找到数据中的模式,并更轻松地识别异常值。 它允许您获取大量数据集并使其更易于管理以解决问题的实质。
数据分箱是将连续变量细分为离散箱的过程。 举一个粗略的例子,如果您有患者的体温变量,您可以将温度分为五个箱(例如,< 36.5、36.5–37.5、37.5–38.5、38.5–39.5 和 > 39.5)。
此优点是您可以使用箱范围在直方图或箱形图中可视化变量。
在 Python 中绑定数据的不同方法
在 Python 中存储数据的方法有多种,但使用 SciPy 和 NumPy 库可以说是最有效的。
在 Python 中使用 SciPy 和 NumPy 进行数据分箱
首先使用 SciPy 和 NumPy,假设您有一个要分箱的数据点列表。 第一步是导入 SciPy 和 NumPy 库:
import numpy as np
import scipy as sp
接下来,您需要定义垃圾箱的边缘。 可以使用 linspace 函数来完成:
bin_edges = np.linspace(start, stop, num=num_bins)
其中 start 和 stop 分别是数据的最小值和最大值,num_bins 是要创建的 bin 编号。 最后,您可以使用 SciPy 直方图函数对数据进行分箱:
binned_data = sp.histogram(data, bin_edges)
binned_data 变量现在将包含一个包含两个元素的元组。 第一个元素是分箱数据的数组,第二个元素是分箱边缘的数组。
在 Python 中使用 Numpy 进行数据分箱
代码示例:
# import Numpy library
import numpy
# define the edges of bin
data = numpy.random.random(100)
bins = numpy.linspace(0, 1, 10)
# finally, bin the data using numpy
digitized = numpy.digitize(data, bins)
bin_means = [data[digitized == i].mean() for i in range(1, len(bins))]
bins = numpy.linspace(0, 1, 10)
digitized = numpy.digitize(data, bins)
[data[digitized == i].mean() for i in range(1, len(bins))]
输出:
[0.05308461260140375,
0.16559348769870028,
0.28950800899648155,
0.3874228665181473,
0.5046647094141071,
0.6254841134474202,
0.7216935463408317,
0.8374773268113803,
0.9421576008815353]
在 Python 中使用 Pandas 进行数据分箱
代码示例:
# import libraries
import numpy as np
import pandas
df = pandas.DataFrame({"a": np.random.random(100),
"b": np.random.random(100) + 10})
# will Bin the data frame by "a" in 10 bins
bins = np.linspace(df.a.min(), df.a.max(), 10)
groups = df.groupby(pandas.cut(df.a, bins))
# Get the b mean that the values will bin
print (groups.mean().b)
输出:
a
(0.00762, 0.117] 10.576639
(0.117, 0.226] 10.319629
(0.226, 0.335] 10.633805
(0.335, 0.444] 10.404979
(0.444, 0.553] 10.551616
(0.553, 0.662] 10.420306
(0.662, 0.771] 10.434091
(0.771, 0.88] 10.402038
(0.88, 0.989] 10.537547
Name: b, dtype: float64
使用 SciPy 在 Python 中对数据进行 Bin 处理
代码示例:
# import libraries
import numpy as np
from scipy import stats
# define array
arr = [20, 2, 7, 1, 34]
print("\narr : \n", arr)
# start binning
print("\nbinned_statistic for median : \n", stats.binned_statistic(
arr, np.arange(5), statistic ='median', bins = 4))
输出:
Array = [20, 2, 7, 1, 34]
Binned statistics for median
BinnedStatisticResult(statistic=array([ 2., nan, 0., 4.]), bin_edges=array([ 1. , 9.25, 17.5 , 25.75, 34. ]), binnumber=array([3, 1, 1, 1, 4], dtype=int64))
相关文章
在 Python 中使用 Fsolve
发布时间:2023/06/28 浏览次数:65 分类:Python
-
本文将探讨如何使用 fsolve 在 Python 中求解。 我们还将探索它的使用场景和一些示例代码,以更好地理解如何以及何时使用它来达到某种结果。让我们首先了解 fsolve 是什么以及为什么使用它。
在 Python 中创建 Getter 和 Setter
发布时间:2023/06/28 浏览次数:172 分类:Python
-
这些行为在支持 OOP 的编程语言中很流行,Python 也支持它。 本文将讨论如何在 Python 中创建 getter 和 setter。Python 中的 Getter 和 Setter
从 Java 代码调用 Python 脚本
发布时间:2023/06/28 浏览次数:93 分类:Python
-
本篇文章介绍了从 Java 代码调用 Python 脚本的三种不同方法。从 Java 代码调用 Python 脚本 有时,我们必须从Java代码中调用Python脚本来满足项目需求。
Python 中的位掩码简介
发布时间:2023/06/27 浏览次数:125 分类:Python
-
本篇文章介绍了 Python 中的位掩码,并演示了如何使用按位运算符(例如 AND、OR、NOT 等)执行位掩码。Python 中的位掩码简介 位掩码是几乎所有编程语言的通用概念;
在 Ubuntu 中卸载 Python
发布时间:2023/06/27 浏览次数:158 分类:Python
-
本文演示如何从 Ubuntu 中删除或卸载 Python。检查你的系统中是否安装了Python 使用 Ctrl+Alt+T 打开终端。打开终端后,使用命令 python3 --version 检查您的系统是否安装了 python。
Python Teradata 连接
发布时间:2023/06/27 浏览次数:86 分类:Python
-
本文将讨论一些基本的正确准则,并在讨论连接方式之前了解 Teradata 模块的工作原理。Python 中的 Teradata 数据库 您可以使用 Python 和 Teradata 模块编写与 Teradata 数据库的强大交互脚本。
在 Python 中查找素因数
发布时间:2023/06/27 浏览次数:175 分类:Python
-
本篇文章将介绍如何在 Python 中执行素因数分解。质因数分解概述 在数学中,数字的因子是那些可以除以给定数字且余数为零的数字。
在 Python 中从 URL 中提取域
发布时间:2023/06/27 浏览次数:86 分类:Python
-
本文将通过实际例子来讲解Python的 urlparse() 函数从URL中解析并提取域名。 我们还将讨论提高解析 URL 和使用其不同组件的能力。使用 urlparse() 从 URL 中提取域
Python 中的省略号对象
发布时间:2023/06/27 浏览次数:158 分类:Python
-
本篇文章将介绍 Python 中省略号对象的使用。使用省略号作为未编写代码的占位符 省略号对象可以以不同的方式使用。 它主要充当未编写代码的占位符。