Python 数据分析:Pandas 处理 CSV 数据的 5 个实用技巧
·
Python 数据分析:Pandas 处理 CSV 数据的 5 个实用技巧
技巧1:智能推断数据类型
问题:CSV 默认将所有数据读为字符串,导致内存浪费
解决:使用 infer_objects() 自动转换类型
df = pd.read_csv('data.csv').infer_objects()
print(df.dtypes) # 查看优化后的数据类型
技巧2:高效处理缺失值
场景:包含空值的数据列
方案:组合使用 isna() 和 fillna()
# 统计每列缺失值比例
missing_ratio = df.isna().mean()
print(f"缺失比例: {missing_ratio}")
# 对数值列用中位数填充
df['price'] = df['price'].fillna(df['price'].median())
技巧3:日期解析优化
痛点:日期格式混乱导致分析错误
方案:parse_dates 参数配合自定义格式
df = pd.read_csv(
'sales.csv',
parse_dates=['order_date'],
date_parser=lambda x: pd.to_datetime(x, format='%d/%m/%Y')
)
技巧4:分块处理大型文件
场景:内存不足时处理GB级CSV
方案:使用 chunksize 参数迭代读取
chunk_iter = pd.read_csv('big_data.csv', chunksize=50000)
for chunk in chunk_iter:
# 在每块数据上执行操作
chunk['discount'] = chunk['price'] * 0.9
chunk.to_csv('processed.csv', mode='a', header=False)
技巧5:列重命名与筛选
需求:快速调整列名并提取关键字段
方案:rename() + 条件过滤
# 批量重命名列
df = df.rename(columns={
'cust_id': 'customer_id',
'trans_dt': 'transaction_date'
})
# 筛选特定条件数据
high_value = df.query('revenue > 1000 & region == "East"')
应用示例
# 综合应用五个技巧
chunk_iter = pd.read_csv(
'sales_data.csv',
chunksize=20000,
parse_dates=['date'],
date_parser=lambda x: pd.to_datetime(x, errors='coerce')
)
for chunk in chunk_iter:
chunk = chunk.infer_objects()
chunk = chunk.rename(columns={'amt': 'amount'})
chunk['amount'] = chunk['amount'].fillna(chunk['amount'].median())
filtered = chunk.query('amount > 500 & date.dt.year == 2023')
filtered.to_csv('final_output.csv', mode='a', index=False)
提示:使用
pd.set_option('display.max_columns', None)可显示所有列,避免预览时重要数据被截断
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)