做数据分析 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 · 小朵科技工作室 出品。