欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pandas對(duì)CSV文件讀寫(xiě)操作詳解

 更新時(shí)間:2022年04月11日 16:19:19   作者:Mr數(shù)據(jù)楊  
本文帶你了解CSV文件的基礎(chǔ)知識(shí),那么當(dāng)需要處理導(dǎo)入數(shù)據(jù)時(shí),大多數(shù)?CSV?讀取、處理和寫(xiě)入任務(wù)都可以通過(guò)基本的?Python?csv?庫(kù)輕松處理。如果大量數(shù)據(jù)要讀取和處理,該pandas庫(kù)還提供快速簡(jiǎn)便的?CSV?處理功能

什么是 CSV 文件

CSV 文件(逗號(hào)分隔值文件)是一種純文本文件,它使用特定的結(jié)構(gòu)來(lái)排列表格數(shù)據(jù)。因?yàn)樗且粋€(gè)純文本文件,所以只能包含實(shí)際的文本數(shù)據(jù),換句話說(shuō)就是可打印的 ASCII 或 Unicode 字符。

通常,CSV 文件的結(jié)構(gòu)由其名稱給出,使用逗號(hào)分隔每個(gè)特定數(shù)據(jù)值。

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)分隔的。第一行為數(shù)據(jù)列的名稱,有的時(shí)候也可以為空第一行就是實(shí)際的數(shù)據(jù)。之后的每一行都是實(shí)際數(shù)據(jù),僅受文件大小限制。

CSV 文件從何而來(lái)?

CSV 文件通常由處理大量數(shù)據(jù)的程序創(chuàng)建。從電子表格和數(shù)據(jù)庫(kù)中導(dǎo)出數(shù)據(jù)以及在其他程序中導(dǎo)入。例如可以將數(shù)據(jù)挖掘程序的結(jié)果導(dǎo)出為 CSV 文件,然后將其導(dǎo)入電子表格以分析數(shù)據(jù)、生成圖表以進(jìn)行演示或準(zhǔn)備發(fā)布報(bào)告。

CSV 文件非常容易以編程方式處理。任何支持文本文件輸入和字符串操作的語(yǔ)言(如 Python)都可以直接處理 CSV 文件。

CSV 庫(kù)解析 CSV 文件

csv 庫(kù)提供讀取和寫(xiě)入 CSV 文件的功能。專為使用 Excel 生成的 CSV 文件開(kāi)箱即用而設(shè)計(jì),適應(yīng)各種 CSV 格式。該 csv 庫(kù)包含對(duì)象和其他代碼,用于從 CSV 文件讀取、寫(xiě)入和處理數(shù)據(jù)。

讀取 CSV 文件

CSV 文件使用 Python 的內(nèi)置open()函數(shù)作為文本文件打開(kāi),該函數(shù)返回一個(gè)文件對(duì)象。然后使用 reader 對(duì)象完成從 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.')

最終輸出的結(jié)果是一樣的。

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 參數(shù)

reader 對(duì)象可以通過(guò)指定附加參數(shù)來(lái)處理不同樣式的 CSV 文件。

delimiter 指定用于分隔每個(gè)字段的字符,默認(rèn)值為逗號(hào) (‘,’)。

quotechar 指定用于包圍包含分隔符的字段的字符,默認(rèn)值為雙引號(hào) ( ’ " ')。

escapechar 指定用于轉(zhuǎn)義分隔符的字符以防不使用引號(hào),默認(rèn)是沒(méi)有轉(zhuǎn)義字符。

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 文件包含三個(gè)字段:name、address 和 date joined,由逗號(hào)分隔。問(wèn)題是 address 字段的數(shù)據(jù)還包含一個(gè)逗號(hào)來(lái)表示郵政編碼。

思考一下這個(gè)應(yīng)該怎么處理?

CSV 文件的寫(xiě)入

CSV 文件的寫(xiě)入可以使用 .write_row() 方法進(jìn)行操作。

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 用來(lái)包圍含特殊字符的字段,排除歧義使用。

quoting的幾種控制引號(hào)行為情況:

csv.QUOTE_NONNUMERIC) # 非數(shù)字加引號(hào)

