91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Python怎么讀取和寫入操作CSV文件

發布時間:2022-03-24 16:24:53 來源:億速云 閱讀:195 作者:iii 欄目:開發技術

這篇文章主要介紹“Python怎么讀取和寫入操作CSV文件”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Python怎么讀取和寫入操作CSV文件”文章能幫助大家解決問題。

Python怎么讀取和寫入操作CSV文件

什么是 CSV 文件?

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

CSV 文件的結構由其名稱給出。通常 CSV 文件使用逗號分隔每個特定數據值。

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

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

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

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

CSV 文件從何而來?

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

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

內置 CSV 庫解析 CSV 文件

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

讀取 CSV 文件csv

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

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

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

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 數據直接讀入字典。

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參數

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

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

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

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 字段的數據還包含一個逗號來表示郵政編碼。

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

  • 使用不同的分隔符,使用delimiter可選參數來指定新的分隔符。

  • 將數據括在引號,選擇的分隔符的特殊性質在帶引號的字符串中會被忽略。quotechar 可以使用可選參數指定用于引用的字符。

  • 轉義數據中的分隔符,轉義字符的工作方式與它們在格式字符串中的作用一樣,使對被轉義字符(在本例中為分隔符)的解釋無效。如果使用轉義字符,則必須使用 escapechar 可選參數指定。

使用 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對象引用所有非數字字段,指示讀者將所有非引用字段轉換為float類型。

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

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

從字典中寫入 CSV 文件csv

編寫字典時需要 DictReader 參數。

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

修復Hire Date字段的數據類型為日期數據。

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

也可以統一進行處理。

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

關于“Python怎么讀取和寫入操作CSV文件”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

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

AI

论坛| 崇仁县| 龙门县| 舟曲县| 蓬溪县| 确山县| 沙雅县| 健康| 章丘市| 新兴县| 张家口市| 宜阳县| 桂东县| 石渠县| 金堂县| 吉木萨尔县| 华宁县| 彝良县| 西畴县| 常宁市| 博兴县| 中阳县| 木里| 绿春县| 平潭县| 喀喇| 平利县| 梁山县| 财经| 莱阳市| 泽普县| 治县。| 左贡县| 包头市| 兰考县| 甘德县| 孝义市| 嘉荫县| 施秉县| 吉木乃县| 黑山县|