學生在填寫資料時,常常以系所簡稱來填寫。本段程式主要以系所簡稱比對系所正確名稱,代入系所正確名稱
本案以中原大學系所為範例
In [1]:
import pandas as pd
# 讀取系所簡稱資料
df1 = pd.read_excel('110624_系所簡稱_判斷系所正確名稱.xlsx', sheet_name='系所簡稱')
print(len(df1))
print(df1.columns)
print(df1.info())
df1
33
Index(['系所簡稱'], dtype='object')
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 33 entries, 0 to 32
Data columns (total 1 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 系所簡稱 33 non-null object
dtypes: object(1)
memory usage: 392.0+ bytes
None
Out[1]:
Property | 系所簡稱 |
---|---|
0 | 師培中心 |
1 | 通識中心 |
2 | 機械系 |
3 | 工工系 |
4 | 心理系 |
5 | 環工系 |
6 | 國際學程 |
7 | 企管系 |
8 | 財金系 |
9 | 天普學程 |
10 | 外文系 |
11 | 電機系 |
12 | 財法系 |
13 | 特教系 |
14 | 生醫系 |
15 | 電子系 |
16 | 資工系 |
17 | 國貿系 |
18 | 會計系 |
19 | 資管系 |
20 | 室內設計系 |
21 | 商設系 |
22 | 設計原民班 |
23 | 華語系 |
24 | 應數系 |
25 | 化工系 |
26 | 土木系 |
27 | 密爾瓦基學程 |
28 | 物理系 |
29 | 生技系 |
30 | 不分系 |
31 | 人文與教育學程 |
32 | 電資學士班 |
In [2]:
# 讀取系所正確名稱資料
df2 = pd.read_excel('110624_系所簡稱_判斷系所正確名稱.xlsx', sheet_name='系所名稱')
print(len(df2))
print(df2.columns)
print(df2.info())
df2
37
Index(['系所名稱'], dtype='object')
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 37 entries, 0 to 36
Data columns (total 1 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 系所名稱 37 non-null object
dtypes: object(1)
memory usage: 424.0+ bytes
None
Out[2]:
Property | 系所名稱 |
---|---|
0 | 師資培育中心 |
1 | 通識教育中心 |
2 | 機械工程學系 |
3 | 工業與系統工程學系 |
4 | 化學系 |
5 | 心理學系 |
6 | 環境工程學系 |
7 | 國際商學學士學位學程 |
8 | 企業管理學系 |
9 | 財務金融學系 |
10 | 中原大學與美國天普大學商學管理雙學士學位學程 |
11 | 應用外國語文學系 |
12 | 電機工程學系 |
13 | 財經法律學系 |
14 | 特殊教育學系 |
15 | 生物醫學工程學系 |
16 | 電子工程學系 |
17 | 資訊工程學系 |
18 | 國際經營與貿易學系 |
19 | 會計學系 |
20 | 資訊管理學系 |
21 | 建築學系 |
22 | 室內設計學系 |
23 | 商業設計學系 |
24 | 設計學士原住民專班 |
25 | 地景建築學系 |
26 | 應用華語文學系 |
27 | 應用數學系 |
28 | 化學工程學系 |
29 | 土木工程學系 |
30 | 電機資訊學院人工智慧應用學士學位學程 |
31 | 中原大學美國威大密爾瓦基分校電機與資訊工程雙學士學位學程 |
32 | 物理學系 |
33 | 生物科技學系 |
34 | 全校外籍生大一不分系學士學位學程 |
35 | 人文與教育學院學士學位學程 |
36 | 電機資訊學院學士班 |
In [3]:
final = [] # 儲存最後檢核結果for i in df1['系所簡稱']:
target_count = 0
target = []
for j in df2['系所名稱']:
match = set(list(i)) & set(list(j)) # 比對系所簡稱和系所名稱後,找出相同的字元
temp_target = j
temp_count = len(match)
if temp_count == 0 : # 如果比對後,完全不相同,就找一個系所名稱繼續做
continue
elif temp_count > target_count: # 如果比對後,相同的字元數大於原先target中的字元數,則target內容被取代
target = [temp_target]
target_count = temp_count
elif temp_count == target_count: # 如果比對後,相同的字元數與原先target中的字元數一樣,則target內容再增加temp_target的內容
target.append(temp_target)
final.append(target) # 把target的內容新增到final中print(final)
Out[3]:
[['師資培育中心'], ['通識教育中心'], ['機械工程學系'], ['機械工程學系', '工業與系統工程學系', '環境工程學系', '電機工程學系', '生物醫學工程學系', '電子工程學系', '資訊工程學系', '化學工程學系', '土木工程學系'], ['心理學系'], ['環境工程學系'], ['國際商學學士學位學程'], ['企業管理學系'], ['財務金融學系'], ['中原大學與美國天普大學商學管理雙學士學位學程'], ['應用外國語文學系'], ['電機工程學系'], ['財經法律學系'], ['特殊教育學系'], ['生物醫學工程學系'], ['電子工程學系'], ['資訊工程學系'], ['國際經營與貿易學系'], ['會計學系'], ['資訊管理學系'], ['室內設計學系'], ['商業設計學系'], ['設計學士原住民專班'], ['應用華語文學系'], ['應用數學系'], ['化學工程學系'], ['土木工程學系'], ['中原大學美國威大密爾瓦基分校電機與資訊工程雙學士學位學程'], ['物理學系'], ['生物科技學系'], ['全校外籍生大一不分系學士學位學程'], ['人文與教育學院學士學位學程'], ['電機資訊學院學士班']]
In [4]:
df1['檢核判斷'] = [','.join(map(str, l)) for l in final] # 將final的list轉換成df1['檢核判斷']
df1
Out[4]:
Property | 系所簡稱 | 檢核判斷 |
---|---|---|
0 | 師培中心 | 師資培育中心 |
1 | 通識中心 | 通識教育中心 |
2 | 機械系 | 機械工程學系 |
3 | 工工系 | 機械工程學系,工業與系統工程學系,環境工程學系,電機工程學系,生物醫學工程學系,電子工程學系... |
4 | 心理系 | 心理學系 |
5 | 環工系 | 環境工程學系 |
6 | 國際學程 | 國際商學學士學位學程 |
7 | 企管系 | 企業管理學系 |
8 | 財金系 | 財務金融學系 |
9 | 天普學程 | 中原大學與美國天普大學商學管理雙學士學位學程 |
10 | 外文系 | 應用外國語文學系 |
11 | 電機系 | 電機工程學系 |
12 | 財法系 | 財經法律學系 |
13 | 特教系 | 特殊教育學系 |
14 | 生醫系 | 生物醫學工程學系 |
15 | 電子系 | 電子工程學系 |
16 | 資工系 | 資訊工程學系 |
17 | 國貿系 | 國際經營與貿易學系 |
18 | 會計系 | 會計學系 |
19 | 資管系 | 資訊管理學系 |
20 | 室內設計系 | 室內設計學系 |
21 | 商設系 | 商業設計學系 |
22 | 設計原民班 | 設計學士原住民專班 |
23 | 華語系 | 應用華語文學系 |
24 | 應數系 | 應用數學系 |
25 | 化工系 | 化學工程學系 |
26 | 土木系 | 土木工程學系 |
27 | 密爾瓦基學程 | 中原大學美國威大密爾瓦基分校電機與資訊工程雙學士學位學程 |
28 | 物理系 | 物理學系 |
29 | 生技系 | 生物科技學系 |
30 | 不分系 | 全校外籍生大一不分系學士學位學程 |
31 | 人文與教育學程 | 人文與教育學院學士學位學程 |
32 | 電資學士班 | 電機資訊學院學士班 |
In [5]:
df1.loc[df1['檢核判斷'].str.split(',').apply(len)>3, '檢核判斷'] = "" # 如果df1['檢核判斷']中超過3個遏號,表示太多一樣,將內容取代為NaN,未來採人工判斷
df1
Out[5]:
Property | 系所簡稱 | 檢核判斷 |
---|---|---|
0 | 師培中心 | 師資培育中心 |
1 | 通識中心 | 通識教育中心 |
2 | 機械系 | 機械工程學系 |
3 | 工工系 | |
4 | 心理系 | 心理學系 |
5 | 環工系 | 環境工程學系 |
6 | 國際學程 | 國際商學學士學位學程 |
7 | 企管系 | 企業管理學系 |
8 | 財金系 | 財務金融學系 |
9 | 天普學程 | 中原大學與美國天普大學商學管理雙學士學位學程 |
10 | 外文系 | 應用外國語文學系 |
11 | 電機系 | 電機工程學系 |
12 | 財法系 | 財經法律學系 |
13 | 特教系 | 特殊教育學系 |
14 | 生醫系 | 生物醫學工程學系 |
15 | 電子系 | 電子工程學系 |
16 | 資工系 | 資訊工程學系 |
17 | 國貿系 | 國際經營與貿易學系 |
18 | 會計系 | 會計學系 |
19 | 資管系 | 資訊管理學系 |
20 | 室內設計系 | 室內設計學系 |
21 | 商設系 | 商業設計學系 |
22 | 設計原民班 | 設計學士原住民專班 |
23 | 華語系 | 應用華語文學系 |
24 | 應數系 | 應用數學系 |
25 | 化工系 | 化學工程學系 |
26 | 土木系 | 土木工程學系 |
27 | 密爾瓦基學程 | 中原大學美國威大密爾瓦基分校電機與資訊工程雙學士學位學程 |
28 | 物理系 | 物理學系 |
29 | 生技系 | 生物科技學系 |
30 | 不分系 | 全校外籍生大一不分系學士學位學程 |
31 | 人文與教育學程 | 人文與教育學院學士學位學程 |
32 | 電資學士班 | 電機資訊學院學士班 |
In [ ]: