「python」读写csv文件
本文会依次介绍:
1.使用pandas读写csv文件
2.使用csv包读写文件
3.pandas读取文件后是DataFrame,如何转化成list。
1. 写入csv文件
1.1 pandas
常用的一种方式是pandas
import pandas as pd
#任意的多组列表
a = [1,2,3]
b = [4,5,6]
dataframe = pd.DataFrame({'a_name':a,'b_name':b})
#将DataFrame存储为csv
dataframe.to_csv("test.csv",sep=',')
结果显示:
a_name b_name
0 1 4
1 2 5
2 3 6
首先,我们有要存入的数据list,然后声明一个实例,
然后我们给每一行指定一个name,这里默认的是list_a的名字是a_name
下面说下函数to_csv中的参数
1. 路径:绝对路径或相对路径,使用双引号注明
2.分隔符 sep,默认是‘,’
dt.to_csv('C:/Users/think/Desktop/Result.csv',sep='?')#使用?分隔需要保存的数据,如果不写,默认是,
3. 格式:float_format
dt.to_csv('C:/Users/think/Desktop/Result1.csv',float_format='%.2f') #保留两位小数
4.是否保留列名 header(default True)
dt.to_csv('C:/Users/think/Desktop/Result.csv',header=0) #不保存列名
5.是否保留行索引 index (default True)
dt.to_csv('C:/Users/think/Desktop/Result1.csv',index=0) #不保存行索引
#或者使用index=None
6.替换空值 na_rep (default ‘’)
dt.to_csv('C:/Users/think/Desktop/Result1.csv',na_rep='NA')
#缺失值保存为NA,如果不写,默认是空
1.2 csv包
import csv
#python2可以用file替代open
with open("test.csv","w") as csvfile:
writer = csv.writer(csvfile)
#先写入columns_name
writer.writerow(["index","a_name","b_name"])
#写入多行用writerows
writer.writerows([[0,1,3],[1,2,3],[2,3,4]])
2.读csv文件
2.1 pandas
同样也可以使用pandas库
import pandas as pd
data = pd.read_csv('test.csv')
输出结果:
index a_name b_name
0 1 3
1 2 3
2 3 4
2.2 csv包
import csv
with open("test.csv","r") as csvfile:
reader = csv.reader(csvfile)
#这里不需要readlines
for line in reader:
print line
3.DataFrame转为list
用 pandas 读取 csv 文件时,会得到 DataFrame,后期如果需要进行一些 List 相关操作,需要进行转换,分为三个步骤:
这是比较麻烦的办法,过程如下:
用 np.array 将DataFrame 转换成 np.ndarray
对 ndarray 进行 reshape并用 tolist 转换成 List
取 List 的第一个元素
import pandas as pd
import numpy as np
corpus = pd.read_csv('corpus.csv') # 得到 DataFrame
corpus = np.array(corpus) # 转换为 ndarray [[1], [2], [3]]
corpus = corpus.reshape(1, len(corpus)).tolist() # 转换成 List [[1, 2, 3]]
corpus = corpus[0] # 取第一个元素得到最终结果 [1, 2, 3]
这种方法过于麻烦,没有必要
可以使用下面简单的方法,读取文件后直接转化
上面介绍的是读取的csv文件全部转化为list,但是这一般不常用。
因为我们往往希望只对某些列进行处理。或者对某一列的内容处理完在放到list中。
corpus = pd.read_csv('corpus.csv')
corpus = corpus.values.tolist()
output = []
#提取列名为id的内容
for i in corpus['id']:
#对id这列中对每一个instance进行处理
output.append(i)
#输出ouput可以查看是否是数组
print(output)
参考:https://blog.csdn.net/waple_0820/article/details/70049953