python - Pandas:df.groupby() 对于大数据集来说太慢了。任何替代方法?

标签 python pandas grouping bigdata

我有一个包含 380 万行和一列的 pandas.DataFrame,我正在尝试按索引对它们进行分组。

索引是客户ID。我想按索引对 qty_liter 进行分组:

df = df.groupby(df.index).sum()

但是完成计算需要很长时间。有没有其他方法可以处理非常大的数据集?

这是df.info():

<class 'pandas.core.frame.DataFrame'>
Index: 3842595 entries, -2147153165 to \N
Data columns (total 1 columns):
qty_liter    object
dtypes: object(1)
memory usage: 58.6+ MB

数据如下所示:

enter image description here

最佳答案

问题是您的数据不是数字。处理字符串比处理数字花费的时间长得多。先试试这个:

df.index = df.index.astype(int)
df.qty_liter = df.qty_liter.astype(float)

然后再次执行 groupby()。它应该快得多。如果是,请查看是否可以修改数据加载步骤以从一开始就拥有正确的数据类型。

关于python - Pandas:df.groupby() 对于大数据集来说太慢了。任何替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44704465/

相关文章:

python - 利用 Python Input() 对数据集执行 DateShift

linux - 根据组键对文本数据进行分组的命令行工具

python - matplotlib - 在 y 轴上为每组创建 x 轴上的条形图

Java 8 Stream API - 仅选择 Collectors.groupingBy(..) 之后的值

java - 如何使用集合在java中按对象分组?

python - Pillow :libopenjp2.so.7:无法打开共享对象文件:没有这样的文件或目录

Python3.7 venv 不创建虚拟环境目录

java - 只读取 XML 中的根元素

python - 与python列表: are they or are they not iterators?混淆

python - Pandas DataFrame 的组合与子类