[Python教學] Pandas & Matplotlib:讓數據變美麗的必備絕招

更新於 發佈於 閱讀時間約 9 分鐘

使用Python的Pandas和Matplotlib來讀取.csv檔案並進行資料可視化是一個常見的數據分析流程。以下是詳細的教學文章,將使用不同的公開資料集來展示如何繪製折線圖、柱狀圖、散點圖和圓餅圖。

環境準備

首先,確保您已安裝必要的Python庫。如果尚未安裝,可以使用以下命令:

pip install pandas matplotlib

讀取CSV檔案

1. 引入所需的模組

在開始之前,您需要引入Pandas和Matplotlib模組:

import pandas as pd
import matplotlib.pyplot as plt

2. 讀取資料集

以下是四個不同的公開資料集及其對應的CSV檔案URL:

  1. 折線圖:美國國家氣象局的氣溫資料集
    • URL: https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv
  2. 柱狀圖:世界銀行的國家GDP資料集
    • URL: https://raw.githubusercontent.com/datasets/gdp/master/data/gdp.csv
  3. 散點圖:Iris資料集
    • URL: https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data
  4. 圓餅圖:各國人口資料集
    • URL: https://raw.githubusercontent.com/datasets/population/master/data/population.csv

繪製圖表

3. 折線圖

我們將繪製美國國家氣象局的氣溫資料集中的乘客數量隨時間變化的折線圖:

import pandas as pd
import matplotlib.pyplot as plt

# 讀取氣溫資料集
url_temp = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv"
df_temp = pd.read_csv(url_temp)

# 繪製折線圖
plt.figure(figsize=(10, 6)) # 創建一個新的圖形,指定大小(寬度,高度)
plt.plot(df_temp['Month'], df_temp['Passengers'], marker='o') # 繪製 'Month' 為 x 軸,'Passengers' 為 y 軸,並使用圓形標記
plt.title('Monthly Airline Passengers') # 設定圖表的標題
plt.xlabel('Month') # 設定 x 軸的標籤
plt.ylabel('Number of Passengers') # 設定 y 軸的標籤
plt.xticks(rotation=450) # 將 x 軸標籤旋轉 45 度,以便更清晰地顯示
plt.grid()
plt.show()
raw-image


4. 柱狀圖

接下來,我們將繪製世界銀行的GDP資料集中各國GDP的柱狀圖:

import pandas as pd
import matplotlib.pyplot as plt

# 讀取GDP資料集
url_gdp = "https://raw.githubusercontent.com/datasets/gdp/master/data/gdp.csv"
df_gdp = pd.read_csv(url_gdp)

# 篩選前10個國家的GDP數據
top_gdp = df_gdp.groupby('Country Name')['Value'].last().nlargest(10)

# 繪製柱狀圖
plt.figure(figsize=(10, 6))
top_gdp.plot(kind='bar', color='skyblue')
plt.title('Top 10 Countries by GDP')
plt.xlabel('Country')
plt.ylabel('GDP (in USD)')
plt.xticks(rotation=45)
plt.show()
raw-image


5. 散點圖

接下來,我們將使用Iris資料集繪製花瓣長度與花瓣寬度之間的散點圖:

import pandas as pd
import matplotlib.pyplot as plt

# 讀取Iris資料集
url_iris = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
df_iris = pd.read_csv(url_iris, header=None, names=["sepal_length", "sepal_width", "petal_length", "petal_width", "species"])

# 繪製散點圖
plt.figure(figsize=(10, 6))
scatter = plt.scatter(df_iris['petal_length'], df_iris['petal_width'], c=df_iris['species'].astype('category').cat.codes, cmap='viridis') # c參數:將不同的花種 (species) 轉換為數字類別,並以顏色區分。cmap參數:指定顏色映射為 'viridis'。

plt.title('Scatter Plot of Petal Length vs Width')
plt.xlabel('Petal Length (cm)')
plt.ylabel('Petal Width (cm)')
legend1 = plt.legend(*scatter.legend_elements(), title="Species") # 為不同的花種創建圖例,圖例標題為 "Species"。 # scatter.legend_elements() 方法會自動生成對應於數據點顏色的圖例元素。
plt.gca().add_artist(legend1) # 將圖例添加到當前的軸對象中。
plt.grid()
plt.show()
raw-image


6. 圓餅圖

最後,我們將繪製各國人口資料集中各大洲人口比例的圓餅圖:

import pandas as pd
import matplotlib.pyplot as plt

# 讀取人口資料集
url_population = "https://raw.githubusercontent.com/datasets/population/master/data/population.csv"
df_population = pd.read_csv(url_population)

