中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pandas對CSV文件讀寫操作的方法

發布時間:2022-04-12 10:55:13 來源:億速云 閱讀:190 作者:iii 欄目:開發技術

這篇“Pandas對CSV文件讀寫操作的方法”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Pandas對CSV文件讀寫操作的方法”文章吧。

什么是 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 文件

csv 庫提供讀取和寫入 CSV 文件的功能。專為使用 Excel 生成的 CSV 文件開箱即用而設計,適應各種 CSV 格式。該 csv 庫包含對象和其他代碼,用于從 CSV 文件讀取、寫入和處理數據。

Pandas對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.

CSV reader 參數

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 文件的寫入

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 庫解析 CSV 文件

pandas 是一個開源 Python 庫,提供高性能的數據分析工具和易于使用的數據結構,可以共享數據、代碼、分析結果、可視化和敘述性文本。

pandas 讀取 CSV 文件

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 文件

讀取到 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文件讀寫操作的方法”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岫岩| 景德镇市| 和龙市| 正蓝旗| 东辽县| 离岛区| 南川市| 宜都市| 榆树市| 林周县| 河间市| 莱西市| 富川| 宜兰县| 兰考县| 台中市| 五台县| 濉溪县| 漠河县| 固镇县| 广宗县| 岢岚县| 晋州市| 丰原市| 扶风县| 临桂县| 鄄城县| 新绛县| 阿合奇县| 子洲县| 惠来县| 浦城县| 五家渠市| 江孜县| 岱山县| 河曲县| 东阿县| 满城县| 昌乐县| 康乐县| 扎兰屯市|