[Python]pandas讀取寫入CSV 與Excel文件

閱讀時間約 1 分鐘

pandas 提供了多種方法來讀取和寫入各種格式的文件。

本文主要介紹讀取寫入CSV 文件與Excel 文件,與比較兩者的差異。

為什麼要介紹這兩種呢,因為大多的練習範例的數據都是用csv檔儲存,像Kaggle競賽,比賽提供的數據也大多都是csv檔。

Kaggle是一個數據建模和數據分析競賽平台,它的數據大多都是csv檔,有點像機器學習的 Leetcode,不過除了可以練習以外,Kaggle 比賽的好成績寫在履歷上是廣泛被認可的,Kaggle 打一個好成績。這個成績就可以當作往機器學習或資料科學工作的敲門磚。


CSV 文件

1. 讀取 CSV 文件

pandas 提供了 pd.read_csv() 方法來讀取 CSV 文件。你可以使用多種參數來控制讀取過程。

import pandas as pd

# 基本的讀取方法
df = pd.read_csv('data.csv')
print(df.head()) # 顯示前五行數據

# 指定分隔符(如果不是默認的逗號)
df = pd.read_csv('data.tsv', sep='\t')

# 處理沒有標題的 CSV 文件
df = pd.read_csv('data.csv', header=None)

# 指定特定的行作為列名
df = pd.read_csv('data.csv', header=1)

# 只讀取特定的列
df = pd.read_csv('data.csv', usecols=['Name', 'Age'])

# 處理缺失值
df = pd.read_csv('data.csv', na_values=['N/A', 'NA', 'NULL'])

# 指定編碼(例如處理 UTF-8 編碼的文件)
df = pd.read_csv('data.csv', encoding='utf-8')

程式範例

讀取下面章節程式範例寫入的csv文件。

df = pd.read_csv('output.csv')
print(df)
# 輸出
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago

2. 寫入 CSV 文件

pandas 使用 DataFrame.to_csv() 方法將 DataFrame 寫入 CSV 文件。

# 基本的寫入方法
df.to_csv('output.csv', index=False)

# 指定分隔符
df.to_csv('output.tsv', sep='\t', index=False)

# 不寫入列名
df.to_csv('output.csv', index=False, header=False)

# 處理缺失值
df.to_csv('output.csv', na_rep='NULL', index=False)

# 指定編碼
df.to_csv('output.csv', encoding='utf-8', index=False)

範例

import pandas as pd

# 創建一個 DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)

# 將 DataFrame 寫入 CSV 文件
df.to_csv('output.csv', index=False)

若無此CSV檔則會自己創建,產生了含有data資料的csv文件。

raw-image

Excel 文件

1. 讀取 Excel 文件

使用 pandaspd.read_excel() 方法來讀取 Excel 文件。可以指定讀取的工作表名稱或索引,以及其他參數來控制讀取過程。

import pandas as pd

# 讀取 Excel 文件中的第一個工作表
df = pd.read_excel('data.xlsx')
print(df.head()) # 顯示前五行數據

# 指定讀取特定的工作表
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')

# 讀取多個工作表到一個字典中
dfs = pd.read_excel('data.xlsx', sheet_name=['Sheet1', 'Sheet2'])

# 讀取所有工作表
dfs = pd.read_excel('data.xlsx', sheet_name=None)

# 只讀取特定的列
df = pd.read_excel('data.xlsx', usecols=['Name', 'Age'])

# 處理缺失值
df = pd.read_excel('data.xlsx', na_values=['N/A', 'NA', 'NULL'])

2. 寫入 Excel 文件

使用 DataFrame.to_excel() 方法將 DataFrame 寫入 Excel 文件。你可以寫入單個或多個工作表,並進行格式化。

# 基本的寫入方法
df.to_excel('output.xlsx', index=False)

# 指定寫入特定的工作表
df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)

# 寫入多個工作表
with pd.ExcelWriter('output.xlsx', engine='xlsxwriter') as writer:
df.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet2', index=False)

# 自定義起始行和列
df.to_excel('output.xlsx', startrow=2, startcol=3, index=False)

