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

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

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

什么是 CSV 文件

CSV 文件(逗號(hào)分隔值文件)是一種純文本文件,它使用特定的結(jié)構(gòu)來排列表格數(shù)據(jù)。因?yàn)樗且粋€(gè)純文本文件,所以只能包含實(shí)際的文本數(shù)據(jù),換句話說就是可打印的 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 文件從何而來?

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

CSV 庫(kù)解析 CSV 文件

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

讀取 CSV 文件

CSV 文件使用 Python 的內(nèi)置open()函數(shù)作為文本文件打開,該函數(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ì)象可以通過指定附加參數(shù)來處理不同樣式的 CSV 文件。

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

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

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

思考一下這個(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的幾種控制引號(hào)行為情況:

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

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

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

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

字典方式寫入。

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

相關(guān)文章

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

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

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

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

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

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

    這篇文章主要介紹了Python操作MySQL數(shù)據(jù)庫(kù)的方法,文中示例代碼非常詳細(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è)非常簡(jiǎn)單的打包python的py文件的庫(kù),這篇文章主要介紹了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ì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python: tkinter窗口屏幕居中,設(shè)置窗口最大,最小尺寸實(shí)例

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

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

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

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

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

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

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

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

最新評(píng)論

安庆市| 宁武县| 蓬莱市| 屏边| 台北县| 永城市| 诏安县| 建始县| 伊川县| 阳原县| 唐山市| 汕头市| 左权县| 佛山市| 荆州市| 哈密市| 冀州市| 济南市| 普定县| 扬中市| 惠州市| 南安市| 河池市| 勐海县| 贺州市| 穆棱市| 婺源县| 来凤县| 托克托县| 乐安县| 山西省| 和平县| 清流县| 曲水县| 化州市| 呼图壁县| 彝良县| 奉节县| 龙里县| 徐汇区| 枣阳市|