Files
python----/智慧校园/本部/学生数据处理.ipynb
T
2025-10-20 12:32:18 +08:00

15 KiB
Raw Blame History

In [1]:
import pandas as pd
In [2]:
df = pd.read_excel('学生信息.xlsx',skiprows=1)
In [ ]:
In [7]:
df
Out [7]:
学号 姓名 性别 年级 班级 账户名 手环号 通/住校
0 847613 曾笙 2025级 临时班 847613CDSPTSZX 3722606215 通校
1 205240217 郭靖 2025级 0班 205240217CDSPTSZX 22802380 通校
2 2024240217 黄蓉 2025级 临时班 2024240217CDSPTSZX 3108630769 通校
3 20250011 曾曦蕊 2025级 临时班 20250011CDSPTSZX 22830060 通校
4 20250012 曾星睿 2025级 临时班 20250012CDSPTSZX 3108363489 通校
... ... ... ... ... ... ... ... ...
780 20250783 彭彦晰 2025级 临时班 20250783CDSPTSZX 1620701492 通校
781 20250802 魏腾一 2025级 临时班 20250802CDSPTSZX 1618071076 通校
782 20250805 任梓玮 2025级 临时班 20250805CDSPTSZX 1619575092 通校
783 20250866 张羽菲 2025级 临时班 20250866CDSPTSZX 1620005620 通校
784 20250617 杨光墨辰 2025级 临时班 20250617CDSPTSZX 3108648785 通校

785 rows × 8 columns

In [12]:
"  1".strip()
Out [12]:
'1'
In [ ]:
In [24]:
df = pd.read_excel('学生信息.xlsx',skiprows=1,dtype=str)
df2 = pd.read_excel('2025级学生班级_子1.xlsx',dtype=str)

学号字典 = dict(zip(df2['学号'], df2['班级'].astype("str")))

# 直接通过map函数添加班级列,不存在的学号用'未找到'填充
df['班级'] = df['学号'].map(学号字典).fillna('未找到')
In [31]:
import pandas as pd

# 读取Excel文件,确保所有列都是字符串类型
df = pd.read_excel('学生信息.xlsx', skiprows=1, dtype=str)
df2 = pd.read_excel('2025级学生班级_子1.xlsx', dtype=str)

# 为两个DataFrame添加唯一标识列(姓名+性别+学号)
# 使用分隔符避免不同字段值拼接后产生歧义(例如"张三四"+"男" vs "张三"+"四男"
df['唯一标识'] = df['姓名'] + '|' + df['性别'] + '|' + df['学号']
df2['唯一标识'] = df2['学生姓名'] + '|' + df2['性别'] + '|' + df2['学号']

# 找出df中有但df2中没有的唯一标识
df独有标识 = df[~df['唯一标识'].isin(df2['唯一标识'])]['唯一标识']

# 根据独有标识筛选出完整记录
结果 = df[df['唯一标识'].isin(df独有标识)]

# 输出结果(可以根据需要选择保留或删除'唯一标识'列)
print("df中有但df2中没有的记录:")
print(结果.drop(columns=['唯一标识']))  # 删除临时的唯一标识列再显示
df中有但df2中没有的记录:
             学号   姓名 性别     年级   班级                 账户名         手环号 通/住校
0        847613   曾笙  男  2025级  临时班      847613CDSPTSZX  3722606215   通校
1     205240217   郭靖  男  2025级   0班   205240217CDSPTSZX  0022802380   通校
2    2024240217   黄蓉  男  2025级  临时班  2024240217CDSPTSZX  3108630769   通校
17     20250041  陈奕瑾  女  2025级  临时班    20250041CDSPTSZX  3108586721   通校
31     20250080  杜雨欣  女  2025级  临时班    20250080CDSPTSZX  3108567745   通校
38     20250098  冯雅琳  女  2025级  临时班    20250098CDSPTSZX  3108398001   通校
48     20250123  郭明萱  女  2025级  临时班    20250123CDSPTSZX  3108359601   通校
96     20250290  刘瑞泽  男  2025级  临时班    20250290CDSPTSZX  3108417121   通校
130    20250402  苏子洛  男  2025级  临时班    20250402CDSPTSZX  3108648977   通校
143    20250448  王晟骁  男  2025级  临时班    20250448CDSPTSZX  3108604769   通校
153    20250475  王雅萱  女  2025级  临时班    20250475CDSPTSZX  3108626049   通校
157    20250502  吴睿灿  男  2025级  临时班    20250502CDSPTSZX  3108654369   通校
172    20250567  徐周塬  男  2025级  临时班    20250567CDSPTSZX  3107628913   通校
233    20250772  李怡辰  女  2025级  临时班    20250772CDSPTSZX  3108433745   通校
260    20258671   弋珂  女  2025级  临时班    20258671CDSPTSZX  0022681516   通校
261    20258673  马艺诚  男  2025级  临时班    20258673CDSPTSZX  3108571633   通校
276    20250021  陈佳逸  女  2025级  临时班    20250021CDSPTSZX  1619715284   通校
369    20250169  黄心仪  女  2025级  临时班    20250169CDSPTSZX  1617731892   通校
389    20250199  乐思彤  女  2025级  临时班    20250199CDSPTSZX  1619850820   通校
419    20250246  李屹然  男  2025级  临时班    20250246CDSPTSZX  1619431076   通校
In [37]:
import pandas as pd

# 读取Excel文件,确保所有列都是字符串类型
df = pd.read_excel('学生信息.xlsx',usecols=['姓名','性别','学号'], skiprows=1, dtype=str)
df2 = pd.read_excel('2025级学生班级_子1.xlsx',usecols=['学生姓名','性别','学号'], dtype=str)

# # 为两个DataFrame添加唯一标识列(姓名+性别+学号)
# df['唯一标识'] = df['姓名'] + '|' + df['性别'] + '|' + df['学号']
# df2['唯一标识'] = df2['学生姓名'] + '|' + df2['性别'] + '|' + df2['学号']

# # 找出df2中有但df中没有的唯一标识
# df2独有标识 = df2[~df2['唯一标识'].isin(df['唯一标识'])]['唯一标识']

# # 根据独有标识筛选出完整记录
# 结果 = df2[df2['唯一标识'].isin(df2独有标识)]

# # 输出结果
# print("df2中有但df中没有的记录:")
# print(结果.drop(columns=['唯一标识']))  # 删除临时的唯一标识列
row_strings= set()
for _,row in df.iterrows():
    row_strings.add(f"{row['姓名']}{row['性别']}{row['学号']}")
row_strings1 = set()
for _,row in df2.iterrows():
    row_strings1.add(f"{row['学生姓名']}{row['性别']}{row['学号']}")
In [38]:
row_strings1 - row_strings
Out [38]:
{'彭睦雅男20250832', '李沛珊女20250831', '杨槟源男20250830', '杨颜尊女20250833'}
In [35]:
df2.shape
Out [35]:
(769, 4)
In [36]:
df.shape
Out [36]:
(785, 4)
In [ ]: