python csv檔案的讀寫

2021-09-05 11:32:26 字數 3539 閱讀 2654

csv檔案用於儲存**資料,可以用txt和excel開啟和編輯。

寫入一次寫入一行,注意是使用list來裝要輸入的一行的內容。

import csv

import numpy as np

out=open("data.csv",'w',newline="")#防止每次輸入多空一行

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

s=np.asarray([1,2,3,4,5])

a=np.asarray([1,2,3,4,5])

r=np.asarray([1,2,3,4,5])

s1=np.asarray([1,2,3,4,5])

s=np.asarray([1,2,3,4,5])

term=np.asarray([1,2,3,4,5])

for i in rang(3):

writer.writerow([s,a,r,s1,term])

data.csv中輸入結果為:

[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]

[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]

[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]

一次多行寫入,注意多行寫入使用tuple來裝每一行內容:

import csv

import numpy as np

out=open("data.csv",'w',newline="")#防止每次輸入多空一行

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

s=np.asarray([1,2,3,4,5])

a=np.asarray([1,2,3,4,5])

r=np.asarray([1,2,3,4,5])

s1=np.asarray([1,2,3,4,5])

s=np.asarray([1,2,3,4,5])

term=np.asarray([1,2,3,4,5])

writer.writerow([(s,a,r,s1,term),(s,a,r,s1,term),(s,a,r,s1,term)])

data.csv中輸入結果為與上面一樣。

注意csv寫入檔案後,我們讀出來是str,而不再是原來的型別了。

讀取一種方式是直接讀取:

read=open('data.csv','r')

lines=read.readlines()

print(lines)

print(type(lines[0]))

輸出:

['[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]\n','[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]\n','[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]\n']

所以把str資料轉換回numpy去可以這樣做的話會花費一些計算:

read=open("data.csv",'r')

lines=read.readlines()#所有行讀出來形成乙個list

print(lines)

print(type(lines[0]))#第一行,每一行都是字串

lines_0=lines[0].split(",")#先把第一行按","化成list

print('lines_0:',lines_0[0])#我們取第一行的第乙個來還原成numpy

lines_00=lines_0[0].strip("")#去掉

lines_00=lines_00.split(" ")#去掉數字之間空格

print('lines_00:',lines_00)

a=np.asarray(lines_00)#轉換為numpy,注意這一步還沒有完,因為這一步是整個list轉換為numpy,裡面還是字串

print(a)#這裡如果是a[0]是會報錯的

print(a.astype(float))#這裡才完成了轉換

print(a[0])

輸出:

['[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5]\n', '[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5]\n', '[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5]\n']

lines_0: [1 2 3 4 5]

lines_00: ['1', '2', '3', '4', '5']

['1' '2' '3' '4' '5']

[1. 2. 3. 4. 5.]

1

另一種讀取方式是使用pandas來讀取,首先在csv檔案裡加一行,作為dataframe的列名:

s,a,r,s1,t

[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5]

[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5]

[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5],[1 2 3 4 5]

讀取:

import csv

import pandas as pd

data=pd.read_csv('data.csv')

print(data['s'])#輸出s列

print(data.iloc[0])#輸出第0行

print(data.iloc[0][0])#輸出輸出第0行第0個

print(type(data.iloc[0][0]))

輸出:

0    [1 2 3 4 5]

1 [1 2 3 4 5]

2 [1 2 3 4 5]

name: s, dtype: object

s [1 2 3 4 5]

a [1 2 3 4 5]

r [1 2 3 4 5]

s1 [1 2 3 4 5]

t [1 2 3 4 5]

name: 0, dtype: object

[1 2 3 4 5]

可以看出讀出來的還是str,還是需要轉換為numpy

注意如果想保持資料的原有格式儲存,建議使用pickle

Python CSV檔案處理 讀寫

python csv檔案處理 讀寫 csv全稱為 comma separated values 是一種格式化的檔案,由行和列組成,分隔符可以根據需要來變化。如下面為一csv檔案 title,release date,director and now for something completely ...

python csv檔案的操作

python 對csv檔案的操作十分簡單,幾行 即可搞定csv檔案,通常分為讀操作和寫操作。讀取普通csv,不帶欄位名稱 示例 import csv with open test.csv rb as csvfile spamreader csv.reader csvfile,delimiter qu...

python CSV檔案處理

import csv 這種方式讀取到的每一條資料是乙個列表,所以需要通過下標的方式獲取具體某乙個值 with open stock.csv r encoding gbk as fp reader csv.reader fp for x in reader print x 3 這種方式讀取到的每一條資...