iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
Python

一起來用 Snakify 練練手系列 第 29

【一起來用 Snakify 練練手】Day29 python pandas 工具

  • 分享至 

  • xImage
  •  

Python pandas 入門

pandas 是 Python 中的一個強大的數據分析工具,專為數據處理和操作設計。pandas 允許我們以表格形式處理數據,類似於電子表格或 SQL 資料庫。它提供了兩種主要的數據結構:SeriesDataFrame,適合處理一維和二維數據。

1. 安裝 pandas

要使用 pandas,首先需要安裝該模組,可以使用以下指令:

pip install pandas

2. 主要數據結構

2.1 Series

Series 是一種一維數據結構,類似於一列數據,並且帶有索引。

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

2.2 DataFrame

DataFramepandas 中最常用的數據結構,類似於表格,每列是一個 Series。可以從字典、CSV 文件等創建。

data = {
    "Name": ["Alice", "Bob", "Charlie"],
    "Age": [25, 30, 35],
    "City": ["New York", "Los Angeles", "Chicago"]
}

df = pd.DataFrame(data)
print(df)

輸出:

      Name  Age         City
0    Alice   25     New York
1      Bob   30  Los Angeles
2  Charlie   35      Chicago

3. 導入數據

pandas 可以輕鬆地從各種數據來源(如 CSV、Excel、SQL)讀取數據。這裡介紹如何從 CSV 文件中導入數據。

3.1 從 CSV 文件讀取

df = pd.read_csv("data.csv")
print(df.head())  # 查看數據的前 5 行

3.2 寫入數據到 CSV 文件

df.to_csv("output.csv", index=False)

4. 基本數據操作

4.1 選擇列

可以通過列名稱來選擇某一列數據。

print(df["Name"])

4.2 選擇行

使用 lociloc 可以選擇特定行。

  • loc:根據標籤選擇。
  • iloc:根據索引位置選擇。
# 使用 loc 根據標籤選擇
print(df.loc[0])

# 使用 iloc 根據位置選擇
print(df.iloc[1])

4.3 基本統計操作

pandas 提供了許多統計函數,如 mean()sum()count() 等。

print(df["Age"].mean())  # 計算年齡的平均值

4.4 過濾數據

可以通過布林條件過濾數據。例如,篩選出年齡大於 30 的人。

filtered_df = df[df["Age"] > 30]
print(filtered_df)

5. 處理缺失值

數據中經常會有缺失值,可以使用 dropna() 來刪除缺失值,或者使用 fillna() 填補缺失值。

# 刪除包含缺失值的行
df.dropna(inplace=True)

# 用特定值填補缺失值
df.fillna(0, inplace=True)

6. 數據清理

6.1 處理重複值

可以使用 drop_duplicates() 方法來刪除重複的數據。

df.drop_duplicates(inplace=True)

6.2 處理缺失值

對於缺失數據,可以選擇刪除或填充。之前提到過 dropna(),這裡補充一下如何用平均值或中位數填充缺失值。

df["Age"].fillna(df["Age"].mean(), inplace=True)  # 用平均值填充

6.3 替換值

可以使用 replace() 函數將特定值替換為其他值。

df["City"].replace("New York", "NY", inplace=True)

7. 數據聚合與分組操作

7.1 分組操作 groupby()

可以使用 groupby() 對數據進行分組,並對每組數據執行聚合操作。

範例:按城市分組,並計算每個城市的平均年齡。

grouped = df.groupby("City")["Age"].mean()
print(grouped)

輸出:

City
Chicago         35
Los Angeles     30
NY              25
Name: Age, dtype: float64

7.2 多重聚合

agg() 方法允許對數據執行多種聚合操作。

agg_result = df.groupby("City").agg({"Age": ["mean", "max"], "Salary": "sum"})
print(agg_result)

8. 數據合併與連接

8.1 合併兩個 DataFrame

pandas 提供了 merge() 函數,可以類似 SQL 的方式合併兩個 DataFrame。

merged_df = pd.merge(df1, df2, on="ID")

8.2 合併(縱向)數據

可以使用 concat() 將多個 DataFrame 縱向拼接在一起。

concatenated_df = pd.concat([df1, df2])

9. 使用 pivot_table 進行數據透視

pivot_table() 可以用來創建數據透視表,它是一個強大的數據匯總工具,能夠根據多個維度進行數據聚合。

範例:創建一個按城市和性別進行平均薪水匯總的數據透視表。

pivot = df.pivot_table(values="Salary", index="City", columns="Gender", aggfunc="mean")
print(pivot)

10. 數據可視化

pandas 可以與 matplotlib 無縫集成,用於數據的快速可視化。

10.1 繪製折線圖

import matplotlib.pyplot as plt

df["Age"].plot(kind="line")
plt.show()

10.2 繪製柱狀圖

df["City"].value_counts().plot(kind="bar")
plt.show()

10.3 繪製直方圖

df["Salary"].plot(kind="hist", bins=10)
plt.show()

11. 動態數據生成與應用

可以使用 apply() 函數來對 DataFrame 中的數據進行動態操作。例如,創建一個新列來表示年齡的分類。

def categorize_age(age):
    if age < 30:
        return "Young"
    elif age < 40:
        return "Middle-aged"
    else:
        return "Senior"

df["Age Group"] = df["Age"].apply(categorize_age)
print(df)

總結

通過 pandas 操作,我們可以輕鬆地對數據進行清理、聚合、合併和可視化分析。pandas 的靈活性和強大的 API 讓它成為數據科學領域中不可或缺的工具。通過學習這些技術,你可以更有效地處理大規模的數據集,並為進一步的數據分析或機器學習奠定基礎。


上一篇
【一起來用 Snakify 練練手】Day28 python 的各種模組
下一篇
【一起來用 Snakify 練練手】Day30 常用工具總結
系列文
一起來用 Snakify 練練手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言