迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Python 中使用 SciPy、NumPy 和 Pandas 存储数据

作者:迹忆客 最近更新:2023/06/28 浏览次数:

随着数据和用例的指数级增长,数据分箱或分类对于理解这些数据变得必要。

关于数据分箱,可以使用不同的技术,例如数据聚类或更经典的统计技术(例如回归分析)。

我们将了解为什么需要数据分箱以及哪种技术最适合哪种情况。


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))

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python 中的 Pandas 插入方法

发布时间:2024/04/23 浏览次数:112 分类:Python

本教程介绍了如何在 Pandas DataFrame 中使用 insert 方法在 DataFrame 中插入一列。

Pandas 重命名多个列

发布时间:2024/04/22 浏览次数:199 分类:Python

本教程演示了如何使用 Pandas 重命名数据框中的多个列。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便