# 計算各大洲人口總和
continent_population = df_population.groupby('Country Name')['Value'].sum()

# 繪製圓餅圖
plt.figure(figsize=(8, 8))
plt.pie(continent_population, labels=continent_population.index, autopct='%1.1f%%', startangle=140)
plt.title('Population Distribution by Country')
plt.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle.
plt.show()
raw-image


小結

以上步驟展示了如何使用Pandas讀取不同公開資料集的.csv檔案並利用Matplotlib進行各種資料可視化。透過這些圖表,您可以更有效地分析和理解數據。根據需求,大家可以進一步調整參數和圖表類型,以探索和展示各種數據。

留言
avatar-img
留言分享你的想法!
avatar-img
追極光的北極熊|軟體工程師的小天地
9會員
158內容數
歡迎來到我的部落格!這裡記錄了軟體工程師的日常生活點滴,並分享程式設計與演算法的實用教學。無論你是初學者還是有經驗的開發者,都能在這裡找到深入淺出的技術解析與實戰技巧。此外,我也會分享工作中的心路歷程與學習心得,讓你不僅學到技術,更能瞭解軟體開發的實際應用與挑戰。希望透過這個平台,能與你共同成長,激發對技術的熱情!
2025/04/28
當我們開發程式時,功能能正常運作固然重要,但在資料量變大或執行時間變長時,效能就成為不可忽視的一環。尤其在 Web 應用、資料分析或科學運算中,程式跑得快與否,直接影響使用者體驗與系統成本。
2025/04/28
當我們開發程式時,功能能正常運作固然重要,但在資料量變大或執行時間變長時,效能就成為不可忽視的一環。尤其在 Web 應用、資料分析或科學運算中,程式跑得快與否,直接影響使用者體驗與系統成本。
2025/04/22
嘿,大家好!上篇教學文章我們做出了一個待辦事項清單,已經有點小工具的感覺了吧?今天我們要再升級,來做個「簡單記事本」。這個專案不只可以寫東西,還能存檔、讀檔,甚至換字體大小,感覺就像自己寫了個迷你軟體!
2025/04/22
嘿,大家好!上篇教學文章我們做出了一個待辦事項清單,已經有點小工具的感覺了吧?今天我們要再升級,來做個「簡單記事本」。這個專案不只可以寫東西,還能存檔、讀檔,甚至換字體大小,感覺就像自己寫了個迷你軟體!
2025/04/16
嘿,大家好!走到這一步,我們已經玩過 Tkinter 的基本招式、佈局、事件處理,還搞了些進階元件,應該有點信心了吧?今天我們要把這些功夫練成一套連招,來做個實用的「待辦事項清單」(To-Do List),順便聊聊怎麼把程式寫得更漂亮、更好用。準備好了嗎?這就上場啦!
2025/04/16
嘿,大家好!走到這一步,我們已經玩過 Tkinter 的基本招式、佈局、事件處理,還搞了些進階元件,應該有點信心了吧?今天我們要把這些功夫練成一套連招,來做個實用的「待辦事項清單」(To-Do List),順便聊聊怎麼把程式寫得更漂亮、更好用。準備好了嗎?這就上場啦!
看更多
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
本文將介紹如何利用Python進行資料分析並繪製圓餅圖。
Thumbnail
本文將介紹如何利用Python進行資料分析並繪製圓餅圖。
Thumbnail
本文介紹如何用Python繪製散布圖與迴歸線
Thumbnail
本文介紹如何用Python繪製散布圖與迴歸線
Thumbnail
這篇文章介紹如何使用Python整理資料成百分比資料以及繪製百分比堆疊直條圖。
Thumbnail
這篇文章介紹如何使用Python整理資料成百分比資料以及繪製百分比堆疊直條圖。
Thumbnail
透過分析臺灣好行的公開資料,分享如何用Python繪製折線圖
Thumbnail
透過分析臺灣好行的公開資料,分享如何用Python繪製折線圖
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
Hi, 大家好。我是茶桁。 在上一节课中,我们结束了Python正式的所有内容,但是咱们的Python课程还未结束。从这节课开始,我们要来学习一下Python的第三方库。 Python的生态非常完善也非常活跃,我们不太可能讲目前所有的第三方库全部都介绍一遍,只介绍几个有影响力并且和处理数据相关的
Thumbnail
Hi, 大家好。我是茶桁。 在上一节课中,我们结束了Python正式的所有内容,但是咱们的Python课程还未结束。从这节课开始,我们要来学习一下Python的第三方库。 Python的生态非常完善也非常活跃,我们不太可能讲目前所有的第三方库全部都介绍一遍,只介绍几个有影响力并且和处理数据相关的
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News