利用Pandas庫進行簡單的資料規整
阿新 • • 發佈:2021-02-04
Pandas練習4-資料規整
練習題
練習1
練習2
練習3
練習4
練習1
程式碼
import pandas as pd
# Exercise 1
# 通過starbucks_store_worldwide.csv資料,分析星巴克在中國分佈多還是美國分佈多?
# 將 Country 設成 行索引 去匹配 CN(中國)和US(美國)
starbucks_data = pd.read_csv("starbucks_store_worldwide.csv" , index_col=["Country"])
# print(starbucks_data.columns)
# 通過上行程式碼得知 columns有 'Brand', 'Store Number', 'Store Name', 'Ownership Type',
# 'Street Address', 'City', 'State/Province', 'Postcode', 'Phone Number',
# 'Timezone', 'Longitude', 'Latitude'
# 利用Store Number來計算商店的數量 因為每一個星巴克有自己獨特的Store Number
China_number = starbucks_data.loc["CN"]["Store Number"].count()
USA_number = starbucks_data.loc["US"]["Store Number"].count()
print("中國星巴克的數量:", China_number)
print("美國星巴克的數量:", USA_number)
if China_number > USA_number:
print("星巴克在中國分佈多" )
elif China_number < USA_number:
print("星巴克在美國分佈多")
elif China_number == USA_number:
print("星巴克在中國和美國分佈一樣多")
print()
效果圖
練習2
程式碼
# Exercise 2
# 通過starbucks_store_worldwide.csv資料,獲取中國每個省份的分佈數量
starbucks_in_China_of_each_province = starbucks_data.loc["CN"].groupby(by="State/Province")["Store Number"].count()
details_starbucks_in_China = starbucks_data.loc["CN"].groupby(by=["State/Province", "City"])["Store Number"].count()
print("各個省份(省份由數字表示)星巴克的總數(前十個省份):")
print(starbucks_in_China_of_each_province.head(10))
print()
print("各個省份不同城市的星巴克數量:")
print(details_starbucks_in_China)
print()
效果圖
練習3
程式碼
# Exercise 3
# 將 學生成績表 與 選修成績表 進行水平拼接
# 將 名字 那一列設定為行索引
student_grades = pd.read_excel("學生成績表.xlsx", index_col=[0])
optional_courses_grades = pd.read_excel("選修成績表.xlsx", index_col=[0])
# 利用DataFrame的 join()方法做一個內連線即可
result_table = student_grades.join(optional_courses_grades, how="inner")
print(result_table)
print()
效果圖
練習4
程式碼
# Exercise 4
# 將 學生分配表.xlsx 和 老師排班表.xlsx 結合
# 需求:想在一張表中直觀的瞭解每一位同學對應的老師
# 把每個表格的行索引定位 班級
student_distributions = pd.read_excel("學生分配表.xlsx", index_col="班級")
teachers_classes = pd.read_excel("老師排班表.xlsx", index_col="班級")
# 使用merge()方法進行一個內連線即可
class_table = pd.merge(student_distributions, teachers_classes, on="班級", how="inner")
print(class_table)
效果圖
小結
- 分析一個檔案的資料時,首先要觀察資料來獲取可以利用的行索引和列索引。
- merge()和concat()是pandas的方法,join()是DataFrame的方法。
- 要靈活運用groupby(by=key)、索引以及分層索引去取值和將資料分組。