您好,登錄后才能下訂單哦!
這篇“Pandas對CSV文件讀寫操作的方法”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Pandas對CSV文件讀寫操作的方法”文章吧。
CSV 文件(逗號分隔值文件)是一種純文本文件,它使用特定的結構來排列表格數據。因為它是一個純文本文件,所以只能包含實際的文本數據,換句話說就是可打印的 ASCII 或 Unicode 字符。
通常,CSV 文件的結構由其名稱給出,使用逗號分隔每個特定數據值。
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 ...
每條數據是如何用逗號分隔的。第一行為數據列的名稱,有的時候也可以為空第一行就是實際的數據。之后的每一行都是實際數據,僅受文件大小限制。
CSV 文件從何而來?
CSV 文件通常由處理大量數據的程序創建。從電子表格和數據庫中導出數據以及在其他程序中導入。例如可以將數據挖掘程序的結果導出為 CSV 文件,然后將其導入電子表格以分析數據、生成圖表以進行演示或準備發布報告。
CSV 文件非常容易以編程方式處理。任何支持文本文件輸入和字符串操作的語言(如 Python)都可以直接處理 CSV 文件。
csv 庫提供讀取和寫入 CSV 文件的功能。專為使用 Excel 生成的 CSV 文件開箱即用而設計,適應各種 CSV 格式。該 csv 庫包含對象和其他代碼,用于從 CSV 文件讀取、寫入和處理數據。
CSV 文件使用 Python 的內置open()函數作為文本文件打開,該函數返回一個文件對象。然后使用 reader 對象完成從 CSV 文件中的讀取。
employee_birthday.txt
name,department,birthday month John Smith,Accounting,November Erica Meyers,IT,March
直接讀取的方法。
import csv with open('employee_birthday.txt') 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.')
字典方式讀取的方法。
import csv with open('employee_birthday.txt', mode='r') as csv_file: csv_reader = csv.DictReader(csv_file) line_count = 0 for row in csv_reader: if line_count == 0: print(f'Column names are {", ".join(row)}') line_count += 1 print(f'\t{row["name"]} works in the {row["department"]} department, and was born in {row["birthday month"]}.') line_count += 1 print(f'Processed {line_count} lines.')
最終輸出的結果是一樣的。
Column names are name, department, birthday month
John Smith works in the Accounting department, and was born in November.
Erica Meyers works in the IT department, and was born in March.
Processed 3 lines.
reader 對象可以通過指定附加參數來處理不同樣式的 CSV 文件。
delimiter 指定用于分隔每個字段的字符,默認值為逗號 (‘,’)。
quotechar 指定用于包圍包含分隔符的字段的字符,默認值為雙引號 ( ’ " ')。
escapechar 指定用于轉義分隔符的字符以防不使用引號,默認是沒有轉義字符。
employee_addresses.txt
name,address,date joined john smith,1132 Anywhere Lane Hoboken NJ, 07030,Jan 4 erica meyers,1234 Smith Lane Hoboken NJ, 07030,March 2
此 CSV 文件包含三個字段:name、address 和 date joined,由逗號分隔。問題是 address 字段的數據還包含一個逗號來表示郵政編碼。
思考一下這個應該怎么處理?
CSV 文件的寫入可以使用 .write_row() 方法進行操作。
import csv with open('employee_file.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'])
quotechar 用來包圍含特殊字符的字段,排除歧義使用。
quoting的幾種控制引號行為情況:
csv.QUOTE_NONNUMERIC) # 非數字加引號
csv.QUOTE_ALL # 所有字段加引號
csv.QUOTE_MINIMAL # 特殊字段加引號
csv.QUOTE_NONE # 都不加引號
字典方式寫入。
import csv with open('employee_file2.csv', mode='w') as csv_file: fieldnames = ['emp_name', 'dept', 'birth_month'] writer = csv.DictWriter(csv_file, fieldnames=fieldnames) writer.writeheader() writer.writerow({'emp_name': 'John Smith', 'dept': 'Accounting', 'birth_month': 'November'}) writer.writerow({'emp_name': 'Erica Meyers', 'dept': 'IT', 'birth_month': 'March'})
employee_file2.csv
emp_name,dept,birth_month John Smith,Accounting,November Erica Meyers,IT,March
pandas 是一個開源 Python 庫,提供高性能的數據分析工具和易于使用的數據結構,可以共享數據、代碼、分析結果、可視化和敘述性文本。
hrdata.csv
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可以快速的讀取。
import pandas df = pandas.read_csv('hrdata.csv') print(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讀取數據時可以格式化日期格式。
import pandas df = pandas.read_csv('hrdata.csv', index_col='Name', parse_dates=['Hire Date']) print(df) Hire Date Salary Sick Days remaining Name 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
讀取到 pandas 的內容可以直接寫入到新的 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('hrdata_modified.csv') print(df) 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
以上就是關于“Pandas對CSV文件讀寫操作的方法”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。