2020年1月20日 星期一

Python學習筆記-Pandas讀取107學年度大專校院公開資訊,依需求統計各項資料!!

線上讀取大專校院科系人數

In [1]:
import pandas as pd
url="http://stats.moe.gov.tw/files/detail/107/107_students.csv"
df = pd.read_csv(url)
df.head()
Out[1]:
學校代碼學校名稱科系代碼科系名稱日間∕進修別等級別一年級男生一年級女生二年級男生二年級女生...五年級男生五年級女生六年級男生六年級女生七年級男生七年級女生延修生男生延修生女生縣市名稱體系別
01國立政治大學01111001教育學系D 日D 博士913616...6575320030 臺北市1 一般
11國立政治大學01111001教育學系D 日M 碩士610113...0000000030 臺北市1 一般
21國立政治大學01111001教育學系D 日B 學士16411439...00000051430 臺北市1 一般
31國立政治大學01114005教育行政與政策研究所D 日M 碩士71255...0000000030 臺北市1 一般
41國立政治大學01114006學校行政碩士在職專班N 職M 碩士517514...2500000030 臺北市1 一般
5 rows × 24 columns

順利讀取資料後,先列出欄位名稱

In [2]:
df.columns
Out[2]:
Index(['學校代碼', '學校名稱', '科系代碼', '科系名稱', '日間∕進修別', '等級別', '一年級男生', '一年級女生',
       '二年級男生', '二年級女生', '三年級男生', '三年級女生', '四年級男生', '四年級女生', '五年級男生', '五年級女生',
       '六年級男生', '六年級女生', '七年級男生', '七年級女生', '延修生男生', '延修生女生', '縣市名稱', '體系別'],
      dtype='object')

如何知道總共有多少間學校呢?

基本上就從學校代碼和學校名稱來操作,相同的只保留一個,就能計算出有多少間學校了

In [3]:
df['學校代碼'].drop_duplicates().count()
Out[3]:
153
In [4]:
df['學校名稱'].drop_duplicates().count()
Out[4]:
153

如果想知道大學校院總共有多少科系呢?

以科系名稱來說,答案是107學年度時,總共有3527個科系

In [5]:
df['科系名稱'].drop_duplicates().count()
Out[5]:
3527

至於在教育部的分類中,全國總共有多少個類別科系呢?

答案是2730

In [6]:
df['科系代碼'].drop_duplicates().count()
Out[6]:
2730

可以看一下教育相關的科系代碼是01111001,有不少間學校都有這個科系代碼

In [7]:
df[df['科系代碼'] == '01111001']
Out[7]:
學校代碼學校名稱科系代碼科系名稱日間∕進修別等級別一年級男生一年級女生二年級男生二年級女生...五年級男生五年級女生六年級男生六年級女生七年級男生七年級女生延修生男生延修生女生縣市名稱體系別
01國立政治大學01111001教育學系D 日D 博士913616...6575320030 臺北市1 一般
11國立政治大學01111001教育學系D 日M 碩士610113...0000000030 臺北市1 一般
21國立政治大學01111001教育學系D 日B 學士16411439...00000051430 臺北市1 一般
6204國立臺灣師範大學01111001教育學系D 日D 博士5589...3975470030 臺北市3 師範
6214國立臺灣師範大學01111001教育學系D 日M 碩士516421...0000000030 臺北市3 師範
..................................................................
66561027慈濟大學01111001教育研究所中等學校教師在職進修教學碩士學位班N 職M 碩士00114...1200000015 花蓮縣1 一般
87561067台灣首府大學01111001教育研究所D 日M 碩士21428...0000000011 臺南市1 一般
97653002臺北市立大學01111001教育學系D 日D 博士31138...3113711240030 臺北市1 一般
97663002臺北市立大學01111001教育學系D 日M 碩士06112...3023000030 臺北市1 一般
97673002臺北市立大學01111001教育學系D 日B 學士11511643...00000021430 臺北市1 一般
92 rows × 24 columns

接下來看一下政治大學學士班的統計資料

In [8]:
df[(df['學校代碼'] == 1) & (df['等級別']== 'B 學士') ].sum()
Out[8]:
學校代碼                                                     37
學校名稱      國立政治大學國立政治大學國立政治大學國立政治大學國立政治大學國立政治大學國立政治大學國立政治...
科系代碼      0111100102221020022220310223102202311009023110...
科系名稱      教育學系歷史學系民族學系哲學系英國語文學系日本語文學系阿拉伯語文學系韓國語文學系土耳其語文學...
日間∕進修別    D 日D 日D 日D 日D 日D 日D 日D 日D 日D 日D 日D 日D 日D 日D 日D...
等級別       B 學士B 學士B 學士B 學士B 學士B 學士B 學士B 學士B 學士B 學士B 學士B ...
一年級男生                                                   899
一年級女生                                                  1287
二年級男生                                                   890
二年級女生                                                  1332
三年級男生                                                   878
三年級女生                                                  1325
四年級男生                                                   990
四年級女生                                                  1240
五年級男生                                                     0
五年級女生                                                     0
六年級男生                                                     0
六年級女生                                                     0
七年級男生                                                     0
七年級女生                                                     0
延修生男生                                                   326
延修生女生                                                   463
縣市名稱      30 臺北市30 臺北市30 臺北市30 臺北市30 臺北市30 臺北市30 臺北市30 臺...
體系別       1 一般1 一般1 一般1 一般1 一般1 一般1 一般1 一般1 一般1 一般1 一般1 ...
dtype: object

如果要知道政治大學學士班的學生數,就可以如下統計:

學生數為9630人。

In [9]:
undergraduate = df[(df['學校代碼'] == 1) & (df['等級別']== 'B 學士') ].sum()
undergraduate['一年級男生':'延修生女生'].sum()
Out[9]:
9630

【公告】網站遷移,未來內容將發表於新網站!!

 受限於blogger本身架構與限制,本網站所有內容已遷移至新網站,網址如下: https://kuo.us.to/wordpress/