我有一个CSV,我正在从中提取不同的数据列,并读取到一个函数中,其中我正在创建一个直方图。我遇到的问题是,我的直方图对于一列中的数据是正确的,而对于另一列中的数据却没有显示正确的内容。例如,我有一个包含年龄的列,我的直方图在这方面工作得很好,但我还有另一个包含人口(与年龄相比数字更大)的列,直方图只显示该列中的行数。当我打印Numpy数组时,它打印出与年龄数据相同的输出。我能看到的两列之间的唯一区别是,年龄列有超过10k行,而人口行是558行,人口数字是5-6位,而年龄是1-2位。
Age列(这些列在直方图中工作):
82
50
53
67
26
56
50
26
60
26
59
54
25
53
52
67
22
55
57
84
55
74
67
70
59
62
32Population列(直方图表示Population列中的值数)。
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我的功能是:
def histogram(column_data):
plt.title(col_name)
df = column_data.to_numpy()
af = df.reshape(-1)
plt.hist(af)
plt.show()发布于 2020-09-22 11:02:26
有趣的行为。我在第一次运行时也看到了它(即没有绘图)。一旦我在我的plot命令中使用了bins,这个问题就消失了。这可能与人口数据相对于引用精度的相对稀疏性有关,正如您所猜测的那样。
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);

https://stackoverflow.com/questions/64002401
复制相似问题