一、pandas读取csv文件
1. 使用pandas包来读取csv文件
1.1. 导入pandas包
1.1.1. 登录后复制 import pandas as pd
1.2. 小数据量csv文件读取
1.2.1. 登录后复制 pd.read_csv(file,encoding='utf-8',sep='\t')
- 可通过参数encoding修改编码方式,默认值为'gbk'
- 可通过参数sep修改分隔符,默认值为','
1.2.2. pd.read_csv() 返回结果为DataFrame
1.3. 大数据量csv文件读取
1.3.1. 利用参数chunksize登录后复制 reader = pd.read_csv(file,chunksize=1000)
- 通过循环获取每个分片的数据
for df in reader:
print(df.head())
- 可根据需要自定义后续处理
1.3.2. 参数chunksize 默认为None,不分片处理;
- 如需对数据分片处理添加chunksize,参数值需为整型
- 结果为按指定的chunksize大小分片的TextFileReader,可通过循环获取每个分片的数据
1.4. 无表头csv文件读取
1.4.1. 登录后复制 pd.read_csv(file,header=None)
- 参数header 用于判定是否把数据中第一行作为列名读入,默认数据第一行只作为列名;
- 当待读取文件无表头时,可设置参数header=None;
- 想把其他行作为列名时,可设置参数header为行索引
1.4.2. 列名设置登录后复制 pd.read_csv(file,header=None,names=col)
- col为自定义列名,需为不包含重复元素的list
1.5. 跳过错误行
1.5.1. 登录后复制 pd.read_csv(file,warn_bad_lines=True)
- 当csv文件存在部分行格式或其他错误导致文件无法正常读取时,设置warn_bad_lines,可跳过错误行保证csv文件的读入,并抛出错误行行索引
1.6. 跳过csv文件部分行
1.6.1. 登录后复制 pd.read_csv(file,skiprows=5)
- 跳过文件开头行或指定行,使用参数skiprows
1.6.2. 登录后复制 pd.read_csv(file,skipfooter=5)
- 跳过文件结尾行
1.7. 当待读取的文件名中包含中文时,直接read可能报如下OSError
1.7.1. 可配合使用with open as 和read_csv 读取文件,避免OSError
- 登录后复制 with open(file,encoding='utf-8') as f:
- df = pd.read_csv(f,sep='\t')
二、pandas写出csv文件
2.1. csv文件写出
2.1.1. 登录后复制 pd.to_csv(output_file, sep=',', encoding='gbk')
- 可通过参数encoding修改编码方式,默认值为'gbk';
- 可通过参数sep修改分隔符,sep 默认值为','
2.2. 写出 无列名 csv文件
2.2.1. 登录后复制 pd.to_csv(output_file, header=None)
- header控制写出的csv文件是否包含列名,默认True 包含列名
2.3. 写出 无索引 csv文件
2.3.1. 登录后复制 pd.to_csv(output_file, index=False)
- index默认值为True,当设置False时,不写出索引
三、利用csv模块读取csv文件
3.1. 导入csv包
3.1.1. 登录后复制 import csv
3.2. csv文件读取
3.2.1. 登录后复制 with open(file, encoding='utf-8') as csvfile:
- creader = csv.reader(csvfile, delimiter='\t')
3.2.2. 返回一个reader对象,可通过循环获取对象中的每一行
- 登录后复制 for row in creader:
- print(row)
3.2.3. 后续可通过如下方式将reader对象转换为DataFrame
- 登录后复制 datas = []
- with open(file, encoding='utf-8') as csvfile:
- creader = csv.reader(csvfile, delimiter='\t')
- for row in creader: datas.append(row)
- df = pd.DataFrame(datas[1:],columns=datas[0])
四、利用csv模块写出csv文件
4.1. csv文件写出
4.1.1. 登录后复制 with open(output_file, 'w', encoding='utf-8', newline='') as csvfile:
- cwriter = csv.writer(csvfile, delimiter='\t')
- for row in datas: cwriter.writerow(row)
- 注意:在定义csvfile时,一定要加newline=’’,否则写出的数据为隔行写出" ,避免查重,要求意思一样
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删