2022年6月24日 星期五

Python學習筆記: 系所簡稱檢核判斷系所正確名稱

學生在填寫資料時,常常以系所簡稱來填寫。本段程式主要以系所簡稱比對系所正確名稱,代入系所正確名稱

本案以中原大學系所為範例

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]:

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]:

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 [ ]:

沒有留言:

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

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