import pandas as pd
file_location = '0000_學生資料範例檔.xlsx'
df = pd.read_excel(file_location)
print(len(df))
print(df.columns)
df.info()
df
17 Index(['學號', '出生年月日', '性別', '中文姓名', '部別', '系所'], dtype='object') <class 'pandas.core.frame.DataFrame'> RangeIndex: 17 entries, 0 to 16 Data columns (total 6 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 學號 17 non-null object 1 出生年月日 17 non-null int64 2 性別 17 non-null object 3 中文姓名 17 non-null object 4 部別 17 non-null object 5 系所 17 non-null object dtypes: int64(1), object(5) memory usage: 944.0+ bytes
Out[1]:
學號 | 出生年月日 | 性別 | 中文姓名 | 部別 | 系所 | |
---|---|---|---|---|---|---|
0 | U1002252 | 650502 | 女 | 黃文欣 | 大學部 | 流通管理學系 |
1 | U1007128 | 720525 | 男 | 徐翠洋 | 大學部 | 流通管理學系 |
2 | U1017113 | 721116 | 男 | 林欣虹 | 大學部 | 流通管理學系 |
3 | U1017117 | 730224 | 男 | 吳語群 | 大學部 | 流通管理學系 |
4 | U1017146 | 720923 | 男 | 詹俊宏 | 大學部 | 歷史學系 |
5 | U1027140 | 690101 | 女 | 林素元 | 大學部 | 歷史學系 |
6 | U1027153 | 700503 | 男 | 洪偉誠 | 大學部 | 歷史學系 |
7 | U1017123 | 730318 | 女 | 黃玉廷 | 大學部 | 歷史學系 |
8 | U1027130 | 740802 | 女 | 黃瓊瑞 | 大學部 | 電機工程學系 |
9 | U1027156 | 730607 | 男 | 陳奕季 | 大學部 | 電機工程學系 |
10 | U1027119 | 720121 | 男 | 藍立璇 | 大學部 | 電機工程學系 |
11 | U1037130 | 690909 | 女 | 江姵利 | 大學部 | 電機工程學系 |
12 | U1037131 | 730118 | 女 | 林新云 | 大學部 | 社會學系 |
13 | U1047102 | 751123 | 女 | 詹淑玲 | 大學部 | 社會學系 |
14 | U1047113 | 750903 | 男 | 林世光 | 大學部 | 社會學系 |
15 | U1047120 | 760907 | 女 | 吳惠茹 | 大學部 | 社會學系 |
16 | U1047124 | 760227 | 男 | 陳毅文 | 大學部 | 社會學系 |
In [2]:
# 匹配學號第2-4碼為101
df[df['學號'].str.contains(r'.101')]['學號']
Out[2]:
2 U1017113 3 U1017117 4 U1017146 7 U1017123 Name: 學號, dtype: object
In [3]:
# 匹配學號第5-6碼為71
df[df['學號'].str.contains(r'....71')]['學號']
Out[3]:
1 U1007128 2 U1017113 3 U1017117 4 U1017146 5 U1027140 6 U1027153 7 U1017123 8 U1027130 9 U1027156 10 U1027119 11 U1037130 12 U1037131 13 U1047102 14 U1047113 15 U1047120 16 U1047124 Name: 學號, dtype: object
In [4]:
# 匹配學號最後2碼為30
print(df[df['學號'].str.contains(r'30
8 U1027130 11 U1037130 Name: 學號, dtype: object 8 U1027130 11 U1037130 Name: 學號, dtype: object
In [5]:
# 出生年月日的欄位為整數,要先以astype('str')轉換為字串
# 匹配出生年月日第一碼為7開頭資料
print(df[df['出生年月日'].astype('str').str.contains(r'^7')]['出生年月日'])
# 上面的程式碼也可以startswith來做
print(df[df['出生年月日'].astype('str').str.startswith('7')]['出生年月日'])
1 720525 2 721116 3 730224 4 720923 6 700503 7 730318 8 740802 9 730607 10 720121 12 730118 13 751123 14 750903 15 760907 16 760227 Name: 出生年月日, dtype: int64 1 720525 2 721116 3 730224 4 720923 6 700503 7 730318 8 740802 9 730607 10 720121 12 730118 13 751123 14 750903 15 760907 16 760227 Name: 出生年月日, dtype: int64
In [6]:
# 匹配中文姓名為吳或林開頭
print(df[df['中文姓名'].str.contains(r'^吳|^林')]['中文姓名'])
# 上面的程式碼也可以startswith來做
print(df[df['中文姓名'].str.startswith(('吳','林'))]['中文姓名'])
2 林欣虹 3 吳語群 5 林素元 12 林新云 14 林世光 15 吳惠茹 Name: 中文姓名, dtype: object 2 林欣虹 3 吳語群 5 林素元 12 林新云 14 林世光 15 吳惠茹 Name: 中文姓名, dtype: object
In [ ]:
)][‘學號’])
# 上面的程式碼也可以endswith來做
print(df[df[‘學號’].str.endswith(’30’)][‘學號’])
In [5]:
In [6]:
In [ ]: