本篇文章主要介绍Python对csv文件的常用操作
读取 CSV 文件
使用 csv 模块
1
2
3
4
5
6
|
import csv
with open('data.csv', mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row) # 每行是一个列表 ٩(◕‿◕。)۶
|
用 pandas 读取 (最常用!)
1
2
3
4
|
import pandas as pd
df = pd.read_csv('data.csv')
print(df.head()) # 显示前5行数据 ฅ^•ﻌ•^ฅ
|
写入 CSV 文件
基础写入
1
2
3
4
5
6
7
|
import csv
data = [['Name', 'Age'], ['Alice', 25], ['Bob', 30]]
with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(data) # 写入多行数据 (•̀ᴗ•́)و
|
pandas 写入
1
|
df.to_csv('output.csv', index=False) # index=False 避免写入索引列 (ง •̀_•́)ง
|
数据处理技巧
筛选数据
1
2
3
4
5
|
# 选择特定列
ages = df['Age']
# 条件筛选
young_people = df[df['Age'] < 30] # 筛选年龄小于30岁的人 ╰(*°▽°*)╯
|
添加/删除列
1
2
3
4
5
|
# 添加列
df['Senior'] = df['Age'] > 60
# 删除列
df = df.drop(columns=['Unnecessary']) # 拜拜不需要的列 (╯‵□′)╯︵┻━┻
|
处理缺失值
1
2
3
4
5
|
# 删除包含缺失值的行
df = df.dropna()
# 填充缺失值
df = df.fillna(0) # 用0填充 ✨
|
高级操作
合并 CSV 文件
1
2
3
4
5
6
7
8
|
df1 = pd.read_csv('data1.csv')
df2 = pd.read_csv('data2.csv')
# 垂直合并 (行数增加)
merged = pd.concat([df1, df2])
# 水平合并 (列数增加)
merged = pd.merge(df1, df2, on='ID') # 根据ID列合并 (ノ◕ヮ◕)ノ*:・゚✧
|
分组统计
1
2
|
# 按城市分组计算平均年龄
city_stats = df.groupby('City')['Age'].mean() # 统计学的快乐 ┬─┬ ノ( ゜-゜ノ)
|
处理日期
1
2
|
df['Date'] = pd.to_datetime(df['Date'])
df['Year'] = df['Date'].dt.year # 提取年份部分 ٩(。•ω•。)و
|
小贴士 💡
-
大文件处理:使用 chunksize
参数分块读取
1
2
|
for chunk in pd.read_csv('big_file.csv', chunksize=1000):
process(chunk) # 每次处理1000行
|
-
编码问题:如果遇到编码错误,试试 encoding='latin1'
或 encoding='utf-8-sig'
-
性能优化:dtype
参数指定列数据类型可以节省内存
希望这篇指南能帮助你轻松处理 CSV 数据!🎉 遇到问题时记得查阅文档哦~ (ノ◕ヮ◕)ノ*:・゚✧