如何按范围对csv文件中的列进行分组并使用python绘制直方图?
Posted
技术标签:
【中文标题】如何按范围对csv文件中的列进行分组并使用python绘制直方图?【英文标题】:How to group a column in a csv file by a range and plot histogram using python? 【发布时间】:2017-02-08 13:37:59 【问题描述】:我有一个包含 20 多列的数据集,其中之一是“Trip_distance”,其中有超过 100,000 行。
这是“Trip_distance”列的示例:
[0 0 0.59 0.74 0.61 1.07 1.43 0.9 1.33 0.84]
然后继续。 我想通过将它们分组到一个范围内来绘制直方图(因为绘制所有 100,000 个值没有意义)。
我试过了
plt.hist(df['Trip_distance'],bins = no_of_rows)
plt.show()
但是代码内存不足。
有没有办法在 python 中做到这一点?
【问题讨论】:
如果你先将你的trip_distance列装箱,然后绘制结果呢? 【参考方案1】:Matplotlib 在绘制大型数据集时效率不高。问题是您使用的是bins=no_of_rows
(我猜no_of_rows
是100 000
)。因此,在最坏的情况下,您可能会尝试在直方图中绘制 100 000
条形图。
我建议您减少垃圾箱的数量(对于人眼,我认为您不会注意到 100 000
垃圾箱和1000
之间的太大区别)。如果您真的想绘制直方图,那么将这个数字减少到 100
或更少的 IMO 会更有意义。
如果您想绘制大型数据集,您可能应该看看其他实现更高效后端的工具,并可能使用基于 OpenGL 的后端。例如:PyQtGraph、VisPy、Bokeh、Chaco...
【讨论】:
将 bin 的数量减少到 100,情节似乎还不错。但是,仍在努力将它们分组到一定范围内。感谢您的帮助!以上是关于如何按范围对csv文件中的列进行分组并使用python绘制直方图?的主要内容,如果未能解决你的问题,请参考以下文章