如何存储修改后的DataFrame以避免重复导入原始Excel文件?
存储处理后的DataFrame以避免重复导入原始Excel文件
处理完DataFrame后,你可以用以下几种方式把它持久化存储,后续直接读取就能用,不用再重复处理原始Excel:
1. 使用Pickle(Python原生序列化)
这是最简单的方式,直接把DataFrame序列化成二进制文件:
import pandas as pd # 存储处理好的DataFrame df.to_pickle('processed_data.pkl') # 后续脚本直接读取 df = pd.read_pickle('processed_data.pkl')
- 优点:无需额外安装依赖,Python原生支持,能保留DataFrame的所有结构和数据类型(包括自定义对象)
- 缺点:文件体积相对较大,只能在Python环境下读取,跨语言兼容性差
2. 使用Feather格式
Feather是专门为DataFrame设计的轻量级格式,读写速度极快,文件体积小:
import pandas as pd # 存储(需要先安装pyarrow或fastparquet:pip install pyarrow) df.to_feather('processed_data.feather') # 读取 df = pd.read_feather('processed_data.feather')
- 优点:读写速度远超Pickle和CSV,文件紧凑,支持Python和R跨语言读取,完美保留数据类型
- 缺点:需要额外安装依赖库
3. 使用Parquet格式
Parquet是列式存储格式,压缩率极高,适合大数据场景:
import pandas as pd # 存储(同样需要pyarrow或fastparquet) df.to_parquet('processed_data.parquet') # 读取 df = pd.read_parquet('processed_data.parquet')
- 优点:压缩率最高,适合大型数据集,跨语言支持广泛(Python、R、Java等都能读),保留数据类型
- 缺点:依赖第三方库,小数据集的读写速度略逊于Feather
不推荐:CSV格式
虽然CSV通用,但会丢失DataFrame的元数据(比如日期类型、类别类型),而且读写速度慢、文件体积大,除非有必须用CSV的场景,否则不建议用:
# 不推荐的示例 df.to_csv('processed_data.csv', index=False) df = pd.read_csv('processed_data.csv') # 注意:读取后需要手动恢复数据类型,比如日期列要重新解析
选择建议
- 仅在Python环境使用,追求简单:选Pickle
- 需要跨语言或追求极致读写速度:选Feather
- 处理大型数据集,看重压缩率:选Parquet
内容的提问来源于stack exchange,提问作者nekovolta
相关产品推荐
相关产品推荐