# 處理缺失值
df.to_excel('output.xlsx', na_rep='NULL', index=False)

# 新增格式(例如標題行格式化)
with pd.ExcelWriter('output.xlsx', engine='xlsxwriter') as writer:
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']

# 定義格式
header_format = workbook.add_format({'bold': True, 'text_wrap': True, 'valign': 'top', 'fg_color': '#D7E4BC', 'border': 1})

# 寫入標題
for col_num, value in enumerate(df.columns.values):
worksheet.write(0, col_num, value, header_format)

程式範例

import pandas as pd

# 創建一個 DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)

# 使用 ExcelWriter 寫入
with pd.ExcelWriter('output.xlsx', engine='openpyxl', mode='a', if_sheet_exists='replace') as writer:
df.to_excel(writer, sheet_name='Sheet1', index=False)

ExcelWriter詳細說明:

  • engine='openpyxl': 使用 openpyxl 引擎來讀取和寫入 Excel 文件,這是因為 openpyxl 支持在現有文件中進行追加操作。
  • mode='a': 以追加模式打開 Excel 文件。如果文件不存在,則創建一個新文件。
  • if_sheet_exists='replace': 如果工作表已經存在,這會用新的數據替換掉舊的工作表。如果希望保留原有工作表而不覆蓋,可以選擇 if_sheet_exists='new'(添加新的工作表,如果名稱已存在則拋出錯誤)。
raw-image

CSV 和 Excel 的比較

1. CSV 的優點與缺點

  • 優點:
    • 輕量級,適合處理純文本數據。
    • 通用性強,幾乎所有數據分析工具都支持。
    • 適合大數據集的快速讀寫。
  • 缺點:
    • 不支持多工作表。
    • 不支持數據格式和樣式。
    • 僅適用於簡單的數據結構,無法保存複雜數據。

2. Excel 的優點與缺點

  • 優點:
    • 支持多工作表。
    • 支持數據格式、樣式、公式等豐富的表格功能。
    • 更適合需要表格呈現的數據。
  • 缺點:
    • 文件較大,讀寫速度相對較慢。
    • 格式過於複雜時,可能出現兼容性問題。

總結

  • CSV 文件適合處理純文本數據和大數據集,而 Excel 文件適合需要多工作表和豐富格式的場景。
  • pandas 提供了靈活的方法來讀取和寫入這兩種文件格式,並允許你自定義讀寫過程中的各種細節。
