「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