关于表格太大了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用了一晚
相关推荐
飞翔的佩奇1 小时前
【完整源码+数据集+部署教程】表盘指针检测系统源码和数据集:改进yolo11-CA-HSFPN
python·yolo·计算机视觉·数据集·yolo11·表盘指针检测
larance1 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
python_chai1 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
搏博2 小时前
基于Python3.10.6与jieba库的中文分词模型接口在Windows Server 2022上的实现与部署教程
windows·python·自然语言处理·flask·中文分词
lxmyzzs3 小时前
pyqt5无法显示opencv绘制文本和掩码信息
python·qt·opencv
海绵不是宝宝8173 小时前
连接远程服务器上的 jupyter notebook,解放本地电脑
服务器·jupyter·github
萧鼎4 小时前
Python pyzmq 库详解:从入门到高性能分布式通信
开发语言·分布式·python
yujkss5 小时前
Python脚本每天爬取微博热搜-终版
开发语言·python
yzx9910135 小时前
小程序开发APP
开发语言·人工智能·python·yolo
飞翔的佩奇5 小时前
【完整源码+数据集+部署教程】二维码与查找模式检测系统源码和数据集:改进yolo11-CSwinTransformer
python·yolo·计算机视觉·数据集·yolo11·二维码与查找模式检测