python csv 基础

本文介绍Python中使用csv库处理CSV文件的基本方法,包括如何加载csv库、读取CSV文件及数据,通过示例展示了如何利用next()函数和for循环进行数据读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python 也有处理csv文件的库。

加载:

import csv

加载文件和读取数据

>>> reader = csv.reader(open('./example.csv', 'r'))
>>> header = next(reader)
>>> for i, line in enumerate(reader):
>>>    print line

['id', 'class']
['1111', '1']
['1112', '2']
['1113', '3']

可以通过 next() 或 for 循环来读取数据。reader是一个迭代器。

可以看出,在读取数据时,每一次迭代得到的结果是一个 list,并包含 csv 表中的每行中的每一项,且为 str 类型。

<think>好的,用户之前问过如何使用Python删除CSV文件的第三行到最后一行,现在他输入了“pythoncsv”,可能想进一步了解Python处理CSV的相关知识。需要先分析他的具体需求。 首先,“pythoncsv”可能是用户打字时的笔误,或者想了解PythonCSV的结合使用。考虑到用户之前的问题是关于删除CSV行的,他可能对更广泛的CSV操作感兴趣。需要覆盖读取、写入、数据处理以及常用库的介绍。 接下来,用户可能需要的不仅是基础操作,还包括如何处理复杂情况,比如带引号的字段、不同的分隔符,或者大数据量的处理。此外,用户可能对使用第三方库如pandas感兴趣,因为它在数据处理中很常用。 需要结构化回答,分模块介绍,比如基础操作、进阶处理、常用库比较、实战案例和注意事项。这样用户可以根据需要跳转到相关部分。同时,要强调csv模块和pandas的优缺点,帮助用户选择合适的方法。 注意用户之前的问题中提到了保留前两行,可能在处理数据时遇到需要跳过表头或保留特定行的情况,可以在实战案例中加入这些例子。另外,注意事项部分需要包含编码问题、大文件处理和异常处理,这些是实际应用中常见的问题。 最后,确保回答清晰易懂,代码示例准确,并且突出推荐使用csv模块和pandas,因为它们更健壮,特别是处理复杂CSV时。同时提醒用户注意文件备份,避免数据丢失。</think>以下是Python处理CSV文件的完整指南,涵盖核心操作和最佳实践: --- ### **一、基础操作体系** #### 1. 读取CSV ```python import csv with open('data.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f) header = next(reader) # 读取表头 for row in reader: print(row[0], row[2]) # 访问指定列 ``` #### 2. 写入CSV ```python import csv data = [ ['姓名', '年龄', '城市'], ['张三', 25, '北京'], ['李四', 30, '上海'] ] with open('output.csv', 'w', encoding='utf-8', newline='') as f: writer = csv.writer(f) writer.writerows(data) # 批量写入 ``` --- ### **二、进阶处理技巧** #### 1. 字典模式读写 ```python # 读取时转为字典 with open('data.csv', 'r') as f: dict_reader = csv.DictReader(f) for row in dict_reader: print(row['城市'], row['年龄']) # 字典写入 with open('output.csv', 'w') as f: fieldnames = ['姓名', '年龄'] dict_writer = csv.DictWriter(f, fieldnames=fieldnames) dict_writer.writeheader() dict_writer.writerow({'姓名': '王五', '年龄': 28}) ``` #### 2. 特殊格式处理 ```python # 处理含逗号的字段 csv.reader(f, quoting=csv.QUOTE_MINIMAL) # 自定义分隔符(TSV文件) csv.writer(f, delimiter='\t') # 处理不同换行符 csv.reader(f, lineterminator='\r\n') ``` --- ### **三、常用库对比** | 工具库 | 特点 | 适用场景 | |---------------|-----------------------------|---------------------| | 标准csv模块 | 无需安装、内存友好 | 简单读写、格式控制 | | pandas | 支持数据清洗、高性能 | 复杂分析、大数据处理 | | NumPy | 数值计算优化 | 科学计算场景 | | Dask | 并行处理 | 超大型CSV文件 | --- ### **四、实战场景案例** #### 1. 数据过滤 ```python import csv with open('input.csv', 'r') as infile, open('output.csv', 'w') as outfile: reader = csv.reader(infile) writer = csv.writer(outfile) writer.writerow(next(reader)) # 保留表头 for row in reader: if int(row[1]) > 25: # 筛选年龄>25的记录 writer.writerow(row) ``` #### 2. 多文件合并 ```python import glob import pandas as pd all_files = glob.glob("data/*.csv") combined = pd.concat((pd.read_csv(f) for f in all_files)) combined.to_csv("merged.csv", index=False) ``` --- ### **五、性能优化策略** 1. **分块处理**(适合内存不足) ```python chunk_size = 10_000 for chunk in pd.read_csv('big.csv', chunksize=chunk_size): process(chunk) ``` 2. **数据类型优化** ```python dtypes = {'age': 'int8', 'price': 'float32'} pd.read_csv('data.csv', dtype=dtypes) ``` 3. **选择性加载** ```python pd.read_csv('data.csv', usecols=['name', 'email']) ``` --- ### **注意事项**⚠️ 1. **编码陷阱** 优先使用`utf-8-sig`处理带BOM的文件 2. **路径处理** 推荐使用`pathlib`模块: ```python from pathlib import Path csv_path = Path('data') / '2023.csv' ``` 3. **异常处理** ```python try: pd.read_csv('data.csv') except pd.errors.EmptyDataError: print("检测到空文件!") ``` --- ### **扩展工具推荐** - **CSV校验**:使用`csvvalidator`检查数据完整性 - **可视化**:配合`matplotlib`快速生成数据分布图 - **自动化**:使用`watchdog`监控文件夹自动处理新CSV 建议优先使用`pandas`进行复杂操作,其`read_csv`参数支持: - 跳过指定行:`skiprows=[1,3]` - 处理缺失值:`na_values=['N/A', 'NULL']` - 日期解析:`parse_dates=['order_date']` 掌握这些技能可应对90%以上的CSV处理需求,完整示例代码可参考Python官方文档csv模块章节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值