日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python中csv文件創建、讀取及修改等操作實例_python

作者:m0_46483236 ? 更新時間: 2022-07-06 編程語言

1. python中創建新的csv文件

(1). 使用csv.writer()創建:

代碼如下:

import csv
 
headers = ['學號','姓名','分數']
rows = [('202001','張三','98'),
        ('202002','李四','95'),
        ('202003','王五','92')]
with open('score.csv','w',encoding='utf8',newline='') as f :
    writer = csv.writer(f)
    writer.writerow(headers)
    writer.writerows(rows)

會在相同路徑下生成一個score.csv文件?

?VScode中打開如下:

?用excel打開如下:

可以發現,逗號','在csv文件中代表換格。除此以外,還有'\n'在csv文件中代表換行。?

(2). 使用csv.Dictwriter()創建:

代碼如下:

import csv
 
headers = ['學號','姓名','分數']
rows = [{'學號':'202001','姓名':'張三','分數':'98'},
        {'學號':'202002','姓名':'李四','分數':'95'},
        {'學號':'202003','姓名':'王五','分數':'92'}]
with open('score.csv','w',encoding='utf8',newline='') as f :
    writer = csv.DictWriter(f,headers)
    writer.writeheader()
    writer.writerows(rows)

會發現結果和方式1相同。

(3). 使用writelines()創建:

import csv
 
headers = ['學號,姓名,分數','\n']
csv = ['202001,張三,98','\n',
        '202002,李四,95','\n',
        '202003,王五,92']
with open('score.csv', 'w',encoding='utf8',newline='') as f:
    f.writelines(headers) # write() argument must be str, not tuple
    f.writelines(csv)

會發現結果和方式1、方式2相同。?

?綜合上述三種方式,csv文件的創建靈活多樣,主要依賴于自己創建的原來數據的存放形式,比如方式1、2中的rows和方式3中的csv,以此選擇適合的創建csv文件的函數和方式。

實際示例(要靈活使用','、'\n'、append()等):

csv = []
for line in lines:
    scores = result[line[0]]
    for wav, scores in scores.items():
        # csv.append(line[0])
        # csv.append(wav)
        # csv.append(str(i) for i in scores)
        # csv.append('\n')
        #csv.append(','.join([wav] + [str(i) for i in scores] + '\n'))
        csv.append(line[0] +','+ wav )
        for i in scores:
            csv.append(','+ str(i))
        csv.append('\n')
with open('task3-result.csv', 'w') as f:
    f.writelines(csv)

2. python中讀取csv文件

原score.csv文件在excel中打開如下:

(1). 使用pandas.read_csv()讀取

代碼如下:?

import pandas as pd 
 
my_matrix = pd.read_csv('score.csv')#,header=None,index_col=None)
'''
header : int or list of ints, default ‘infer',指定行數用來作為列名,數據開始行數。如果文件中沒有列名,則默認為0,
index_col : int or sequence or False, default None,用作行索引的列編號或者列名
'''
print(my_matrix)
print(my_matrix.shape)

此時的輸出結果為:

若代碼參數改為:

my_matrix = pd.read_csv('score.csv',header=None,index_col=None)

結果如下:

若代碼參數改為:

my_matrix = pd.read_csv('score.csv',header=0,index_col=0)

結果如下:

為了方便后續分析,可以將數據類型改為np.array型,代碼如下:

import pandas as pd 
import numpy as np
 
my_matrix = pd.read_csv('score.csv')#,header=0,index_col=0)
my_matrix = np.array(my_matrix)
print(my_matrix)
print(my_matrix.shape)
print(my_matrix[0][0])

結果如下:

?(2). 使用csv.reader()進行讀取

代碼如下:

import csv
#讀取csv文件
with open('score.csv', "r",encoding='utf8',newline='') as f:
	reader = csv.reader(f)
	for row in reader:
		print(row)

結果如下:

如果想獲取某一列,可以通過指定的列標號來查詢,代碼如下:

for row in reader:
    print(row[0])

可以輸出某一指定的列 ,結果如下:

?(3). 使用csv.DictReader()進行讀取

代碼如下:

import csv
#讀取csv文件
with open('score.csv', "r",encoding='utf8',newline='') as f:
	reader = csv.DictReader(f)
	for row in reader:
		print(row)

結果如下:

如果想獲取某一列,可以通過指定的標題來查詢,代碼如下:

for row in reader:
	print(row['學號'])

可以輸出指定的某一列,結果如下:

總結

原文鏈接:https://blog.csdn.net/m0_46483236/article/details/109583685

欄目分類
最近更新