「python」讀寫csv文件

                                「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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章