在数据处理和分析的工作中,CSV(Comma-Separated Values,逗号分隔值)文件是一种非常常见的数据存储格式。
它结构简单、易于阅读,并且被广泛应用于 Excel、数据库、数据分析工具等场景之间的数据传输。
Python 作为一门强大的编程语言,提供了多种便捷的方式来读写 CSV 文件,本次课程将详细介绍两种常用的方法:使用 Python 内置的csv模块和第三方库pandas,帮助大家轻松掌握 CSV 文件的操作技巧。
,
)分隔字段示例:
Name,Age,City
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
Python 提供了两种主流方式:
方法 | 特点 | 适用场景 |
---|---|---|
csv 标准库 | 内置,无需安装 | 小文件、简单读写 |
pandas 库 | 功能强大,支持数据分析 | 大文件、复杂数据处理 |
csv
模块读写import csv
# 读取 CSV 文件
with open('input.csv', mode='r', newline='', encoding='utf-8') as infile:
reader = csv.reader(infile)
for row in reader:
print(row) # 每行是一个列表
注意事项:
newline=''
避免多余空行encoding='utf-8-sig'
可避免 Excel 打开时中文乱码import csv
data = [
['Name', 'Age', 'City'],
['Alice', 30, 'New York'],
['Bob', 25, 'Los Angeles']
]
with open('output.csv', mode='w', newline='', encoding='utf-8-sig') as outfile:
writer = csv.writer(outfile)
writer.writerows(data) # 一次写入多行
import csv
# 写入
with open('people.csv', mode='w', newline='', encoding='utf-8-sig') as f:
fieldnames = ['Name', 'Age', 'City']
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'Name': 'Alice', 'Age': 30, 'City': 'New York'})
writer.writerow({'Name': 'Bob', 'Age': 25, 'City': 'Los Angeles'})
# 读取
with open('people.csv', mode='r', encoding='utf-8-sig') as f:
reader = csv.DictReader(f)
for row in reader:
print(row['Name'], row['City'])
pandas
读写(推荐数据分析场景)import pandas as pd
# 读取
df = pd.read_csv('input.csv', encoding='utf-8')
print(df.head())
# 写入
df.to_csv('output.csv', index=False, encoding='utf-8-sig')
优势:
utf-8-sig
编码写入,Excel 打开正常newline=''
pandas.read_csv()
加 chunksize
分块读取quotechar='"'
包裹字段import pandas as pd
import glob
# 获取所有 CSV 文件路径
files = glob.glob('data/*.csv')
# 读取并合并
df_list = [pd.read_csv(file) for file in files]
merged_df = pd.concat(df_list, ignore_index=True)
# 保存
merged_df.to_csv('merged.csv', index=False, encoding='utf-8-sig')
print("合并完成!")
csv
标准库足够pandas
更高效原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。