在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取CSV數據。
1. 安裝CSV庫
Python的官方CSV庫名為csv,它已經隨Python安裝包一起發佈。在使用之前,我們需要先導入這個庫。
import csv
在一些特殊情況下,我們可能需要使用第三方的CSV庫,比如pandas庫、numpy庫等。這些庫都擁有更多的功能和更為靈活的操作方式。
2. 讀取CSV文件
接下來我們要讀取一個CSV文件。假設我們有一個叫做data.csv的文件,裏面包含了一些學生成績的信息。文件的內容如下:
name,math_score,english_score
Alice,90,80
Bob,75,85
Charlie,80,90
Daisy,95,95
代碼示例:
with open('data.csv', newline='', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
print(row)
運行結果:
['name', 'math_score', 'english_score']
['Alice', '90', '80']
['Bob', '75', '85']
['Charlie', '80', '90']
['Daisy', '95', '95']
代碼解釋:
- 我們使用了Python內置的with語句打開了一個名為data.csv的文件,並指定編碼方式為utf-8。
- 接下來,我們使用csv.reader()函數創建了一個reader對象。
- 我們通過一個for循環,逐行讀取CSV文件中的內容,並打印每一行的內容。
3. 常用參數
在讀取CSV文件時,csv.reader()函數有許多可選參數,供我們自定義讀取的方式和規則
- delimiter:指定CSV文件中的分隔符,默認為逗號(,)
- quotechar:指定CSV文件中的引號字符,默認為雙引號(”)
- lineterminator:指定CSV文件中的行結束符,默認為’\r\n’
- skipinitialspace:指定是否忽略每個字段前面的空格,默認為False
代碼示例:
with open('data.csv', newline='', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile, delimiter='\t')
for row in reader:
print(row)
運行結果:
['name,math_score,english_score']
['Alice,90,80']
['Bob,75,85']
['Charlie,80,90']
['Daisy,95,95']
代碼解釋:
- 我們在csv.reader()函數中指定了delimiter參數為製表符(’\t’)
- Csv.reader()函數便會將文件內容按製表符為分隔符進行讀取。
4. 操作CSV數據
讀取CSV文件只是我們使用CSV庫的一個方面,我們還能夠進行數據的增刪改查等各種操作。雖然csv庫內置的操作比較簡單,但是通過一些手動操作,我們依然能夠實現一些很有趣的功能。
代碼示例:
with open('data.csv', 'r', encoding='utf-8') as csvfile:
rows = list(csv.reader(csvfile))
# 在最後一行增加一條記錄
rows.append(['Ella', '85', '95'])
# 更新第二行的數據
rows[1][2] = '90'
# 刪除第三行
del rows[2]
# 將修改後的數據保存至新文件
with open('new_data.csv', 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
writer.writerows(rows)
- 我們讀取了原始的CSV數據,並將其存儲在rows列表中。
- 我們使用列表的append()函數在第4行末尾添加了一條新記錄([‘Ella’, ’85’, ’95’])。
- 我們使用列表的索引和下標來修改第二行的數據(’Bob’的英文成績由85改為90)。
- 我們使用del語句刪除了第三行數據(Charlie的成績記錄)。
- 最後,我們使用csv.writer()函數,將修改之後的數據寫入一個新的CSV文件new_data.csv中。
5. 總結
使用csv庫讀取和操作CSV文件非常簡單,但是一旦進行了一些稍微複雜的操作,就會遇到一些問題。這時候可以考慮使用pandas庫來進行數據的讀取和處理。pandas庫在數據的讀取、過濾、分組、轉換等方面都提供了非常方便的工具。
原創文章,作者:RZNYC,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/375348.html