# 7. Python 文件与数据处理
## CSV 与 Excel 文件处理
在数据分析和处理中,CSV 和 Excel 文件是最常见的文件格式之一。Python 提供了多种库来高效地处理这些文件格式。本节将介绍如何使用 Python 读取、写入和操作 CSV 和 Excel 文件。
### 1. CSV 文件处理
CSV(Comma-Separated Values)文件是一种以纯文本形式存储表格数据的文件格式。Python 内置的 `csv` 模块可以方便地处理 CSV 文件。
#### 1.1 读取 CSV 文件
使用 `csv.reader` 可以逐行读取 CSV 文件中的数据:
```python
import csv
with open('data.csv', mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)
1.2 写入 CSV 文件
使用 csv.writer 可以将数据写入 CSV 文件:
import csv
data = [
['Name', 'Age', 'City'],
['Alice', '30', 'New York'],
['Bob', '25', 'Los Angeles']
]
with open('output.csv', mode='w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)
1.3 使用 DictReader 和 DictWriter
csv.DictReader 和 csv.DictWriter 可以将 CSV 文件中的每一行作为字典处理,方便按列名访问数据:
import csv
# 读取 CSV 文件
with open('data.csv', mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row['Name'], row['Age'])
# 写入 CSV 文件
data = [
{'Name': 'Alice', 'Age': '30', 'City': 'New York'},
{'Name': 'Bob', 'Age': '25', 'City': 'Los Angeles'}
]
with open('output.csv', mode='w', encoding='utf-8', newline='') as file:
fieldnames = ['Name', 'Age', 'City']
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(data)
2. Excel 文件处理
Excel 文件通常以 .xlsx 或 .xls 格式存储。Python 的 openpyxl 和 pandas 库是处理 Excel 文件的常用工具。
2.1 使用 openpyxl 处理 Excel 文件
openpyxl 是一个专门用于读写 Excel 文件的库。
2.1.1 读取 Excel 文件
from openpyxl import load_workbook
# 加载 Excel 文件
workbook = load_workbook('data.xlsx')
sheet = workbook.active
# 读取单元格数据
for row in sheet.iter_rows(values_only=True):
print(row)
2.1.2 写入 Excel 文件
from openpyxl import Workbook
# 创建新的 Excel 文件
workbook = Workbook()
sheet = workbook.active
# 写入数据
sheet['A1'] = 'Name'
sheet['B1'] = 'Age'
sheet['A2'] = 'Alice'
sheet['B2'] = '30'
# 保存文件
workbook.save('output.xlsx')
2.2 使用 pandas 处理 Excel 文件
pandas 是一个强大的数据分析库,支持直接读取和写入 Excel 文件。
2.2.1 读取 Excel 文件
import pandas as pd
# 读取 Excel 文件
df = pd.read_excel('data.xlsx')
print(df)
2.2.2 写入 Excel 文件
import pandas as pd
# 创建 DataFrame
data = {
'Name': ['Alice', 'Bob'],
'Age': [30, 25],
'City': ['New York', 'Los Angeles']
}
df = pd.DataFrame(data)
# 写入 Excel 文件
df.to_excel('output.xlsx', index=False)
3. 处理大型 CSV 和 Excel 文件
对于大型文件,直接读取可能会导致内存不足。可以使用以下方法优化处理:
- 分块读取:
pandas支持分块读取 CSV 和 Excel 文件。 - 流式处理:逐行读取文件并处理,避免一次性加载整个文件。
3.1 分块读取 CSV 文件
import pandas as pd
chunk_size = 10000
for chunk in pd.read_csv('large_data.csv', chunksize=chunk_size):
process(chunk) # 处理每个分块
3.2 流式读取 Excel 文件
from openpyxl import load_workbook
workbook = load_workbook('large_data.xlsx', read_only=True)
sheet = workbook.active
for row in sheet.iter_rows(values_only=True):
process(row) # 逐行处理
4. 总结
- CSV 文件适合存储简单的表格数据,Python 的
csv模块提供了高效的读写功能。 - Excel 文件适合存储复杂的表格数据,
openpyxl和pandas是处理 Excel 文件的常用工具。 - 对于大型文件,分块读取和流式处理是优化内存使用的有效方法。
通过掌握这些工具和技巧,您可以轻松处理各种 CSV 和 Excel 文件,为数据分析和处理打下坚实的基础。
