python处理csv文档的两种方法(csv,pandas)
python处理csv一般采用两种方法一种是import pandas 另一种是 import csv
本文将介绍这两种方法对csv进行读,写,追加的操作
1.import pandas
读
import pandas as pd
df = pd.read_csv(path, header=0)
header=0是第一行为标题,若header=1是第二行为标题,第一行的数据就忽略
写
数据转换成DataFrame格式后保存
index:是否要索引,是否显示行名,default=True
如含有中文则添加 encoding=“utf_8_sig”,否则会乱码
df.to_csv(‘abc.csv’,encoding=“utf_8_sig”,index=None)
import pandas as pd
a = [1,2,3]
b = [4,5,6]
data = pd.DataFrame({'a':a,'b':b})
df=pd.DataFrame(data)
df.to_csv('abc.csv',index=None)
追加
mode=a 此为追加模式,可看下表
import pandas as pd
a = [1,2,3]
b = [4,5,6]
data = pd.DataFrame({'a':a,'b':b})
df=pd.DataFrame(data)
df.to_csv('abc.csv',index=None,mode='a')
2.import csv
打开方式 | 功能 | Note |
---|---|---|
w | 写 | 若存在内容,原内容会先清空,不存在文件则会新建 |
w+ | 写读(先写后读) | 若存在内容,原内容会先清空,不存在文件则会新建 |
r | 读 | 文件必须存在 |
r+ | 读写(先读后写) | 文件必须存在 |
a | 追加 | 如存在数据,新数据将添加到结尾,不存在文件则会新建 |
a+ | 追加 | 如存在数据,新数据将添加到结尾,不存在文件则会新建 |
wb+ | 二进制方式写读(先写后读) | 若存在内容,原内容会先清空,不存在文件则会新建 |
rb+ | 二进制方式读写(先读后写) | 文件必须存在 |
ab+ | 二进制方式追加 | 如存在数据,新数据将添加到结尾,不存在文件则会新建 |
不加newline就会有多余的空行,所以记得添加newline!
读
import csv
with open('test.csv','r')as f:
f_csv = csv.reader(f)
for row in f_csv:
print(row)
list方式写入
import csv
with open(path, 'w',newline='') as f:
writer = csv.writer(f)
writer.writerow([['a','b'],['c','d']])
字典方式写入
import csv
dict =[{'name': 'a', 'year': '2'},
{'name': 'b', 'year': '2'} ]
title = ['name', 'year']
with open(path, 'w') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames = title)
writer.writeheader()
writer.writerows(dict)
追加
import csv
with open(path, 'a',newline='') as f:
writer = csv.writer(f)
writer.writerow(['a','b'])