Python学习(4) ----- Python的CSV文件处理
在 Python 中,读取 CSV 文件最常用的方式是使用标准库中的 csv
模块。下面是详细说明和使用示例:
✅ 一、准备一个 CSV 文件示例(假设文件名为 data.csv
)
name,age,city
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
📘 二、读取 CSV 文件的基本方法
方式一:使用 csv.reader
(按行读取为列表)
import csvwith open('data.csv', mode='r', encoding='utf-8') as file:reader = csv.reader(file)for row in reader:print(row)
🟢 输出:
['name', 'age', 'city']
['Alice', '30', 'New York']
['Bob', '25', 'Los Angeles']
['Charlie', '35', 'Chicago']
方式二:使用 csv.DictReader
(每行转为字典)
import csvwith open('data.csv', mode='r', encoding='utf-8') as file:reader = csv.DictReader(file)for row in reader:print(row)
🟢 输出:
{'name': 'Alice', 'age': '30', 'city': 'New York'}
{'name': 'Bob', 'age': '25', 'city': 'Los Angeles'}
{'name': 'Charlie', 'age': '35', 'city': 'Chicago'}
🧠 三、其他说明
with open(...)
是上下文管理器,自动关闭文件。- 默认按逗号分隔,如需自定义可用
delimiter=';'
。 csv.reader
读取的是列表,而csv.DictReader
会使用首行为键自动转字典。
🔄 四、常见操作进阶
读取到一个列表中:
rows = []
with open('data.csv', mode='r', encoding='utf-8') as f:reader = csv.DictReader(f)rows = list(reader)print(rows)
✅ 五、推荐:用 pandas 读取 CSV(更强大)
import pandas as pddf = pd.read_csv('data.csv')
print(df)
输出是一个表格样式的 DataFrame。
pandas
是 Python 中一个功能强大的数据分析和处理库,常用于 表格数据(类似 Excel、CSV) 的读取、处理、分析和导出。
🧱 一、安装 pandas(如果你还没有安装)
pip install pandas
✅ 二、pandas 的基本使用示例
1. 导入库
import pandas as pd
2. 读取 CSV 文件
df = pd.read_csv('data.csv') # 自动解析表头
print(df)
假设 data.csv
内容为:
name,age,city
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
输出:
name age city
0 Alice 30 New York
1 Bob 25 Los Angeles
2 Charlie 35 Chicago
📘 三、常见操作(初学者必学)
✅ 访问列
print(df['name']) # 获取 name 列
print(df[['name', 'age']]) # 多列
✅ 访问行
print(df.iloc[0]) # 按位置取第1行
print(df.loc[1]) # 按索引取第2行
✅ 筛选数据
print(df[df['age'] > 30]) # 筛选 age > 30 的行
✅ 添加新列
df['new_col'] = df['age'] + 10
✅ 删除列
df.drop('new_col', axis=1, inplace=True)
🔁 四、写回 CSV
df.to_csv('output.csv', index=False) # index=False 不保存行号
📊 五、统计分析
print(df.describe()) # 数值列的统计信息
print(df['age'].mean()) # 平均年龄
📌 六、快速复习图
功能 | 示例 |
---|---|
读文件 | pd.read_csv("file.csv") |
写文件 | df.to_csv("out.csv") |
筛选 | df[df["age"] > 30] |
添加列 | df["x"] = df["y"] + 1 |
删除列 | df.drop("col", axis=1) |
行访问 | df.loc[0] 或 df.iloc[0] |
统计 | df.describe() |