做数据分析 90% 时间花在 pandas 上,但很多人写法很慢,还以为是数据量大。
几个常见的「快写法」:
1. 不用 apply,用向量化
# 慢 df['len'] = df.text.apply(len) # 快 df['len'] = df.text.str.len() |
2. 不用 iterrows,用 itertuples
# 慢
for i, row in df.iterrows():
...
# 快(itertuples 比 iterrows 快 5-10 倍)
for row in df.itertuples():
...
|
3. 用 category 类型
字符串列如果重复多(比如城市名),转成 category,内存直接省 80%:
df['city'] = df['city'].astype('category')
|
4. 读取 CSV 指定 dtype
pd.read_csv("data.csv", dtype={'id': str, 'phone': str})
|
5. 用 chunked 处理大文件
for chunk in pd.read_csv("big.csv", chunksize=10000):
process(chunk)
|
100 万行数据,写法不同,能从 30 秒跑到 3 秒。
本文由 BBZ · 小朵科技工作室 出品。