Python如何讀寫CSV文件
CSV文件是一種純文本文件,它使用特定的結(jié)構(gòu)來排列表格數(shù)據(jù)。
CSV文件內(nèi)容看起來應(yīng)該是下面這樣的:
column 1 name,column 2 name, column 3 name
first row data 1,first row data 2,first row data 3
second row data 1,second row data 2,second row data 3
...
每段數(shù)據(jù)是如何用逗號(hào)分隔的。通常,第一行標(biāo)識(shí)每個(gè)數(shù)據(jù)塊——換句話說,數(shù)據(jù)列的名稱。之后的每一行都是實(shí)際數(shù)據(jù),僅受文件大小限制。
CSV文件通常由處理大量數(shù)據(jù)的程序創(chuàng)建。它們是一種從電子表格和數(shù)據(jù)庫導(dǎo)出數(shù)據(jù)以及導(dǎo)入或在其他程序中使用數(shù)據(jù)的方便方法。例如,您可以將數(shù)據(jù)挖掘程序的結(jié)果導(dǎo)出到CSV文件中,然后將其導(dǎo)入到電子表格中,以分析數(shù)據(jù)、為演示生成圖表或準(zhǔn)備發(fā)布報(bào)告。
CSV文件非常容易通過編程處理。任何支持文本文件輸入和字符串操作的語言(如Python)都可以直接使用CSV文件。
讀取CSV文件內(nèi)容
在Python中,使用csv庫來讀取CSV文件內(nèi)容。在讀文件之前,先創(chuàng)建一個(gè)a.csv的文件,內(nèi)容是下面這樣:
名字,部門,月份
John Smith,Accounting,November
Erica Meyers,IT,March
文件創(chuàng)建完成后,開始編寫讀取文件內(nèi)容的程序:
import csv with open('a.csv') as csv_file: csv_reader = csv.reader(csv_file,delimiter=',') line_count = 0 for row in csv_reader: if line_count == 0: print(f'Column names are {", ".join(row)}') line_count += 1 else: print(f'\t{row[0]} works in the {row[1]} department, and was born in {row[2]}.') line_count += 1 print(f'Processed {line_count} lines.')
寫入數(shù)據(jù)到CSV文件
上面編寫了讀取內(nèi)容的程序,下面繼續(xù)編寫一個(gè)寫文件的程序。我們寫到b.csv文件中。
import csv with open('b.csv', mode='w') as employee_file: employee_writer = csv.writer(employee_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) employee_writer.writerow(['John Smith', 'Accounting', 'November']) employee_writer.writerow(['Erica Meyers', 'IT', 'March'])
如果你感覺使用csv庫讀寫效率比較地下,或者編寫的代碼太多。下面我介紹一種更高效的方法。
用pandas讀csv
假設(shè)我們有一個(gè)c.csv文件,具體內(nèi)容如下:
Name,Hire Date,Salary,Sick Days remaining
Graham Chapman,03/15/14,50000.00,10
John Cleese,06/01/15,65000.00,8
Eric Idle,05/12/14,45000.00,10
Terry Jones,11/01/13,70000.00,3
Terry Gilliam,08/12/14,48000.00,7
Michael Palin,05/23/13,66000.00,8
用pandas讀取csv:
import pandas df = pandas.read_csv('hrdata.csv') print(df) # 輸出的df # Name Hire Date Salary Sick Days remaining # 0 Graham Chapman 03/15/14 50000.0 10 # 1 John Cleese 06/01/15 65000.0 8 # 2 Eric Idle 05/12/14 45000.0 10 # 3 Terry Jones 11/01/13 70000.0 3 # 4 Terry Gilliam 08/12/14 48000.0 7 # 5 Michael Palin 05/23/13 66000.0 8
用pandas寫csv
讓我們用新的列名將數(shù)據(jù)寫入一個(gè)新的CSV文件:
import pandas df = pandas.read_csv('hrdata.csv', index_col='Employee', parse_dates=['Hired'], header=0, names=['Employee', 'Hired', 'Salary', 'Sick Days']) df.to_csv('d.csv') # d.csv文件內(nèi)容 # Employee,Hired,Salary,Sick Days # Graham Chapman,2014-03-15,50000.0,10 # John Cleese,2015-06-01,65000.0,8 # Eric Idle,2014-05-12,45000.0,10 # Terry Jones,2013-11-01,70000.0,3 # Terry Gilliam,2014-08-12,48000.0,7 # Michael Palin,2013-05-23,66000.0,8
如果你了解讀取CSV文件的基礎(chǔ)知識(shí),那么當(dāng)您需要處理導(dǎo)入數(shù)據(jù)時(shí),就不會(huì)手足無措?;镜腃SV Python庫可以輕松地處理大多數(shù)CSV讀取、處理和編寫任務(wù)。如果你有很多數(shù)據(jù)要讀取和處理,panda庫還提供了快速和簡單的CSV處理功能。
以上就是Python如何讀寫CSV文件的詳細(xì)內(nèi)容,更多關(guān)于Python讀寫CSV文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
CentOS 7下安裝Python3.6 及遇到的問題小結(jié)
這篇文章主要介紹了CentOS 7下安裝Python3.6 及遇到的問題小結(jié),需要的朋友可以參考下2018-11-11Python爬取數(shù)據(jù)保存為Json格式的代碼示例
今天小編就為大家分享一篇關(guān)于Python爬取數(shù)據(jù)保存為Json格式的代碼示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04使用PySpider進(jìn)行IP代理爬蟲的技巧與實(shí)踐分享
PySpider是一個(gè)基于Python的強(qiáng)大的開源網(wǎng)絡(luò)爬蟲框架,它使用簡單、靈活,并且具有良好的擴(kuò)展性,本文將介紹如何使用PySpider進(jìn)行IP代理爬蟲,并提供一些技巧和實(shí)踐經(jīng)驗(yàn),文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2024-03-03Python中PyQt5/PySide2的按鈕控件使用實(shí)例
這篇文章主要介紹了PyQt5/PySide2的按鈕控件使用實(shí)例,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08Python實(shí)現(xiàn)對(duì)照片中的人臉進(jìn)行顏值預(yù)測(cè)
今天給大家?guī)淼氖顷P(guān)于Python實(shí)戰(zhàn)的相關(guān)知識(shí),文章圍繞如何用Python實(shí)現(xiàn)對(duì)照片中的人臉進(jìn)行顏值預(yù)測(cè)展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06已解決不小心卸載pip后怎么處理(重新安裝pip的兩種方式)
這篇文章主要介紹了已解決不小心卸載pip后怎么處理(重新安裝pip的兩種方式),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04