尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

HoRain云--Pandas 性能优化实战:10 个技巧让数据分析快 10 倍

HoRain云--Pandas 性能优化实战:10 个技巧让数据分析快 10 倍 1. 使用合适的数据类型默认 int64、float64 占用大量内存。转换python复制下载df[age] df[age].astype(int8) df[category] df[category].astype(category)内存可下降 50% 以上。2. 避免 iterrowsiterrows极慢。优先向量化python复制下载# 慢 for i, row in df.iterrows(): df.at[i, total] row[price] * row[qty] # 快 df[total] df[price] * df[qty]3. 使用 query 和 evalpython复制下载df.query(age 30 and city Beijing) df.eval(total price * qty, inplaceTrue)底层使用 numexpr速度快、内存低。4. 分块读取大文件python复制下载chunks pd.read_csv(big.csv, chunksize100_000) for chunk in chunks: process(chunk)5. 只读取需要的列python复制下载pd.read_csv(data.csv, usecols[id, name, price])6. 使用 category 类型对于重复率高的字符串列category 可大幅节省内存并加速 groupby。7. 避免链式赋值python复制下载# 不推荐 df[df[age] 30][score] 100 # 推荐 df.loc[df[age] 30, score] 1008. 使用 groupby 聚合优化python复制下载df.groupby(city, observedTrue)[sales].sum()observedTrue对 category 列很重要。9. 并行处理使用pandarallel或swifterpython复制下载from pandarallel import pandarallel pandarallel.initialize() df.parallel_apply(func, axis1)10. 考虑 PolarsPolars 基于 Rust支持多线程和惰性执行python复制下载import polars as pl df pl.read_csv(big.csv) result df.filter(pl.col(age) 30).group_by(city).agg(pl.col(sales).sum())在百万行以上数据中Polars 往往比 Pandas 快数倍。11. 实战案例某电商订单数据 500 万行原始 Pandas 处理耗时 120 秒。优化后数据类型转换内存从 2.1GB 降到 800MB。向量化替换 iterrows耗时从 80 秒降到 3 秒。分块读取 category整体降到 15 秒。
返回列表