【发布时间】:2018-02-01 16:31:00
【问题描述】:
目前,我创建了一个 for 循环,它循环遍历我的数组并将结果转储到 PDF 中,但是我无法将它与 heapq.nlargest 结合使用。 我想将我的直方图与 pandas 的每个数组的前 10% 得分重叠。
目前,代码是
x = list(df1.columns.values)
fig = plt.figure(num=None, figsize=(30, 200), dpi=80, facecolor='w', edgecolor='w')
for i in range(6):#(len(df1.ix[i])):
val= x[i]
y = df1.iloc[:,i]
yy = heapq.nlargest(len(df1.iloc[:,i])//10, df1.iloc[:,i])
ax = fig.add_subplot(len(df1.ix[0]),3,i+1)
plt.hist(y, bins=np.logspace(-4, 3, 100))
plt.hist(yy, bins=np.logspace(-4, 3, 100))
plt.savefig('D:/All Documents/Frequency_Distribution_Scores.pdf')
当我介绍时
yy = heapq.nlargest(len(df1.iloc[:,i])*p//100, (df1.iloc[:,i]))
plt.hist(yy, bins=np.logspace(-4, 3, 100))
似乎只是在我的所有图表上绘制了第一个数组的前 10% 的值,而不是找到每个数组的前 10%。
有人指点一下吗? 干杯
【问题讨论】:
-
请提供一个示例DataFrame。
-
数据框是一个包含 37 列和 180 万行的文件。我不确定如何在示例中描述这一点?这就是为什么我用 x = (len(df1.ix[i])) 来表示每列名称,用 y = y = df1.iloc[:,i] 来表示每列的长度。
-
由于您正在遍历列,您只需给我们
df1.head()几列! -
是的,确定 - 在范围内打印 i (len(df1.ix[0])) 让我... 1 WEIGHTED__TRANS_IN 2 WEIGHTED__TRANS_OUT 3 WEIGHTED__CASH_IN 4 WEIGHTED__CASH_OUT 5 WEIGHTED__IP_IN 这些只是前 5 列(不包括第 0 列)。谢谢
标签: python arrays pandas histogram overlapping