关于表格太大了jupyter无法单次处理的问题

记录下自己的心路历程...耗时耗精力

我用的数据库单个表格就很大,一个表格有30多G,jupyter无法处理这么大的表格,会直接把电脑的进程全部结束掉,结束掉要是能运行成功倒也行啊,然鹅...给我报错说处理不了,罢工了...

有想过用pycharm来处理,试了下,也不行,文件太大了,处理不了,在网上搜怎么处理这种大文件,有这么几个解决办法:
1. Dask: Dask 是一个用于并行计算的灵活库,它提供了类似于 Pandas 的接口,但能够处理比内存更大的数据集。你可以使用 Dask DataFrame 来处理大型数据,它允许你进行分布式计算,将数据分块加载到内存中。

bash 复制代码
import dask.dataframe as dd
读取大型CSV文件
df = dd.read_csv('your_large_file.csv')
执行操作(例如,过滤、聚合)
result = df[df['column_name'] > 100].groupby('another_column').mean()
将结果写入文件
result.to_csv('output.csv', single_file=True)

2. 分块处理: 使用 Pandas 的 read_csv 方法时,可以使用 chunksize 参数,将数据集分割成小块进行处理,而不是一次性读入整个数据集。这可以减少内存压力。

bash 复制代码
chunk_size = 100000  # 适当调整块的大小
chunks = pd.read_csv('your_large_file.csv', chunksize=chunk_size)
for chunk in chunks:
    # 处理每个块的数据

3. 合理选择数据类型 : 确保使用适当的数据类型,以减少内存使用。例如,将整数列转换为 int32 或 int64,将浮点数列转换为 float32 或 float64。
4. 使用合适的硬件: 如果可能,考虑使用具有大量内存的计算机或云实例。处理大型数据集可能需要更大的内存。

1 2 的方法适用于表格文件行之间没有关联的,如果表格每行之间都是独立的,可以考虑1 2的方法;3的话会改变数据类型,在我的项目中不太适用这个方法,于是想找云服务器来处理,以下是云服务器的历程...

-- 本来想用谷歌云,听说怪好用的,但死在了第一步,visa银行卡没有

-- 于是转战国内的阿里云,说实话阿里云感觉有点坑,而且选择项太多了,之前没用过,对新手不友好

-- 想到了Kaggle,以前只知道是打比赛的,进去一看也有在线notebook,界面很简洁,新手友好型,还能上传自己的数据库,能传100G,不过单个文件也一次只能处理20G

最后,没法了就用postgresql先处理了一下表格,把不需要的列删除,很奇怪的是,在我删了五六列后其大小没变小反而增到了40G,搜了下,可能是postgre缓存了些数据,用这个语句可以删除缓存的内容:

sql 复制代码
--删除缓存
VACUUM ANALYZE 你的表格名;
--察看文件大小
SELECT pg_size_pretty(pg_total_relation_size('你的表格名'));

其实...这样之后我的表格还是没变小,我用上面那个语句查我的表格还是40G,但是!!!!!!!!我将其export后,它的大小是18G,差不多满足Kaggle处理文件的size,后来想了下原因,可能是它需要时间来放空间??

反正就这样了,把处理后的数据传到kaggle上就好了!总结:

  1. 如果不是很复杂的表格操作的话,建议用postgresql来处理表格,它没大小限制;
  2. 如果表格间数据没有强相关性,可以考虑分块、并行处理;
  3. 可以借助云服务器来编程,还不耗计算机内存,推荐Kaggle,只是它传数据库要好久...我传30G用了一晚
相关推荐
步行cgn2 分钟前
Spring 注入 Map 集合详解
数据库·python·spring
今儿敲了吗5 分钟前
03停用词过滤
笔记·python
李可以量化1 小时前
Tornado 部署公域网络安全与防护(上)
python
风跟我说过她1 小时前
SQL 一键转经典 Chen 风格 ER 图:开源 CLI + 在线工具 + Agent Skill
数据库·python·sql·开源·开源软件
Ulyanov1 小时前
AudioVision Pro:基于 PySide6 + sounddevice 的实时音频可视化播放器设计
python·算法·音视频
ID34610744201 小时前
【课程设计】基于Spring Boot+Vue的校园共享无人机服务系统设计与实现-计算机毕设 附源码44219
javascript·vue.js·spring boot·python·node.js·php·课程设计
星空1 小时前
pycharm复习
ide·python·pycharm
Maiko Star1 小时前
Python 包与项目管理工具——uv
python·uv
weixin199701080162 小时前
[特殊字符]《京东POP二手品类对接:B2C订单模型 vs 二手C2C属性的字段转换难题》(附Python源码)
前端·python·算法
承渊政道2 小时前
Python IDLE鸿蒙PC适配全记录:从Tkinter桌面程序到ArkUI原生开发闭环
开发语言·python·harmonyos·鸿蒙系统·桌面程序