Python讀取CSV檔案遇到問題

2021-08-29 04:09:44 字數 2161 閱讀 3883

目前,python3(以下簡稱python)至少有三種辦法讀取csv格式檔案,分別是:

1.csv模組 

2.numpy裡面的loadtxt方法 

3.pandas裡面的read_csv方法

python中有乙個讀寫csv檔案的包,直接import csv即可。利用這個python包可以很方便對csv檔案進行操作,一些簡單的用法如下。

1. 讀檔案

csv_reader = csv.reader(open('data.file', encoding='utf-8'))

for row in csv_reader:

print(row)

例如有如下的檔案

輸出結果如下

['0.093700','0.139771','0.062774','0.007698']

['-0.022711','-0.050504','-0.035691','-0.065434']

['-0.090407','0.021198','0.208712','0.102752']

['-0.085235','0.009540','-0.013228','0.094063']

可見csv_reader把每一行資料轉化成了乙個list,list中每個元素是乙個字串

2. 寫檔案

讀檔案時,我們把csv檔案讀入列表中,寫檔案時會把列表中的元素寫入到csv檔案中。

list = ['1', '2','3','4']

out = open(outfile, 'w')

csv_writer = csv.writer(out)

csv_writer.writerow(list)

可能遇到的問題:直接使用這種寫法會導致檔案每一行後面會多乙個空行。解決辦法如下:

out = open(outfile, 'w', newline='')

csv_writer = csv.writer(out, dialect='excel')

csv_writer.writerow(list)

問題:想讀取每列的資料,畫出折線圖,沒想到總是報錯,後來才意識到csv.reader函式讀取的list是字元型,所以進行轉換型別

python中map()函式接收兩個引數,乙個是函式,乙個是序列,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的list返回。

python裡面直接轉一維的list

問題 1:

list=['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

轉化為:list=[0, 1 ,2, 3, 4, 5, 6, 7, 8, 9]

**如下:

1	list_to_float = list(map(lambda x:float(x), list))
問題2:(對於二維陣列,需要加個迴圈,變成一維陣列)

list=[['0', '1', '2'], ['3', '4', '5'], ['6', '7', '8']]

轉化為:list=[[0, 1 ,2], [3, 4, 5], [6, 7, 8]]

**如下:

list_to_float = 

for each in list:

each_line=list(map(lambda x: float(x), each))

這樣輸出才不會報錯: 

with open(filename) as f: #開啟檔案檔案並將內容儲存在reader中

csv_data=csv.reader(f) #讀取並將內容儲存在reader中

list_str = [row[0] for row in csv_data] #讀取每列的資料

list_float = list(map(lambda x:float(x), list_str)) #將list中的字元轉為數字

print(list_float)

python讀取csv檔案

csv格式資料 import csvcsv資料儲存,包括三種方式 直接寫入csv檔案 寫入 一條或者多條資料 import csv header line1 line2 line3 rows 1,2,3 4,5,6 7,8,9 with open test.csv w as f file csv.w...

python讀取CSV檔案

reader讀取csv檔案,再用for迴圈遍歷 import csv with open customer.csv as f f csv csv.reader f for row in f csv print row 0 執行結果 id test 932467 1111 932468 2 93246...

python讀取csv檔案

在python裡面,讀取或寫入csv檔案時,首先要import csv這個庫,然後利用這個庫提供的方法進行對檔案的讀寫。0x01 獲取每一行 讀取csv檔案,用的是csv.reader 這個方法。返回結果是乙個 csv.reader的物件,我們可以對這個物件進行遍歷,輸出每一行,某一行,或某一列。如...