[Python教學] Pandas:資料處理的利器

更新於 2024/12/20閱讀時間約 8 分鐘

Pandas 是 Python 的一個強大數據操作與分析庫。它提供高效且靈活的資料結構,如 SeriesDataFrame,適合用於資料清理、操作及分析。在本教學中,我們將深入探討 Pandas 的核心功能,並以範例展示如何進行資料處理。


1. Pandas 安裝與載入

如果尚未安裝 Pandas,可以使用 pip 進行安裝:

pip install pandas

安裝完成後,導入 Pandas:

import pandas as pd

2. Pandas 的核心資料結構

2.1 Series

Series 是一維的資料結構,類似於 Python 的 List 或 NumPy 的一維陣列,但具有索引。

import pandas as pd

# 建立 Series
data = pd.Series([10, 20, 30, 40], index=['A', 'B', 'C', 'D'])
print(data)

輸出:

A    10
B 20
C 30
D 40
dtype: int64

基本操作:

# 取值
print(data['A']) # 10

# 過濾
print(data[data > 20]) # 篩選值大於 20 的元素

# 運算
print(data + 5) # 每個元素加 5

2.2 DataFrame

DataFrame 是二維的資料結構,可以視為資料表格式。它是 Pandas 的核心資料結構。

# 建立 DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Salary': [50000, 60000, 70000]
}
df = pd.DataFrame(data)
print(df)

輸出:

      Name  Age  Salary
0 Alice 25 50000
1 Bob 30 60000
2 Charlie 35 70000

3. 讀取與匯出資料

Pandas 支援多種資料格式的讀取與匯出,包括 CSV、Excel、JSON 等。

3.1 讀取資料

# 從 CSV 檔案讀取資料
df = pd.read_csv('data.csv')

# 從 Excel 檔案讀取資料
df = pd.read_excel('data.xlsx')

3.2 匯出資料

# 匯出為 CSV
df.to_csv('output.csv', index=False)

# 匯出為 Excel
df.to_excel('output.xlsx', index=False)

4. 資料檢視與摘要

檢視資料的結構與內容是資料分析的第一步。

4.1 基本資訊

print(df.head())       # 顯示前 5 筆資料
print(df.tail()) # 顯示後 5 筆資料
print(df.info()) # 顯示資料摘要
print(df.describe()) # 顯示數值欄位的統計摘要

4.2 檢查資料

print(df.columns)       # 查看欄位名稱
print(df.shape) # 查看資料維度 (列數, 欄數)
print(df.isnull().sum()) # 檢查缺失值

5. 資料清理

資料清理是分析過程中的重要步驟,包含處理缺失值、重命名欄位、刪除重複值等。

5.1 處理缺失值

# 填補缺失值
df['Age'].fillna(df['Age'].mean(), inplace=True) # 填補為平均值

# 刪除包含缺失值的列
df = df.dropna()

5.2 重命名欄位

df.rename(columns={'Name': 'Employee Name'}, inplace=True)

5.3 刪除重複值

df = df.drop_duplicates()

6. 資料篩選與操作

6.1 篩選資料

# 篩選特定條件
filtered_df = df[df['Age'] > 30]

# 篩選多條件
filtered_df = df[(df['Age'] > 25) & (df['Salary'] > 50000)]

6.2 新增與刪除欄位

# 新增欄位
df['Bonus'] = df['Salary'] * 0.1

# 刪除欄位
df.drop(columns=['Bonus'], inplace=True)

6.3 排序資料

# 依據某欄位排序
df.sort_values(by='Age', ascending=False, inplace=True)

7. 資料聚合與分組

Pandas 提供強大的分組與聚合功能,能輕鬆實現統計分析。

7.1 分組與聚合

# 按 'Department' 分組,並計算平均薪水
grouped = df.groupby('Department')['Salary'].mean()
print(grouped)

7.2 樞紐分析

# 建立樞紐表
pivot = pd.pivot_table(df, values='Salary', index='Department', columns='Gender', aggfunc='mean')
print(pivot)

8. 使用 Pandas 處理時間序列

Pandas 對時間序列資料提供良好支援。

# 將資料轉為日期型別
df['Date'] = pd.to_datetime(df['Date'])

# 篩選特定日期範圍
filtered_df = df[(df['Date'] > '2023-01-01') & (df['Date'] < '2023-12-31')]

9. Pandas 高效操作技巧

9.1 使用 Apply 函數

# 自訂函數應用於某欄位
df['Salary After Tax'] = df['Salary'].apply(lambda x: x * 0.8)

9.2 資料合併

# 左連接 (Left Join)
merged_df = pd.merge(df1, df2, on='Employee ID', how='left')

10. 小結

