简单介绍如何读写CSV文件
1、读CSV
两种方法,用pandas的read_csv函数读,和用Python的读文件open读。
1.1 用函数pandas.read_csv读
如果你知道CSV文件的列属性,可以直接用pd.read_csv读取后,用列属性得到想要的内容:
如下例子中,是获取列属性acc大于0.7的所有记录。
import pandas as pd
df = pd.read_csv('table.csv')
case = df[df.acc < 0.7]
1.2 用reader读
直接用csv中的reader读。
import csv
file = open("Data.csv", "r")
reader = csv.reader(file) #返回迭代类型
data = []
for item in reader:
print(item)
data.append(item)
print(data)
csvFile.close()
1.3 用open函数读
用open读就跟普通文件读一样。CSV一行中,每列使用逗号分隔的。
例如下面例子中,读取了每一行到一个list,然后根据逗号对string分片。
merge_class = open("file.csv", "r")
lines = merge_class.readlines()
dict = defaultdict(list)
for j in range(len(lines)):
line = re.split(r"[\,]", lines[j])
dict[line[0]].append(line[1])
2、写CSV
2.1 用to_csv写
如果你用pandas.DataFrame创建了一个csv对象,规定了列属性,就可以用to_csv写入。如下。
import pandas as pd
df = pd.read_csv('table.csv')
case = df[df.acc < 0.7]
print type(case)
print case
file = pd.DataFrame(case, columns=['label', 'acc'])
file.to_csv('cases.csv')
2.2 用csv.writer写
可以定义一个writer,然后就可以每次向文件中写入一行,注意的是,如果有多列,这一行的字符串要用逗号分隔。
import csv
flabel = open("label.txt", "r")
file = open("file.csv", "w", newline='')#newline是防止两行中间空一行
writer = csv.writer(file)
lines = flabel.readlines()
for i in range(len(lines)):
line = re.split(r"[\s\n]", lines[i])
writer.writerow(line[0:len(line)-1])
2.3 其他
暂时就先这样吧。