csv.QUOTE_ALL # 所有字段加引號(hào)

csv.QUOTE_MINIMAL # 特殊字段加引號(hào)

csv.QUOTE_NONE # 都不加引號(hào)

字典方式寫(xiě)入。

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 庫(kù)解析 CSV 文件

pandas 是一個(gè)開(kāi)源 Python 庫(kù),提供高性能的數(shù)據(jù)分析工具和易于使用的數(shù)據(jù)結(jié)構(gòu),可以共享數(shù)據(jù)、代碼、分析結(jié)果、可視化和敘述性文本。

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讀取數(shù)據(jù)時(shí)可以格式化日期格式。

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 寫(xiě)入 CSV 文件

讀取到 pandas 的內(nèi)容可以直接寫(xiě)入到新的 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對(duì)CSV文件讀寫(xiě)操作詳解的詳細(xì)內(nèi)容,更多關(guān)于Pandas讀寫(xiě)CSV的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中Django 后臺(tái)自定義表單控件

    Python中Django 后臺(tái)自定義表單控件

    本篇文章主要介紹了Python中Django 后臺(tái)自定義表單控件,其實(shí) django 已經(jīng)為我們提供了一些可用的表單控件,比如:多選框、單選按鈕等,有興趣的開(kāi)業(yè)了解一下。
    2017-03-03
  • 對(duì)python中Matplotlib的坐標(biāo)軸的坐標(biāo)區(qū)間的設(shè)定實(shí)例講解

    對(duì)python中Matplotlib的坐標(biāo)軸的坐標(biāo)區(qū)間的設(shè)定實(shí)例講解

    今天小編就為大家分享一篇對(duì)python中Matplotlib的坐標(biāo)軸的坐標(biāo)區(qū)間的設(shè)定實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • python基于tkinter制作m3u8視頻下載工具

    python基于tkinter制作m3u8視頻下載工具

    這篇文章主要介紹了python如何基于tkinter制作m3u8視頻下載工具,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • python實(shí)現(xiàn)生成Word、docx文件的方法分析

    python實(shí)現(xiàn)生成Word、docx文件的方法分析

    這篇文章主要介紹了python實(shí)現(xiàn)生成Word、docx文件的方法,結(jié)合實(shí)例形式分析了Python使用docx模塊操作word文件與docx文件的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-08-08
  • Python屬性私有化詳解

    Python屬性私有化詳解

    私有化是為了實(shí)現(xiàn)更好的封裝形式。能隱藏屬性,不被隨意修改。以前置雙下劃線__屬性/方法名定義,但是結(jié)尾不能是雙下劃線。如果不讓某些屬性在類外部被隨意更改,可設(shè)置成私有屬性。在類定義的內(nèi)部可以訪問(wèn)
    2023-02-02
  • python實(shí)現(xiàn)停車管理系統(tǒng)

    python實(shí)現(xiàn)停車管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)停車管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • python異?;怋aseException詳解

    python異?;怋aseException詳解

    這篇文章主要為大家介紹了python異?;怋aseException詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • python?如何實(shí)現(xiàn)跳過(guò)異常繼續(xù)執(zhí)行

    python?如何實(shí)現(xiàn)跳過(guò)異常繼續(xù)執(zhí)行

    這篇文章主要介紹了python?如何實(shí)現(xiàn)跳過(guò)異常繼續(xù)執(zhí)行,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • python實(shí)現(xiàn)多圖像疊置輸出

    python實(shí)現(xiàn)多圖像疊置輸出

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)多圖像疊置輸出,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • pyinstaller打包可執(zhí)行文件,存放路徑包含中文無(wú)法運(yùn)行的解決方案

    pyinstaller打包可執(zhí)行文件,存放路徑包含中文無(wú)法運(yùn)行的解決方案

    這篇文章主要介紹了pyinstaller打包可執(zhí)行文件,存放路徑包含中文無(wú)法運(yùn)行的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03

最新評(píng)論