Pandas 是 Python 資料處理的強大工具,適合處理結構化數據。以下是使用 Pandas 的建議:

  1. 熟悉 SeriesDataFrame 結構。
  2. 掌握資料清理、篩選、分組、聚合等基本操作。
  3. 利用 Pandas 與視覺化工具(如 Matplotlib、Seaborn)結合進行資料分析與展示。

Pandas 是一個靈活且高效的資料處理工具,透過多練習與實戰,將能夠快速掌握資料處理技能,並應用於多種場景。

歡迎來到我的部落格!這裡記錄了軟體工程師的日常生活點滴,並分享程式設計與演算法的實用教學。無論你是初學者還是有經驗的開發者,都能在這裡找到深入淺出的技術解析與實戰技巧。此外,我也會分享工作中的心路歷程與學習心得,讓你不僅學到技術,更能瞭解軟體開發的實際應用與挑戰。希望透過這個平台,能與你共同成長,激發對技術的熱情!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
在這篇文章中,我們將深入探討 Python 中的非同步程式設計,特別是使用 asyncio 模組來實現事件循環和協程。這將幫助你理解如何在 I/O 密集型任務中提高效率,並充分利用 Python 的非同步特性。
在這篇文章中,我們將深入探討 Python 中的平行程式設計,特別是使用 threading 和 multiprocessing 模組來實現多執行緒和多進程的應用。這些技術可以幫助我們充分利用現代 CPU 的多核心架構,提高程式的執行效率。
在 Python 中,生成器與裝飾器是兩個非常強大的特性,分別讓我們能更高效地處理數據流和更靈活地擴展函數的功能。
這篇文章是在解說上一篇文章:[Python教學] 進階:函數式程式設計 的課後練習的題目的解答,如果還沒看過上一篇文章的話建議可以先行前往閱讀!
在這篇文章中,我們將深入介紹 Python 中的高階函數、匿名函數(lambda)、以及一些常用的高階函數工具如 map()、filter()、reduce()。這些概念和工具讓程式碼更加精簡並具有較高的可讀性和靈活性,是編寫 Python 程式碼的重要技巧。
在這篇文章中,我們將深入探討 Python 中的非同步程式設計,特別是使用 asyncio 模組來實現事件循環和協程。這將幫助你理解如何在 I/O 密集型任務中提高效率,並充分利用 Python 的非同步特性。
在這篇文章中,我們將深入探討 Python 中的平行程式設計,特別是使用 threading 和 multiprocessing 模組來實現多執行緒和多進程的應用。這些技術可以幫助我們充分利用現代 CPU 的多核心架構,提高程式的執行效率。
在 Python 中,生成器與裝飾器是兩個非常強大的特性,分別讓我們能更高效地處理數據流和更靈活地擴展函數的功能。
這篇文章是在解說上一篇文章:[Python教學] 進階:函數式程式設計 的課後練習的題目的解答,如果還沒看過上一篇文章的話建議可以先行前往閱讀!
在這篇文章中,我們將深入介紹 Python 中的高階函數、匿名函數(lambda)、以及一些常用的高階函數工具如 map()、filter()、reduce()。這些概念和工具讓程式碼更加精簡並具有較高的可讀性和靈活性,是編寫 Python 程式碼的重要技巧。
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
本文探討了在使用 pandas 處理資料時應注意的幾個關鍵點,以及如何減少因資料型態問題而產生的錯誤,確保資料的原始意義得以保留。主要包括Pandas 資料處理深入解析,尋找CSV之外的數據儲存方案,以及優化資料處理策略。
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表為基礎,融合不同的資料欄位。 以product作為index,融合quarter_1,quarter_2,quarter_3,quarter_4 這四個欄位,並且重新命名為quarter,並且將數值欄位名稱重
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們回傳資料表的前3個Row。 題目的原文敘述 測試範例 Example 1: Input: DataFrame employees +-------------+-----------+-------------
Thumbnail
題目敘述 題目會給定一個python list形式的輸入,要求我們把它轉換成pandas dataframe的形式做輸出。並且指定column名稱分別為student_id, 和 age 題目的原文敘述 測試範例
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
本文探討了在使用 pandas 處理資料時應注意的幾個關鍵點,以及如何減少因資料型態問題而產生的錯誤,確保資料的原始意義得以保留。主要包括Pandas 資料處理深入解析,尋找CSV之外的數據儲存方案,以及優化資料處理策略。
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表為基礎,融合不同的資料欄位。 以product作為index,融合quarter_1,quarter_2,quarter_3,quarter_4 這四個欄位,並且重新命名為quarter,並且將數值欄位名稱重
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們回傳資料表的前3個Row。 題目的原文敘述 測試範例 Example 1: Input: DataFrame employees +-------------+-----------+-------------
Thumbnail
題目敘述 題目會給定一個python list形式的輸入,要求我們把它轉換成pandas dataframe的形式做輸出。並且指定column名稱分別為student_id, 和 age 題目的原文敘述 測試範例