119會員
201內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
從基本概念開始,然後逐步深入學習 pandas 的各種功能。這是一個非常強大的 Python 資料分析工具,常用於處理結構化數據。 基本概念 pandas 主要有兩個核心資料結構: Series: 一維的資料結構,類似於 Python 中的列表,但它可以帶有標籤(index)。 DataFr
在 Python 中,可以使用多種方法來去除字串中的空白字元,以下是幾種常見的方法: 固定位置型 使用 strip() 方法 strip() 方法會去除字串前後的空白字元(包括空格、換行、製表符號等)。
有別於正則表達式符號的難以理解,有其他簡單的方式也可以來處理字串的問題。 本文主要介紹其他方法用於處理字串,尋找字串中的關鍵字與其他操作。 [Python]Re正則表達式中常用符號的重點整理 字串方法(String Methods) Python 提供了多種內建的字串方法,可以替代某些簡單
紀錄一些,實用的re正則表達式需要用時,就可以直接複製貼上。 檢查是否有中文字
當使用正則表達式(Regular Expressions, Regex)時,不同的符號和構造具有特定的含義,這些符號和模式可以用來構建靈活且強大的文本匹配規則。 以下是正則表達式中常用符號的重點整理: 字元類別 (Character Classes) [abc]: 匹配 a、b 或 c 中
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
從基本概念開始,然後逐步深入學習 pandas 的各種功能。這是一個非常強大的 Python 資料分析工具,常用於處理結構化數據。 基本概念 pandas 主要有兩個核心資料結構: Series: 一維的資料結構,類似於 Python 中的列表,但它可以帶有標籤(index)。 DataFr
在 Python 中,可以使用多種方法來去除字串中的空白字元,以下是幾種常見的方法: 固定位置型 使用 strip() 方法 strip() 方法會去除字串前後的空白字元(包括空格、換行、製表符號等)。
有別於正則表達式符號的難以理解,有其他簡單的方式也可以來處理字串的問題。 本文主要介紹其他方法用於處理字串,尋找字串中的關鍵字與其他操作。 [Python]Re正則表達式中常用符號的重點整理 字串方法(String Methods) Python 提供了多種內建的字串方法,可以替代某些簡單
紀錄一些,實用的re正則表達式需要用時,就可以直接複製貼上。 檢查是否有中文字
當使用正則表達式(Regular Expressions, Regex)時,不同的符號和構造具有特定的含義,這些符號和模式可以用來構建靈活且強大的文本匹配規則。 以下是正則表達式中常用符號的重點整理: 字元類別 (Character Classes) [abc]: 匹配 a、b 或 c 中
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
古有四大名著,現今Python四大容器🤣 哪四個?list串列,tuple元組,dict字典,set集合。 那這四個怎麼分? 一起來看看吧! (以下有手寫與上機實際測試請付費觀看) 以上我精心整理主要會使用到的功能 當然python功能太多了,肯定不只。 實際操作: 大概就這樣?(
Thumbnail
繼「【🔒 Python實戰營 - Data Science 必修班】Pandas 資料清洗技 - 填補式」之後,我們已經學會怎麼填補空缺資料了,那這個章節我們來教您如何對某些欄位有條件的整形,有時候我們的資料來源某些欄位資料格式不一,甚至型態都不是正規統一的值,此時我們就需要針對這些值進行一些處理
Thumbnail
繼「【Google Colab Python系列】 資料處理神器 Pandas 起手式」之後,相信對於各位來說已經是小兒科了吧,沒關係! 我們今天來增加一點點小挑戰,你知道嗎? Pandas對於大部分人的第一印象就是「不就表格化而已,有什麼了不起?」、「幫我們整理格式轉換的介接器」...,但其實它不
Thumbnail
過往我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度, 需
Thumbnail
上一篇我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度
Thumbnail
我們都知道AI的模型訓練環節中, 最基礎也是最重要的一環就是「資料」了, 而「資料」要怎麼處理成訓練的養分也是一門重要的工程, 正好在Python的世界裡具有這麼一套神兵利器, 名為「Pandas」, 它是一個快速、強大、靈活且易於使用的開源數據分析和操作工具, 就讓我們好好的來認識一番吧! 乍聽
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
古有四大名著,現今Python四大容器🤣 哪四個?list串列,tuple元組,dict字典,set集合。 那這四個怎麼分? 一起來看看吧! (以下有手寫與上機實際測試請付費觀看) 以上我精心整理主要會使用到的功能 當然python功能太多了,肯定不只。 實際操作: 大概就這樣?(
Thumbnail
繼「【🔒 Python實戰營 - Data Science 必修班】Pandas 資料清洗技 - 填補式」之後,我們已經學會怎麼填補空缺資料了,那這個章節我們來教您如何對某些欄位有條件的整形,有時候我們的資料來源某些欄位資料格式不一,甚至型態都不是正規統一的值,此時我們就需要針對這些值進行一些處理
Thumbnail
繼「【Google Colab Python系列】 資料處理神器 Pandas 起手式」之後,相信對於各位來說已經是小兒科了吧,沒關係! 我們今天來增加一點點小挑戰,你知道嗎? Pandas對於大部分人的第一印象就是「不就表格化而已,有什麼了不起?」、「幫我們整理格式轉換的介接器」...,但其實它不
Thumbnail
過往我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度, 需
Thumbnail
上一篇我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度
Thumbnail
我們都知道AI的模型訓練環節中, 最基礎也是最重要的一環就是「資料」了, 而「資料」要怎麼處理成訓練的養分也是一門重要的工程, 正好在Python的世界裡具有這麼一套神兵利器, 名為「Pandas」, 它是一個快速、強大、靈活且易於使用的開源數據分析和操作工具, 就讓我們好好的來認識一番吧! 乍聽