请问有 1000W+行的数据(excel 表格),如何合并处理?

2024-01-19 10:55:03 +08:00
Lynnnn  Lynnnn

请教下 V 友,我请 IT 后台帮忙拉出大概 1300W 行左右的数据,分了 20 几个 excel 表给给我,1 个文件约 60-70W 行。 需求是想从这些数据里面提取需要是数据,然后做一些透视汇总什么的。

之前想的处理逻辑是:(1)先 pandas 合并所有表格(2)数据处理后导出。

碰到的问题是:pandas 处理不了这么大量是数据,多个文件合并卡死了。经过网上搜索一翻,装了 modin ,目前试验下来 3,4 个文件一合并不会报错,但是再多了也不行。

想请问 V 友还有没有更合适的工具?最好也是支持 pandas 语法的。

——————

P.S.我没有连后台数据库的权限(给了也不会,不懂数据库),也不方便请 IT 做预处理再导给我。 是不是只能考虑单个文件处理,然后再逐一合并结果了?但是有一些处理逻辑是需要几张汇总起来后才能写判断的。

3497 次点击
所在节点   Python  Python
35 条回复
sunmker
sunmker
2024-01-19 14:26:08 +08:00
让 it 导出 csv 的数据,1300w 行,再用 pandas 导入处理
Battle
Battle
2024-01-19 14:46:41 +08:00
grep sed awk
ohayoo
ohayoo
2024-01-19 14:46:44 +08:00
pandas 处理应该是没问题的,我曾经甚至用 pandas 处理过 nginx 日志分析,日志以亿条为单位都没问题,用 chunksize ,分段读取,避免内存吃不消
deweixu
deweixu
2024-01-19 15:16:24 +08:00
导出 csv ,cat awk sed grep ,,,哈哈哈哈哈
ntedshen
ntedshen
2024-01-19 15:30:01 +08:00
xlsx 这玩意感觉三方读取普遍有问题,数值还行主要是那个 sharedStrings.xml 的字典,之前用 java 导出一份两百多万行的用户数据的时候用了 70g 内存。。。
要么转 csv 或者 json 处理要么给个巨大内存的机器让他自己龟爬。。。
djangovcps
djangovcps
2024-01-19 15:30:37 +08:00
报什么错? OOM 内存溢出? 自己写分块处理逻辑吧,不行就存 mysql 里;
iv8d
iv8d
2024-01-19 16:11:22 +08:00
导入数据库,处理完了再导出为 excel
ktyang
ktyang
2024-01-19 16:13:16 +08:00
换个格式。。。
Lynnnn
Lynnnn
2024-01-19 18:35:27 +08:00
谢谢各位回复,源数据我先转成 csv ,准备先试试下面 3 种方案:
(1)导入数据库 mysql/sqlite
(2)换 polars
(3)换 PySpark
(4)控制内存

合并成 1 个文件只在 python 数据处理过程中,会要在 jupyter 里面预览一下效果,不导出。等全部处理完导出的只是一个比较小的文件。

应该是上面几楼说的内存的问题,普通办公人员电脑配置不太行,但用 PowerBI 更卡...
不过数据库和内存控制都没搞过,我先研究一下再反馈。

再次谢谢!
akira
akira
2024-01-19 20:09:03 +08:00
excel 不支持 1000W 行的数据。别往这个方向浪费精力。 直接代码处理吧
troywinter
troywinter
2024-01-19 23:50:36 +08:00
z1829909
z1829909
2024-01-20 03:43:19 +08:00
把 excel 都读取一遍, 写入到自己电脑搭建的数据库, 然后直接 sql 处理. 如果不会的话可以学学, 成本不算太高
aec4d
aec4d
2024-01-20 09:35:17 +08:00
duckdb or clickhouse
i690531336
i690531336
362 天前
放数据库操作就比较方便
vincentqiao
vincentqiao
298 天前
最近也碰到这个问题,发现不管是 pandas 还是 polars ,读取大型.xlsx 文件都很吃力。
最好的解决办法还是 csv 。pandas 或者 polars 都很快

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1009926

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX