如何按范围对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_rows100 000)。因此,在最坏的情况下,您可能会尝试在直方图中绘制 100 000 条形图。

我建议您减少垃圾箱的数量(对于人眼,我认为您不会注意到 100 000 垃圾箱和1000 之间的太大区别)。如果您真的想绘制直方图,那么将这个数字减少到 100 或更少的 IMO 会更有意义。

如果您想绘制大型数据集,您可能应该看看其他实现更高效后端的工具,并可能使用基于 OpenGL 的后端。例如:PyQtGraph、VisPy、Bokeh、Chaco...

【讨论】:

将 bin 的数量减少到 100,情节似乎还不错。但是,仍在努力将它们分组到一定范围内。感谢您的帮助!

以上是关于如何按范围对csv文件中的列进行分组并使用python绘制直方图?的主要内容,如果未能解决你的问题,请参考以下文章

Pandas - 按字段分组并使用显示该字段数量的列

如何将数据框从长转换为宽,索引中的值按年份分组?

根据熊猫数据框中的列标签对数据进行分组

Spark 按 Key 分组并对数据进行分区

在Microsoft SWS中,如何对行进行分组?

如何仅按某个列值的前几个字母对 SQL 查询进行分组?