如何在新Jupyter Notebook中复用旧分析的DataFrame,无需重复编写代码
嗨,这个需求太常见了!做数据分析的时候总不想重复跑一遍冗长的预处理代码,给你分享几个我日常用的靠谱方法,按需选就行:
方法1:用Pickle序列化保存(轻量快速)
这是我最常用的方式,适合小到中等规模的DataFrame,操作简单速度快。
在旧Notebook里,把需要复用的DataFrame存成pickle文件:
import pickle # 假设你的目标DataFrame叫df_old with open('my_reused_df.pkl', 'wb') as f: pickle.dump(df_old, f)
然后在新Notebook里直接加载:
import pickle with open('my_reused_df.pkl', 'rb') as f: df_reused = pickle.load(f)
注意:Pickle是Python专属格式,没法跨语言读取,但胜在对Python对象的支持很完整,比如带索引、自定义类型的DataFrame都能完美保存。
方法2:用HDF5存储(适合大数据)
如果你的DataFrame特别大(比如几百万行以上),HDF5是更好的选择,它支持压缩,还能同时存储多个DataFrame。
旧Notebook里保存:
import pandas as pd # 保存单个DataFrame,mode='w'会覆盖现有文件 df_old.to_hdf('my_data_store.h5', key='df_old', mode='w') # 如果要存多个DataFrame,用追加模式mode='a' # df_another.to_hdf('my_data_store.h5', key='df_another', mode='a')
新Notebook里加载指定的DataFrame:
import pandas as pd df_reused = pd.read_hdf('my_data_store.h5', key='df_old')
方法3:用Jupyter魔法命令%store(同会话临时共享)
如果只是临时在同一个Jupyter会话里复用,不想存文件,可以用内置的%store魔法命令,直接在内存里共享对象:
在旧Notebook里执行:
%store df_old
切换到新Notebook,执行下面的代码就能加载:
%store -r df_old
注意:这个方法只在同一个Jupyter内核会话里有效,关闭内核后共享的对象就没了,适合临时快速复用的场景。
方法4:封装成Python模块(长期规范复用)
如果你的预处理逻辑需要长期复用,或者要和团队共享,把代码封装成模块是最规范的做法:
- 把旧Notebook里生成DataFrame的核心逻辑整理成函数,保存为
data_utils.py文件:
import pandas as pd def get_processed_dataframe(): # 这里复制你旧Notebook里生成df_old的代码 raw_df = pd.read_csv('raw_data.csv') # 数据清洗、转换等步骤... processed_df = raw_df.dropna().rename(columns={'old_name': 'new_name'}) return processed_df
- 在新Notebook里直接导入调用:
from data_utils import get_processed_dataframe df_reused = get_processed_dataframe()
这个方式的好处是代码可维护,后续修改预处理逻辑只需要改模块文件,所有用到的Notebook都会同步更新。
内容的提问来源于stack exchange,提问作者Joyce Lee
相关产品推荐
相关产品推荐

