gpt4 book ai didi

python - 如何将连续数据拆分成组?

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:12 25 4
gpt4 key购买 nike

我有两个数据集,第一个是离散数据,第二个是连续数据:

import numpy as np

# discrete
data1 = [1, 1, 2, 2, 2, 3, 4, 4,7, 7, 7, 7, 7, 7]

# continuous
data2 = np.random.normal(size=100)

现在我想计算频率。对于 data1 来说很简单,因为它包含离散值:

import collections
c = collections.Counter(data1)
sum = sum(c.values())
for key,val in c.iteritems():
print([key,float(val)/sum])

我怎样才能对连续数字做同样的事情?从理论上我知道必须对连续数据进行分组。只有在此之后,它才能表示为条形图。那么,如何在python中对数据进行分组呢?

最佳答案

对于 numpy,请查看 np.histogram对于连续数据和 np.bincount对于离散数据。

举个简单的例子:

import numpy as np

data1 = [1, 1, 2, 2, 2, 3, 4, 4, 7, 7, 7, 7, 7, 7]
data2 = np.random.normal(size=100)


discrete_counts = np.bincount(data1)
discrete_vals = np.arange(len(discrete_counts))

counts, edges = np.histogram(data2)

如果您想绘制结果,请查看 plt.histplt.bar .

例如:

import numpy as np
import matplotlib.pyplot as plt

data1 = [1, 1, 2, 2, 2, 3, 4, 4, 7, 7, 7, 7, 7, 7]
data2 = np.random.normal(size=100)

fig, axes = plt.subplots(nrows=2)

counts = np.bincount(data1)
vals = np.arange(len(counts))
axes[0].bar(counts, vals, align='center', color='lightblue')
axes[0].set(title='Discrete Data')

axes[1].hist(data2, color='salmon')
axes[1].set(title='Continuous Data')

for ax in axes:
ax.margins(0.05)
ax.set_ylim(bottom=0)

plt.show()

enter image description here

如果您正在使用 pandas,正如@Carsten 提到的,请查看 hist 函数来绘制直方图(类似于 plt.hist).但是,numpy.histogram 的等价物是 pandas.cut ,当您想要直方图计数(或想要按连续范围分组)时,这非常方便。

关于python - 如何将连续数据拆分成组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32441912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com