日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python?pandas?解析(讀取、寫入)CSV?文件的操作方法_python

作者:qiuqiu1027 ? 更新時間: 2023-01-29 編程語言

1. 使用 pandas 讀取 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

將 CSV 文件讀入 pandas DataFrame 快速而直接:

import pandas
df = pandas.read_csv('hrdata.csv')
print(df)

就這樣簡單:僅僅三行代碼,而且其中只有一行真正有用。pandas.read_csv() 打開、分析并讀取提供的 CSV 文件,并將數據存儲在 DataFrame 中,打印 DataFrame 會產生以下輸出:

以下是值得注意的幾點:

首先,pandas 識別到 CSV 的第一行包含列名,并自動使用它們。
但是,pandas 也在 DataFrame 中使用從零開始的整數索引,那是因為沒有告訴它我們的索引應該是什么。
此外,如果查看列的數據類型,會看到 pandas 已將 Salary and Sick Days 剩余列正確轉換為數字,但 Hire Date 列仍然是 String,這在交互模式下很容易確認:

讓我們一次解決這些問題,要使用其他列作為 DataFrame 的索引,添加 index_col 可選參數:

df2 = pandas.read_csv('hrdata.csv', index_col='Name')
print(df2)

現在,Name 字段就是我們的 DataFrame 索引:

接下來,讓我們修復「Hire Date」字段的數據類型。可以使用 parse_dates 可選參數強制pandas 將數據作為日期讀取,該參數定義為要作為日期處理的列名列表:

df3 = pandas.read_csv('hrdata.csv', index_col='Name', parse_dates=['Hire Date'])
print(df3)

注意輸出的差異:

現在日期格式正確,可以在交互模式下輕松確認:

如果 CSV 文件的第一行中沒有列名,則可以使用 names 可選參數來提供列名的列表。 如果要覆蓋第一行中提供的列名,也可以使用此選項。 在這種情況下,還必須使用header = 0可選參數告訴 pandas.read_csv()忽略現有列名:

df4 = pandas.read_csv('hrdata.csv', 
            index_col='Employee', 
            parse_dates=['Hired'], 
            header=0, 
            names=['Employee', 'Hired','Salary', 'Sick Days'])
print(df4)

請注意,由于列名稱已更改,因此還必須更改index_col和parse_dates可選參數中指定的列,現在這會產生以下輸出:

2. 使用 pandas 寫入 CSV 文件

當然,如果無法將數據從 pandas 中輸出,那 pandas 可能沒有多大好處。將 DataFrame 寫入CSV 文件就像讀取一個文件一樣簡單。下面讓我們將帶有新列名稱的數據寫入新的 CSV 文件:

df5 = pandas.read_csv('hrdata.csv', 
            index_col='Employee', 
            parse_dates=['Hired'],
            header=0, 
            names=['Employee', 'Hired', 'Salary', 'Sick Days'])
df5.to_csv('hrdata_modified.csv')

此代碼與上述讀取代碼之間的唯一區別是 print(df) 替換為 df.to_csv(),新的 CSV 文件如下所示:

參考此文章連接

原文鏈接:https://blog.csdn.net/qiuqiu1027/article/details/106405926

欄目分類
最近更新