處理csv文件的常見方法包括使用python內(nèi)置csv模塊和pandas庫。1. csv模塊適合基礎(chǔ)操作,如用csv.reader()讀取、csv.writer()寫入,也可通過csv.dictreader和csv.dictwriter以字典形式處理帶表頭的數(shù)據(jù);2. pandas適用于復(fù)雜數(shù)據(jù)操作,支持讀取、篩選、寫入大數(shù)據(jù)集,并可分塊處理大文件;3. 處理大文件時可用逐行讀取或設(shè)置chunksize參數(shù)分批加載,同時注意打開文件時添加newline=”避免換行符問題。根據(jù)需求選擇合適工具即可。
處理csv文件是日常編程中非常常見的任務(wù),python 提供了多種方法來讀取、寫入和操作 CSV 數(shù)據(jù)。如果你需要快速上手或優(yōu)化已有代碼,下面這些方法會很實(shí)用。
使用內(nèi)置 csv 模塊
Python 自帶的 csv 模塊是最基礎(chǔ)也是最常用的工具之一。它簡單易用,適合大多數(shù)基本需求。
-
讀取 CSV 文件
可以使用 csv.reader() 來逐行讀取數(shù)據(jù)。例如:import csv with open('data.csv', newline='') as csvfile: reader = csv.reader(csvfile) for row in reader: print(row)
-
寫入 CSV 文件
使用 csv.writer() 可以輕松地將列表寫入到 CSV 文件中:with open('output.csv', 'w', newline='') as csvfile: writer = csv.writer(csvfile) writer.writerow(['Name', 'Age']) writer.writerow(['Alice', 30])
如果你的數(shù)據(jù)有字段名(比如表頭),可以考慮使用 csv.DictReader 和 csv.DictWriter,這樣可以通過字典的方式訪問每一列。
立即學(xué)習(xí)“Python免費(fèi)學(xué)習(xí)筆記(深入)”;
使用 pandas 庫處理更復(fù)雜的情況
當(dāng)你的數(shù)據(jù)量較大或者需要進(jìn)行排序、篩選、合并等操作時,推薦使用 pandas。它基于 numpy 實(shí)現(xiàn),性能好、功能強(qiáng)。
- 讀取 CSV:pd.read_csv(‘data.csv’)
- 寫入 CSV:df.to_csv(‘output.csv’, index=False)
一個常見場景是讀取后篩選某些列再保存:
import pandas as pd df = pd.read_csv('data.csv') selected = df[['name', 'score']] selected.to_csv('selected_data.csv', index=False)
此外,pandas 還支持直接從網(wǎng)絡(luò) URL 加載 CSV,比如:
url = 'https://example.com/data.csv' df = pd.read_csv(url)
這對于數(shù)據(jù)分析和自動化腳本非常方便。
處理大文件時的小技巧
當(dāng)你面對的是幾百 MB 甚至幾 GB 的 CSV 文件時,一次性加載進(jìn)內(nèi)存顯然不合適。這時候可以考慮逐塊讀取或者使用生成器。
-
如果你用 pandas,可以設(shè)置 chunksize 參數(shù)分批讀?。?/p>
for chunk in pd.read_csv('big_file.csv', chunksize=10000): process(chunk) # 假設(shè)這是你自己定義的處理函數(shù)
-
對于只讀操作,也可以用 csv 模塊配合 with open(…) 按行處理,這樣內(nèi)存占用更低。
另外,建議在打開文件時始終加上 newline=” 參數(shù),避免在不同操作系統(tǒng)下出現(xiàn)換行符不一致的問題。
基本上就這些。根據(jù)實(shí)際需求選擇合適的方法即可,小任務(wù)用標(biāo)準(zhǔn)庫足夠,復(fù)雜處理還是交給 pandas 更省心。