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

詳解Python讀取和寫入操作CSV文件的方法

 更新時間:2022年03月24日 14:15:54   作者:Mr數(shù)據(jù)楊  
CSV 文件(逗號分隔值文件)是一種純文本文件,它使用特定的結(jié)構(gòu)來排列表格數(shù)據(jù)。本文將詳細介紹Python中讀取個寫入操作CSV文件的方法,需要的可以參考一下

最流行的數(shù)據(jù)交換格式之一是 CSV 格式。是需要通過鍵盤和控制臺以外的方式將信息輸入和輸出的程序,通過文本文件交換信息是在程序之間共享信息的常用方法。

這里帶和我一起回顧學(xué)習(xí)如何使用 Python 從文本文件中讀取、處理和解析 CSV。

什么是 CSV 文件?

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

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

column 1 name,column 2 name, column 3 name
1st row data 1,1st row data 2,1st row data 3
2nd row data 1,2nd row data 2,2nd row data 3

注意每條數(shù)據(jù)是如何用逗號分隔的。通常第一行標識每條數(shù)據(jù)換句話說,就是數(shù)據(jù)列的名稱。之后的每一行都是實際數(shù)據(jù),并且受文件大小限制。

通常分隔符(,)逗號不是唯一使用的。其他流行的分隔符包括制表符 ( \t)、冒號 ( : ) 和分號 ( ; ) 字符。

正確解析 CSV 文件需要知道正在使用哪個分隔符。

CSV 文件從何而來?

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

CSV 文件非常容易以 Python編程方式處理,可以直接處理 CSV 文件。

內(nèi)置 CSV 庫解析 CSV 文件

csv庫專為使用 Excel 生成的 CSV 文件開箱即用而設(shè)計,并且適應(yīng)各種 CSV 格式。

讀取 CSV 文件csv

CSV 文件使用 Python 的內(nèi)置 open() 函數(shù)作為文本文件打開,該函數(shù)返回一個文件對象,然后將其傳遞給 reader 執(zhí)行讀取工作。

# employee_birthday.txt
name,department,birthday
John,IT,November
Tom,IT,March

讀取操作代碼,返回的每一行reader都是一個元素列表,String其中包含通過刪除分隔符找到的數(shù)據(jù)。返回的第一行包含以特殊方式處理的列名。

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'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.')

names are name, department, birthday
	John works in the IT department, and was born in November.
	Tom works in the IT department, and was born in March.
Processed 3 lines.

將 CSV 文件讀入字典csv

除了處理單個String元素的列表,還可以將 CSV 數(shù)據(jù)直接讀入字典。

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
	John works in the IT department, and was born in November.
	Tom works in the IT department, and was born in March.
Processed 3 lines.

可選的 Python CSV reader參數(shù)

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

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

escapechar 指定用于轉(zhuǎn)義分隔符的字符,以防不使用引號。默認是沒有轉(zhuǎn)義字符。

name,address,date joined
john,1132 Anywhere Lane Hoboken NJ, 07030,Jan 4
erica,1234 Smith Lane Hoboken NJ, 07030,March 2

此 CSV 文件包含三個字段:name、address和date joined,它們由逗號分隔。問題是該 address 字段的數(shù)據(jù)還包含一個逗號來表示郵政編碼。

有三種方法可以處理這個。

  • 使用不同的分隔符,使用delimiter可選參數(shù)來指定新的分隔符。
  • 將數(shù)據(jù)括在引號,選擇的分隔符的特殊性質(zhì)在帶引號的字符串中會被忽略。quotechar 可以使用可選參數(shù)指定用于引用的字符。
  • 轉(zhuǎn)義數(shù)據(jù)中的分隔符,轉(zhuǎn)義字符的工作方式與它們在格式字符串中的作用一樣,使對被轉(zhuǎn)義字符(在本例中為分隔符)的解釋無效。如果使用轉(zhuǎn)義字符,則必須使用 escapechar 可選參數(shù)指定。

使用 csv 寫入文件

可以使用 writer 對象和 .write_row() 方法寫入 CSV 文件。

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'])

csv.QUOTE_MINIMAL means only when required, for example, when a field contains either the quotechar or the delimiter
csv.QUOTE_ALL means that quotes are always placed around fields.
csv.QUOTE_NONNUMERIC means that quotes are always placed around
fields which do not parse as integers or floating point numbers.
csv.QUOTE_NONE means that quotes are never placed around fields.

csv.QUOTE_MINIMAL: writer對象只引用那些包含特殊字符。

csv.QUOTE_ALL: writer對象引用所有字段,如字段分隔符,quotechar或任何字符 lineterminator。

csv.QUOTE_NONNUMERIC: writer對象引用所有非數(shù)字字段,指示讀者將所有非引用字段轉(zhuǎn)換為float類型。

