「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

https://blog.csdn.net/cindy_1102/article/details/95450961

https://blog.csdn.net/toshibahuai/article/details/79034829