gpt4 book ai didi

python - Pandas pivot_table 的更快替代品

转载 作者:行者123 更新时间:2023-12-04 13:01:39 24 4
gpt4 key购买 nike

我正在使用 Pandas pivot_table在大型数据集(1000 万行,6 列)上运行。由于执行时间是最重要的,我尝试加快进程。目前处理整个数据集需要大约 8 秒,这很慢,我希望找到提高速度/性能的替代方法。

我目前的 Pandas 数据透视表:

df_pivot = df_original.pivot_table(index="industry", columns = "months",
values = ["orders", "client_name"],
aggfunc ={"orders": np.sum, "client_name": pd.Series.nunique})
df_original包括所有数据(10m 行,从 csv 导入)。 Industry是客户的行业,months是订单月份(Jan-Dec),orders是订单数量。所有数据转换为 categorical数据,订单数除外( int 数据类型)。最初industry、months 和client_name 是字符串。

我尝试使用 pandas.DataFrame.unstack - 这甚至更慢。我也尝试了 Dask . dask pivot_table产生了一些改进(6 秒执行时间 - 所以少了 2 秒)。但是,它仍然很慢。
有没有更快的替代方案(对于大型数据集)?也许用 groupy 重新创建数据透视表, crosstab , ... 不幸的是,我根本没有找到工作的替代方案,而且我对 Python 和 Pandas 仍然很陌生......
期待您的建议。提前致谢!

更新:

我通过以下方式找出了分组方式:
df_new = df_original.groupby(["months", "industry"]).agg({"orders": np.sum, "client_name": pd.Series.nunique}).unstack(level="months").fillna(0)

这现在快得多,大约需要 2-3 秒。还有一些选择可以进一步提高速度吗?

最佳答案

将月份和行业列转换为分类列:
https://pandas.pydata.org/pandas-docs/stable/user_guide/categorical.html
这样可以避免大量的字符串比较。

关于python - Pandas pivot_table 的更快替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55404617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com