csv.QUOTE_NONE: writer對象不引用字段,如未設(shè)置escapechar錯誤拋出;指示reader不對引號字符執(zhí)行特殊處理。

John Smith,Accounting,November
Erica Meyers,IT,March

從字典中寫入 CSV 文件csv

編寫字典時需要 DictReader 參數(shù)。

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'})

使用 pandas 庫解析 CSV 文件

可以先安裝 pandas 庫。

pip install pandas

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 讀取 csv 文件。

import pandas as pd
df = pd.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

增加索引列讀取 csv 文件,這樣索引序號就沒有了。

import pandas as pd
df = pd.read_csv('hrdata.csv', index_col='Name')
print(df)
               Hire Date   Salary  Sick Days remaining
Name                                                  
Graham Chapman  03/15/14  50000.0                   10
John Cleese     06/01/15  65000.0                    8
Eric Idle       05/12/14  45000.0                   10
Terry Jones     11/01/13  70000.0                    3
Terry Gilliam   08/12/14  48000.0                    7
Michael Palin   05/23/13  66000.0                    8

修復(fù)Hire Date字段的數(shù)據(jù)類型為日期數(shù)據(jù)。

import pandas as pd
df = pd.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

也可以統(tǒng)一進行處理。

import pandas as pd
df = pd.read_csv('hrdata.csv', 
        index_col='Employee', 
        parse_dates=['Hired'], 
        header=0, 
        names=['Employee', 'Hired','Salary', 'Sick Days'])
print(df)
                    Hired   Salary  Sick Days
Employee                                     
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 as pd
df = pd.read_csv('hrdata.csv', 
        index_col='Employee', 
        parse_dates=['Hired'],
        header=0, 
        names=['Employee', 'Hired', 'Salary', 'Sick Days'])
df.to_csv('hrdata_modified.csv')

到此這篇關(guān)于詳解Python讀取和寫入操作CSV文件的方法的文章就介紹到這了,更多相關(guān)Python讀取寫入CSV內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中optparser庫用法實例詳解

    Python中optparser庫用法實例詳解

    這篇文章主要介紹了Python中optparser庫用法實例詳解,介紹了optparser的引入,初始化等相關(guān)內(nèi)容,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • selenium在執(zhí)行phantomjs的API并獲取執(zhí)行結(jié)果的方法

    selenium在執(zhí)行phantomjs的API并獲取執(zhí)行結(jié)果的方法

    今天小編就為大家分享一篇selenium在執(zhí)行phantomjs的API并獲取執(zhí)行結(jié)果的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python Django Cookie 簡單用法解析

    Python Django Cookie 簡單用法解析

    這篇文章主要介紹了Python Django Cookie 簡單用法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python守護進程用法實例分析

    Python守護進程用法實例分析

    這篇文章主要介紹了Python守護進程用法,實例分析了Python守護進程的功能及使用方法,需要的朋友可以參考下
    2015-06-06
  • 對python3新增的byte類型詳解

    對python3新增的byte類型詳解

    今天小編就為大家分享一篇對python3新增的byte類型詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python字典按照value排序方法

    python字典按照value排序方法

    在本篇文章里小編給各位分享一篇關(guān)于python字典按照value排序方法的相關(guān)文章,有興趣的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Anaconda安裝OpenCV的方法圖文教程

    Anaconda安裝OpenCV的方法圖文教程

    在Anaconda里安裝OpenCV的方法有很多,下面這篇文章主要給大家介紹了關(guān)于Anaconda安裝OpenCV的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • 詳解Python中xlwt庫的基本操作

    詳解Python中xlwt庫的基本操作

    xlwt 是一個用于在Python中操作Excel文件的庫,它允許用戶創(chuàng)建、修改和寫入Excel文件,本文主要為大家介紹了xlwt庫的一些基本操作,需要的可以參考一下
    2023-11-11
  • Jupyter Notebook中%time和%timeit的使用詳解

    Jupyter Notebook中%time和%timeit的使用詳解

    本文主要介紹了Jupyter Notebook中%time和%timeit的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Tensorflow累加的實現(xiàn)案例

    Tensorflow累加的實現(xiàn)案例

    今天小編就為大家分享一篇Tensorflow累加的實現(xiàn)案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02

最新評論

合水县| 五河县| 昌平区| 达拉特旗| 长兴县| 焦作市| 湖南省| 通辽市| 玉环县| 绥化市| 安庆市| 石景山区| 卢龙县| 迭部县| 贵德县| 松桃| 阿勒泰市| 车致| 枝江市| 长岭县| 大姚县| 年辖:市辖区| 西安市| 宝兴县| 滨州市| 武强县| 鲁甸县| 安阳县| 辽源市| 重庆市| 肃宁县| 尉氏县| 英超| 阳朔县| 武乡县| 涟源市| 平凉市| 莲花县| 屏东县| 深圳市| 赫章县|