一、CSV是什么?
CSV就像是一个电子表格,数据排成行和列,用逗号分隔。
想象它是一个非常整洁的表格,每一行是一条记录,每一列是一种信息。
二、CSV库的基本功能
1. 读取CSV文件
2. 写入CSV文件
3. 处理不同格式的数据
三、实战教学
1. 读取CSV文件
import csv
# 最简单的读取方式
with open('students.csv', 'r') as file:
# 创建读取器
reader = csv.reader(file)
# 逐行读取
for row in reader:
print(row) # 每一行是一个列表
2. 写入CSV文件
import csv
# 准备数据
students = [
['小明', 18, '男'],
['小红', 17, '女']
]
# 写入文件
with open('new_students.csv', 'w', newline='') as file:
writer = csv.writer(file)
# 写入标题行
writer.writerow(['姓名', '年龄', '性别'])
# 写入数据
writer.writerows(students)
3. 字典方式读写(更高级)
import csv
# 字典方式读取
with open('students.csv', 'r') as file:
reader = csv.DictReader(file)
for row in reader:
print(row['姓名'], row['年龄'])
# 字典方式写入
data = [
{'姓名': '小明', '年龄': 18, '班级': '高一'},
{'姓名': '小红', '年龄': 17, '班级': '高二'}
]
with open('students_dict.csv', 'w', newline='') as file:
# 定义字段名
fieldnames = ['姓名', '年龄', '班级']
writer = csv.DictWriter(file, fieldnames=fieldnames)
# 写入标题
writer.writeheader()
# 写入数据
writer.writerows(data)
四、常见场景示例
1. 成绩统计
import csv
def calculate_average_score(filename):
total_score = 0
student_count = 0
with open(filename, 'r') as file:
reader = csv.DictReader(file)
for row in reader:
total_score += float(row['成绩'])
student_count += 1
return total_score / student_count if student_count > 0 else 0
# 使用示例
avg_score = calculate_average_score('scores.csv')
print(f"平均分:{avg_score}")
2. 数据筛选
import csv
def filter_high_performers(filename, min_score=80):
high_performers = []
with open(filename, 'r') as file:
reader = csv.DictReader(file)
for row in reader:
if float(row['成绩']) >= min_score:
high_performers.append(row)
return high_performers
# 使用示例
top_students = filter_high_performers('scores.csv')
for student in top_students:
print(f"优秀学生:{student['姓名']}")
五、注意事项
1. 使用 `newline=''` 避免额外空行
2. 注意文件编码(尤其是中文)
3. 处理可能的类型转换
4. 异常处理很重要
六、实践建议
入门练习:
1. 创建一个学生信息CSV文件
2. 读取并打印所有学生信息
3. 计算平均年龄
4. 筛选特定条件的学生
进阶挑战:
1. 处理复杂的CSV文件
2. 数据清洗和转换
3. 与其他数据分析库结合
温馨提示:
- 耐心学习
- 多实践
- 不怕犯错
- 享受编程的乐趣!
学习路线图:
基础 → 读写 → 处理 → 分析 → 可视化
相信你一定可以成为数据处理高手!