Python 大数据处理:Pandas 性能优化技巧(百万级数据提速)
·
数据类型优化
将默认的object类型转换为更高效的类型,如category(分类数据)、int32/int64(整数)、float32/float64(浮点数)。例如时间列转换为datetime64:
df['date_column'] = pd.to_datetime(df['date_column'])
分类数据列转换:
df['category_column'] = df['category_column'].astype('category')
避免链式赋值
链式操作如df[df.x > 2]['y'] = 5会创建临时对象。改用loc一次性完成:
df.loc[df.x > 2, 'y'] = 5
使用高效读取方法
读取数据时指定数据类型和仅需的列:
dtypes = {'col1': 'int32', 'col2': 'category'}
usecols = ['col1', 'col2']
df = pd.read_csv('data.csv', dtype=dtypes, usecols=usecols)
批量操作替代循环
用apply或向量化操作替代for循环。例如计算平方:
# 低效
for i in range(len(df)):
df.iloc[i]['squared'] = df.iloc[i]['value'] ** 2
# 高效
df['squared'] = df['value'] ** 2
使用eval和query
对于复杂表达式,eval能减少中间变量:
df.eval('result = (col1 + col2) / col3', inplace=True)
过滤数据时:
df = df.query('col1 > 100 & col2 < 50')
内存分块处理
大数据集可分块读取处理:
chunksize = 100000
for chunk in pd.read_csv('large.csv', chunksize=chunksize):
process(chunk)
并行计算加速
利用swifter自动并行化apply操作:
import swifter
df['new_col'] = df['col'].swifter.apply(lambda x: x*2)
索引优化
对常用查询列设置索引:
df.set_index('date_column', inplace=True)
排序索引提升查询速度:
df.sort_index(inplace=True)
文件格式选择
保存数据时使用高效格式如parquet或feather:
df.to_parquet('data.parquet')
df.to_feather('data.feather')
适时释放内存
删除不再需要的列或中间结果:
del df['temp_column']
显式调用垃圾回收:
import gc
gc.collect()
更多推荐



所有评论(0)