Python學習筆記-Pandas批次讀取105-108學年度大專校院學生人數,統計各學年度學校合計學生數!!

import pandas as pd
import os
path = os.getcwd()

"""
相關檔案可參考以下網址下載:
https://depart.moe.edu.tw/ED4500/News_Content.aspx?n=5A930C32CC6C3818&sms=91B3AAE8C6388B96&s=596D9D77281BE257
"""
# List files:
files = os.listdir(path)

# 印出目錄下所有檔案名稱
print(files)

# 選擇檔案名稱第4-10碼為「student」的檔案
files_xls = [f for f in files if f[4:11] == 'student']
print(files_xls)
['105_student.xls', '106_student.xls', '107_student.xls', '108_student.xls']
In [2]:
df = pd.DataFrame()
for f in files_xls:
    # 批次讀入excel檔,從第3列開始

data = pd.read_excel(f, skiprows = 2)

    # 新增「學年」欄位

data['學年'] = int(f[:3]) df = df.append(data)df

Out[2]:
學校代碼 學校名稱 日間∕進修別 等級別 總計 男生計 女生計 一年級男生 一年級女生 二年級男生 五年級女生 六年級男生 六年級女生 七年級男生 七年級女生 延修生男生 延修生女生 縣市名稱 體系別 學年
0 1 國立政治大學 D 日 D 博士 981 605 376 113 66 91 48 84 40 64 33 30 臺北市 1 一般 105
1 1 國立政治大學 D 日 M 碩士 3962 1808 2154 617 755 622 30 臺北市 1 一般 105
2 1 國立政治大學 D 日 B 學士 9711 3912 5799 872 1347 1017 327 455 30 臺北市 1 一般 105
3 1 國立政治大學 N 職 M 碩士 1718 882 836 281 297 261 30 30 臺北市 1 一般 105
4 2 國立清華大學 D 日 D 博士 1645 1264 381 235 83 205 46 125 43 173 54 18 新竹市 1 一般 105
789 1293 崇仁醫護管理專科學校 D 日 5 五專 3330 410 2920 81 584 87 564 11 44 10 嘉義縣 2 技職 108
790 3002 臺北市立大學 D 日 D 博士 234 101 133 14 19 14 15 10 17 19 30 30 臺北市 1 一般 108
791 3002 臺北市立大學 D 日 M 碩士 1215 420 795 156 242 105 37 12 27 30 臺北市 1 一般 108
792 3002 臺北市立大學 D 日 B 學士 5270 2335 2935 569 738 527 166 140 30 臺北市 1 一般 108
793 3002 臺北市立大學 N 職 M 碩士 1090 298 792 107 274 87 44 15 25 30 臺北市 1 一般 108

3295 rows × 26 columns

In [3]:
df = df[['學校代碼', '學年', '學校名稱', '等級別', '總計']]
df.head()
Out[3]:
學校代碼 學年 學校名稱 等級別 總計
0 1 105 國立政治大學 D 博士 981
1 1 105 國立政治大學 M 碩士 3962
2 1 105 國立政治大學 B 學士 9711
3 1 105 國立政治大學 M 碩士 1718
4 2 105 國立清華大學 D 博士 1645
In [4]:
df = df.groupby(['學校代碼', '學校名稱', '學年']).sum()
df
Out[4]:
總計
學校代碼 學校名稱 學年
1 國立政治大學 105 16372
106 16353
107 16343
108 16390
2 國立清華大學 105 12466
1293 崇仁醫護管理專科學校 108 3330
3002 臺北市立大學 105 7631
106 7675
107 7774
108 7809

620 rows × 1 columns

In [5]:
df = df.unstack(2)
df
Out[5]:
總計
學年 105 106 107 108
學校代碼 學校名稱
1 國立政治大學 16372.0 16353.0 16343.0 16390.0
2 國立清華大學 12466.0 16664.0 16657.0 16678.0
3 國立臺灣大學 31783.0 31802.0 31745.0 31945.0
4 國立臺灣師範大學 15307.0 15426.0 15582.0 15716.0
5 國立成功大學 21119.0 21252.0 21276.0 21456.0
1290 崇仁醫護管理專科學校 3478.0 3503.0 NaN NaN
1291 聖母醫護管理專科學校 3525.0 3155.0 2777.0 2561.0
1292 新生醫護管理專科學校 6022.0 6024.0 6058.0 6031.0
1293 崇仁醫護管理專科學校 NaN NaN 3392.0 3330.0
3002 臺北市立大學 7631.0 7675.0 7774.0 7809.0

164 rows × 4 columns

In [ ]:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *