最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pandas對CSV文件讀寫操作詳解

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

什么是 CSV 文件

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

通常,CSV 文件的結(jié)構(gòu)由其名稱給出,使用逗號分隔每個(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ù)是如何用逗號分隔的。第一行為數(shù)據(jù)列的名稱,有的時(shí)候也可以為空第一行就是實(shí)際的數(shù)據(jù)。之后的每一行都是實(shí)際數(shù)據(jù),僅受文件大小限制。

CSV 文件從何而來?

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

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

CSV 庫解析 CSV 文件

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

讀取 CSV 文件

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

最終輸出的結(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 對象可以通過指定附加參數(shù)來處理不同樣式的 CSV 文件。

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

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

escapechar 指定用于轉(zhuǎn)義分隔符的字符以防不使用引號,默認(rèn)是沒有轉(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,由逗號分隔。問題是 address 字段的數(shù)據(jù)還包含一個(gè)逗號來表示郵政編碼。

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

CSV 文件的寫入

CSV 文件的寫入可以使用 .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 用來包圍含特殊字符的字段,排除歧義使用。

quoting的幾種控制引號行為情況:

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

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 是一個(gè)開源 Python 庫,提供高性能的數(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 寫入 CSV 文件

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

相關(guān)文章

  • Python 多線程其他屬性以及繼承Thread類詳解

    Python 多線程其他屬性以及繼承Thread類詳解

    這篇文章主要介紹了Python 多線程其他屬性以及繼承Thread類詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python創(chuàng)建Getter和Setter的方法詳解

    Python創(chuàng)建Getter和Setter的方法詳解

    Getters?和?Setters?是幫助我們設(shè)置類變量或?qū)傩远鵁o需直接訪問的方法,這篇文章主要和大家介紹了如何在Python中創(chuàng)建Getter和Setter,需要的可以參考下
    2023-10-10
  • Python操作MySQL數(shù)據(jù)庫的示例代碼

    Python操作MySQL數(shù)據(jù)庫的示例代碼

    這篇文章主要介紹了Python操作MySQL數(shù)據(jù)庫的方法,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Python語言開發(fā)高并發(fā)爬蟲示例探討

    Python語言開發(fā)高并發(fā)爬蟲示例探討

    這篇文章主要為大家介紹了Python語言開發(fā)高并發(fā)爬蟲示例探討,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Win下PyInstaller 安裝和使用教程

    Win下PyInstaller 安裝和使用教程

    pyinstaller是一個(gè)非常簡單的打包python的py文件的庫,這篇文章主要介紹了PyInstaller-Win安裝和使用教程,本文通過流程實(shí)例相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2019-12-12
  • Django執(zhí)行源生mysql語句實(shí)現(xiàn)過程解析

    Django執(zhí)行源生mysql語句實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Django執(zhí)行源生mysql語句實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python: tkinter窗口屏幕居中,設(shè)置窗口最大,最小尺寸實(shí)例

    Python: tkinter窗口屏幕居中,設(shè)置窗口最大,最小尺寸實(shí)例

    這篇文章主要介紹了Python: tkinter窗口屏幕居中,設(shè)置窗口最大,最小尺寸實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • pandas 小數(shù)位數(shù) 精度的處理方法

    pandas 小數(shù)位數(shù) 精度的處理方法

    今天小編就為大家分享一篇pandas 小數(shù)位數(shù) 精度的處理方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python實(shí)現(xiàn)決策樹分類算法代碼示例

    python實(shí)現(xiàn)決策樹分類算法代碼示例

    決策樹分類算法是最為常見的一種分類算法,通過屬性劃分來建立一棵決策樹,測試對象通過在樹上由頂向下搜索確定所屬的分類,下面這篇文章主要給大家介紹了關(guān)于python實(shí)現(xiàn)決策樹分類算法的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Python中處理字符串之endswith()方法的使用簡介

    Python中處理字符串之endswith()方法的使用簡介

    這篇文章主要介紹了Python中處理字符串之endswith()方法的使用,是Python入門中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05

最新評論

淅川县| 凤山县| 宁陵县| 天台县| 武冈市| 青河县| 聂拉木县| 邢台县| 农安县| 隆昌县| 新河县| 巩留县| 丰都县| 海南省| 黎川县| 郧西县| 如皋市| 萨迦县| 河源市| 乌审旗| 山东省| 苗栗市| 大方县| 铁岭市| 濮阳市| 岫岩| 刚察县| 翁源县| 汉沽区| 汉川市| 普洱| 巴楚县| 大新县| 武平县| 来宾市| 卓尼县| 德庆县| 南昌市| 钦州市| 阿坝县| 宜宾市|