Python 不同列数据集之间的直方图问题

Python 不同列数据集之间的直方图问题,python,numpy,matplotlib,histogram,Python,Numpy,Matplotlib,Histogram,我有一个CSV,我正在从中提取不同的数据列,并读取到一个函数中,我正在创建一个直方图。我遇到的问题是,我的直方图对于一列中的数据是正确的,而对于另一列中的数据却没有显示正确的内容。例如,我有一个包含年龄的列,我的柱状图在这方面非常有效,但我有另一个包含人口的列(与年龄相比数量更大),柱状图只显示列中的行数。当我打印Numpy数组时,它会打印出与年龄数据相同的数据。我能看到的两列之间的唯一区别是,年龄列有超过10k行,而人口行为558行,人口数为5-6位,而年龄为1-2位 年龄列(这些在柱状图中起

我有一个CSV,我正在从中提取不同的数据列,并读取到一个函数中,我正在创建一个直方图。我遇到的问题是,我的直方图对于一列中的数据是正确的,而对于另一列中的数据却没有显示正确的内容。例如,我有一个包含年龄的列,我的柱状图在这方面非常有效,但我有另一个包含人口的列(与年龄相比数量更大),柱状图只显示列中的行数。当我打印Numpy数组时,它会打印出与年龄数据相同的数据。我能看到的两列之间的唯一区别是,年龄列有超过10k行,而人口行为558行,人口数为5-6位,而年龄为1-2位

年龄列(这些在柱状图中起作用):

“总体”列(直方图表示“总体”列中的值数)

我的职能是:

def直方图(列数据):
产品名称(品名)
df=列数据到numpy()
af=df.重塑(-1)
plt.历史(af)
plt.show()

有趣的行为。我在第一次运行时也看到了它(即没有绘图)。一旦我在plot命令中使用了
bin
,问题就消失了。正如您所猜测的,这可能与您的人口数据相对于引用的精度的相对稀疏性有关

import numpy as np
import matplotlib.pyplot as p

pop= [43191,73901,38247,98266,
66781,62075,30444,96109,
40497,37964,40822,40599,
28360,24949,34969,49455,
18128,34586,37489,48177,
22061,35218,53745,97493,
39764,16193,65818,53285]

dat= np.random.rand(1000) # less sparse data

p.figure (figsize=(10,3))

p.subplot(131)
p.hist(pop)
p.subplot(132)
p.hist(pop,bins=100);
p.subplot(133)
p.hist(dat, bins=100);

我在这方面仍然有问题。我的图表在x轴上仅显示0.0-3.0,在y轴上仅显示0-250。图中确实有一些条,但它们都聚集在0.0-0.3之间,峰值可能达到275。数据输入与我在原始帖子中向您展示的相同。想法?我不确定,x轴应该是0..100k。还可以将存储箱指定为列表,而不是多个存储箱。如果你的数据与我从你的问题中复制的数据相同,那么y轴应该更小。您只列出了28个数据点。所以,即使你有一个箱子,它也不能高于28。检查你传递给hist的东西的尺寸(形状)。它必须是单个列表,而不是2D<代码>重塑(-1)推断维度,因此您可能拥有与您认为的不同的东西。
43191
73901
38247
98266
66781
62075
30444
96109
40497
37964
40822
40599
28360
24949
34969
49455
18128
34586
37489
48177
22061
35218
53745
97493
39764
16193
65818
53285
import numpy as np
import matplotlib.pyplot as p

pop= [43191,73901,38247,98266,
66781,62075,30444,96109,
40497,37964,40822,40599,
28360,24949,34969,49455,
18128,34586,37489,48177,
22061,35218,53745,97493,
39764,16193,65818,53285]

dat= np.random.rand(1000) # less sparse data

p.figure (figsize=(10,3))

p.subplot(131)
p.hist(pop)
p.subplot(132)
p.hist(pop,bins=100);
p.subplot(133)
p.hist(dat, bins=100);