T編在日常工作中,常會遇到繁瑣且重複性高的工作,因此自動化處理數據的能力是必要的工具之一。Python的Pandas套件就提供了這樣的能力,它能處理各種數據,並且透過各種方法將數據轉換為有用的資訊。本文將會講解如何使用Pandas進行辦公室日程工作自動化,以及介紹一些常用到的函數。
零、Pandas 是什麼
Pandas是一個Python數據處理和分析庫,它專為解決數據處理問題而設計。Pandas提供了大量的功能,如讀寫數據、數據清洗、數據分析等等,並且能與Excel、CSV等常見的資料表格格式進行讀寫。
壹、常見的自動化應用
- 讀取和寫入Excel文件:一個常見的情況是需要從兩份不同的Excel讀取數據並將其合併,最終導出成一份新的Excel。以下是如何使用Pandas來實現這種任務的範例。
import pandas as pd # 引入套件
# 讀取Excel文件
df_sales = pd.read_excel('sales.xlsx') # 讀取銷售數據
df_products = pd.read_excel('products.xlsx') # 讀取產品資訊
Product_ID | Month | Sales |
1 | January | 100 |
2 | January | 200 |
1 | February | 150 |
2 | February | 250 |
1 | March | 300 |
2 | March | 350 |
Product_ID | Product |
1 | Apple |
2 | Orange |
- 分組並計算出各產品平均銷售額
grouped = df_sales.groupby('Product_ID')['Sales'].mean()
print(grouped)
output:
Product_ID
1 183.33
2 266.67
Name: Sales, dtype: float64
- 將兩個表格合併
# 根據 Product_ID 將 df_products 與 df_sales 兩個資料表進行合併
merged_df = pd.merge(df_products, df_sales, on='Product_ID')
merged_df
Product_ID | Product | Month | Sales | |
0 | 1 | Apple | January | 100 |
1 | 1 | Apple | February | 150 |
2 | 1 | Apple | March | 300 |
3 | 2 | Orange | January | 200 |
4 | 2 | Orange | February | 250 |
5 | 2 | Orange | March | 350 |
- 表格轉置:讓資料看起來更簡潔明瞭
# 使Product_ID作為索引值、月份作為欄位名稱、銷售額作為我們要使用的值
pivot_df = merged_df.pivot_table(index='Product_ID', columns='Month', values='Sales', aggfunc='sum')
pivot_df
Month | February | January | March |
Product | |||
Apple | 150 | 100 | 300 |
Orange | 250 | 200 | 350 |
- 匯出成Excel:將整理完的數據輸出成一份新的Excel
pivot_df.to_excel('final.xlsx')
貳、常用的函式整理
- 讀取與寫入數據:
read_csv()
可以讀取 CSV 檔案,而to_csv()
可以將數據寫入 CSV 檔案。
# 讀取 CSV 檔案
df = pd.read_csv('example.csv')
# 寫入 CSV 檔案
df.to_csv('output.csv', index=False)
- 數據查詢與選擇:
loc
和iloc
是兩個常用的方法,可以根據標籤或索引選擇數據。
# 使用標籤選擇數據
df.loc[df['column_name'] == 'value']
# 使用索引選擇數據
df.iloc[0]
- 數據處理:
dropna()
可以刪除含有 NaN 的行或列,fillna()
可以填充 NaN 值。
# 刪除含有 NaN 的行
df.dropna()
# 將 NaN 值填充為 0
df.fillna(0)
- 數據分析:
describe()
可以提供數據的統計摘要,groupby()
可以根據某些列的值進行數據分組。
# 獲取數據的統計摘要
df.describe()
# 根據某列的值分組
df.groupby('column_name').mean()
- 數據轉換:
apply()
可以對數據應用一個函數,merge()
可以根據一或多個鍵將不同的 DataFrame 合併。
# 對數據應用函數
df['column_name'].apply(lambda x: x**2)
# 合併兩個 DataFrame
pd.merge(df1, df2, on='common_column')
參、總結
以上簡單介紹了T編在使用 pandas 時較常用到的函式及功能,實務上還有更多更進階的應用可以對數據處理及分析有莫大的助益,以上僅為常用功能的其中一部分。有機會T編再與各位介紹如何透過 pandas 這個套件處裡更深入的辦公室應用,可以使我們平時重複性的工作變得自動化,增進工作上的效率。