Pandas

函式庫介紹系列 -2

上週我們介紹了 Matplotlib

其中用到的基礎函式庫包含 NumPy 

而今天介紹的Pandas 也是NumPy的另一個應用

先複習一下

Pandas ? 

Pandas ? 

Pandas 是 Python 最重要的資料處理與分析工具,名稱來自 "Panel Data"(跨時間的結構化資料),由 Wes McKinney 開發。 它提供兩個核心資料結構: Series:一維的資料列(類似 list) DataFrame:二維表格資料結構(像 Excel + SQL 的合體)

Data cleaning / cleansing

資料清理

Data Cleaning 指的是從原始資料中識別並修正、移除不完整、不準確或不一致的資料的過程。目的在於提高資料的品質及完整度,從而確保後續資料分析及模型建立可以基於高品質的資料進行。

Data cleaning / cleansing

資料清理

優點包含:

減少錯誤

縮短開發時間

提升決策效果

pd.Series

import pandas as pd

s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])  # 建立pd.Series
print(s)

print(s['a'])       # 取出 a 索引值 
print(s.mean())     # 計算平均 
print(s + 5)        # 每個元素加 
import pandas as pd

a = [1, 7, 2]

myvar = pd.Series(a, index = ["x", "y", "z"])

print(myvar)

創建 Labels 

# 用 label 找資料
print(myvar["y"])

還記得 Python 的 Dictionary 嗎(字典)

Key / Value for pd.Series

import pandas as pd

calories = {"day1": 420, "day2": 380, "day3": 390}

myvar = pd.Series(calories, index = ["day1", "day2"])

print(myvar)

pd.DataFrame

DataFrame 是 pandas 的另一種資料結構

是二維表格

類似 Excel 的概念。

# 建立方法一
data = {
    'Name': ['Amy', 'Ben', 'Cara'],
    'Age': [22, 24, 23],
    'Score': [85, 90, 88]
}
df = pd.DataFrame(data)

# 建立方法二(用Series)
s1 = pd.Series(['Amy', 'Ben', 'Cara'])
s2 = pd.Series([22, 24, 23])
s3 = pd.Series([85, 90, 88])
df = pd.DataFrame({'Name':s1 ,'Age':s2, 'Score':s3})
print(df)
print(df.loc[0])
print(df.loc[[0,1]])
import pandas as pd

data = {
  "calories": [420, 380, 390],
  "duration": [50, 40, 45]
}

df = pd.DataFrame(data, index = ["day1", "day2", "day3"])

print(df) 
import pandas as pd

df = pd.read_csv('data.csv')

print(df) 

Load .csv

application

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 1. Create a dummy dataset
data = {
    'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    'Revenue': [15000, 18000, 12000, 22000, 25000, 23000, 28000, 31000, 29000, 35000, 42000, 48000],
    'Expenses': [12000, 14000, 13000, 15000, 16000, 18000, 19000, 20000, 18500, 22000, 25000, 27000]
}

df = pd.DataFrame(data)

# 2. Calculate Profit (Pandas logic)
df['Profit'] = df['Revenue'] - df['Expenses']

# 3. Create the Visualization
plt.figure(figsize=(10, 6))

# Use pandas' built-in wrapper for matplotlib
plt.plot(df['Month'], df['Revenue'], marker='o', label='Revenue', color='#2E86C1', linewidth=2)
plt.plot(df['Month'], df['Profit'], marker='s', label='Profit', color='#28B463', linewidth=2)

# 4. Customizing with Matplotlib
plt.title('Annual Financial Performance', fontsize=16, fontweight='bold')
plt.xlabel('Month', fontsize=12)
plt.ylabel('Amount (USD $)', fontsize=12)
plt.grid(True, linestyle='--', alpha=0.7)
plt.legend()

# Show the plot
plt.tight_layout()
plt.show()

by Gemini 

Pandas 可以跟很多其他函式庫混著用