Files
python----/北川/数据整理.ipynb
admin aac9f5934d feat: 添加多个功能模块和工具脚本
- 新增websocket客户端和服务端实现
- 添加图片压缩工具和快速压缩脚本
- 实现学生信息处理相关API
- 添加MQTT客户端和消息处理功能
- 更新.gitignore忽略更多文件类型
- 添加数据库操作工具和示例
- 实现多个测试脚本和工具类
2026-04-13 14:47:50 +08:00

52 KiB
Raw Permalink Blame History

In [1]:
import pandas as pd
In [72]:
df = pd.read_excel('./在校生综合信息查询.xlsx')
In [73]:
df.shape
Out [73]:
(2982, 42)
In [81]:
tem = df['学号'].sort_values(key=lambda s: s.fillna('').astype(str).str.len())
In [82]:
tem = tem.astype(str).tolist()
In [83]:
tem
Out [83]:
['202205270',
 '250802200',
 '250802300',
 '250802400',
 '250802500',
 '250802600',
 '250802700',
 '250802800',
 '250802900',
 '250803000',
 '250803100',
 '250803200',
 '250803300',
 '250803400',
 '250803500',
 '250803600',
 '250803700',
 '250803800',
 '250803900',
 '250804000',
 '250802100',
 '250900100',
 '250802000',
 '250801800',
 '250701900',
 '250702000',
 '250800100',
 '250800200',
 '250800300',
 '250800400',
 '250800500',
 '250800600',
 '250800700',
 '250800800',
 '250800900',
 '250801000',
 '250801100',
 '250801200',
 '250801300',
 '250801400',
 '250801500',
 '250801600',
 '250801700',
 '250801900',
 '250900200',
 '250900300',
 '250900400',
 '251100200',
 '251100300',
 '251100400',
 '251100500',
 '251100600',
 '251100700',
 '251100800',
 '251100900',
 '251101000',
 '251101100',
 '251101200',
 '251101300',
 '251101400',
 '251101500',
 '251101600',
 '251101700',
 '251101800',
 '251101900',
 '251102000',
 '251100100',
 '251001800',
 '251001700',
 '251001600',
 '250900500',
 '250900600',
 '250900700',
 '250900800',
 '250900900',
 '251000100',
 '251000200',
 '251000300',
 '251000400',
 '250701800',
 '251000500',
 '251000700',
 '251000800',
 '251000900',
 '251001000',
 '251001100',
 '251001200',
 '251001300',
 '251001400',
 '251001500',
 '251000600',
 '251102100',
 '250701700',
 '250701500',
 '250601100',
 '250601200',
 '250601300',
 '250601400',
 '250601500',
 '250601600',
 '250601700',
 '250601800',
 '250601900',
 '250602000',
 '250602100',
 '250602200',
 '250602300',
 '250602400',
 '250602500',
 '250602600',
 '250602700',
 '250602800',
 '250602900',
 '250601000',
 '250603000',
 '250600900',
 '250600700',
 '250503300',
 '250503400',
 '250503500',
 '250503600',
 '250503700',
 '250503900',
 '250504000',
 '250504100',
 '250504200',
 '250504300',
 '250504400',
 '250504500',
 '250504600',
 '250600100',
 '250600200',
 '250600300',
 '250600400',
 '250600500',
 '250600600',
 '250600800',
 '250603100',
 '250603200',
 '250603300',
 '250605900',
 '250606000',
 '250606100',
 '250606200',
 '250606300',
 '250606400',
 '250700100',
 '250700200',
 '250700300',
 '250700400',
 '250700500',
 '250700700',
 '250700800',
 '250700900',
 '250701000',
 '250701100',
 '250701200',
 '250701300',
 '250701400',
 '250605800',
 '250605700',
 '250605600',
 '250605500',
 '250603400',
 '250603600',
 '250603700',
 '250603800',
 '250603900',
 '250604000',
 '250604100',
 '250604200',
 '250604300',
 '250701600',
 '250604400',
 '250604600',
 '250604700',
 '250604800',
 '250604900',
 '250605000',
 '250605100',
 '250605200',
 '250605300',
 '250605400',
 '250604500',
 '250503200',
 '251102200',
 '251102400',
 '251401600',
 '251401700',
 '251401800',
 '251401900',
 '251402000',
 '251402100',
 '251402200',
 '251402300',
 '251402400',
 '251402500',
 '251402600',
 '251402700',
 '251402800',
 '251402900',
 '251403000',
 '251403100',
 '251403200',
 '251403300',
 '251403400',
 '251401500',
 '251403500',
 '251401400',
 '251401200',
 '251302200',
 '251302300',
 '251302400',
 '251302500',
 '251302600',
 '251302700',
 '251302800',
 '251302900',
 '251400100',
 '251400200',
 '251400300',
 '251400400',
 '251400500',
 '251400600',
 '251400700',
 '251400800',
 '251400900',
 '251401000',
 '251401100',
 '251401300',
 '251403600',
 '251403700',
 '251403800',
 '251500400',
 '251500500',
 '251500600',
 '251500700',
 '251500800',
 '251500900',
 '251501000',
 '251501100',
 '251501200',
 '251501300',
 '251501400',
 '251501500',
 '251501600',
 '251501700',
 '251501800',
 '251501900',
 '251502000',
 '251502100',
 '251502200',
 '251500300',
 '251500200',
 '251500100',
 '251405900',
 '251403900',
 '251404000',
 '251404100',
 '251404200',
 '251404300',
 '251404400',
 '251404500',
 '251404600',
 '251404700',
 '251302100',
 '251404800',
 '251405000',
 '251405100',
 '251405200',
 '251405300',
 '251405400',
 '251405500',
 '251405600',
 '251405700',
 '251405800',
 '251404900',
 '251102300',
 '251302000',
 '251301800',
 '251104800',
 '251104900',
 '251105000',
 '251105100',
 '251200100',
 '251200200',
 '251200300',
 '251200400',
 '251200500',
 '251200600',
 '251200700',
 '251200800',
 '251200900',
 '251201000',
 '251201100',
 '251201200',
 '251201300',
 '251201400',
 '251201500',
 '251104700',
 '251201600',
 '251104600',
 '251104400',
 '251102500',
 '251102600',
 '251102700',
 '251102800',
 '251102900',
 '251103000',
 '251103100',
 '251103200',
 '251103300',
 '251103400',
 '251103500',
 '251103600',
 '251103700',
 '251103800',
 '251103900',
 '251104000',
 '251104100',
 '251104200',
 '251104300',
 '251104500',
 '251201700',
 '251201800',
 '251201900',
 '251204400',
 '251204500',
 '251204600',
 '251300100',
 '251300200',
 '251300300',
 '251300400',
 '251300500',
 '251300600',
 '251300800',
 '251300900',
 '251301000',
 '251301100',
 '251301200',
 '251301300',
 '251301400',
 '251301500',
 '251301600',
 '251301700',
 '251204300',
 '251204200',
 '251204100',
 '251204000',
 '251202000',
 '251202100',
 '251202200',
 '251202300',
 '251202400',
 '251202500',
 '251202600',
 '251202700',
 '251202800',
 '251301900',
 '251202900',
 '251203100',
 '251203200',
 '251203300',
 '251203400',
 '251203500',
 '251203600',
 '251203700',
 '251203800',
 '251203900',
 '251203000',
 '250503100',
 '250503000',
 '250502900',
 '202422057',
 '202422290',
 '202423001',
 '202423003',
 '202423004',
 '202423005',
 '202423007',
 '202423008',
 '202423010',
 '202423011',
 '202423012',
 '202423013',
 '202423015',
 '202423016',
 '202423017',
 '202423018',
 '202423019',
 '202423020',
 '202423023',
 '202422056',
 '202423024',
 '202422055',
 '202422053',
 '202422034',
 '202422035',
 '202422036',
 '202422037',
 '202422038',
 '202422039',
 '202422040',
 '202422041',
 '202422042',
 '202422043',
 '202422044',
 '202422045',
 '202422046',
 '202422047',
 '202422048',
 '202422049',
 '202422050',
 '202422051',
 '202422052',
 '202422054',
 '202423025',
 '202423028',
 '202423029',
 '202424022',
 '202424023',
 '202424024',
 '202424026',
 '202424040',
 '202424042',
 '202424044',
 '202424045',
 '202424046',
 '202424047',
 '202424048',
 '202424049',
 '202424050',
 '202424051',
 '202424052',
 '202424053',
 '202424055',
 '202424056',
 '202425001',
 '202424020',
 '202424019',
 '202424017',
 '202424016',
 '202423030',
 '202423032',
 '202423034',
 '202423035',
 '202423036',
 '202423038',
 '202423039',
 '202423042',
 '202423043',
 '202422033',
 '202424001',
 '202424004',
 '202424005',
 '202424006',
 '202424007',
 '202424009',
 '202424011',
 '202424012',
 '202424013',
 '202424014',
 '202424003',
 '202425002',
 '202422032',
 '202422030',
 '202421017',
 '202421019',
 '202421020',
 '202421022',
 '202421023',
 '202421024',
 '202421025',
 '202421026',
 '202421028',
 '202421029',
 '202421030',
 '202421031',
 '202421033',
 '202421034',
 '202421036',
 '202421038',
 '202421040',
 '202421042',
 '202421044',
 '202421016',
 '202421045',
 '202421014',
 '202421011',
 '202420050',
 '202420051',
 '202420052',
 '202420053',
 '202420054',
 '202420055',
 '202420056',
 '202420057',
 '202420058',
 '202420059',
 '202420060',
 '202420061',
 '202420062',
 '202421001',
 '202421003',
 '202421005',
 '202421006',
 '202421008',
 '202421010',
 '202421012',
 '202421046',
 '202421047',
 '202421048',
 '202422011',
 '202422012',
 '202422013',
 '202422014',
 '202422015',
 '202422016',
 '202422017',
 '202422018',
 '202422019',
 '202422020',
 '202422021',
 '202422022',
 '202422023',
 '202422024',
 '202422025',
 '202422026',
 '202422027',
 '202422028',
 '202422029',
 '202422010',
 '202422009',
 '202422008',
 '202422007',
 '202421049',
 '202421050',
 '202421051',
 '202421052',
 '202421053',
 '202421054',
 '202421055',
 '202421056',
 '202421057',
 '202422031',
 '202421058',
 '202421060',
 '202421061',
 '202421062',
 '202422001',
 '202422002',
 '202422003',
 '202422004',
 '202422005',
 '202422006',
 '202421059',
 '202425003',
 '202425004',
 '202425009',
 '250101900',
 '250102000',
 '250102100',
 '250200100',
 '250200200',
 '250200300',
 '250200400',
 '250200500',
 '250200600',
 '250200700',
 '250200800',
 '250200900',
 '250300100',
 '250300200',
 '250300300',
 '250300400',
 '250300500',
 '250300600',
 '250300700',
 '250101800',
 '250300800',
 '250101700',
 '250101500',
 '240534000',
 '240611000',
 '242205800',
 '24JW01190',
 '24JW01220',
 '250100100',
 '250100200',
 '250100300',
 '250100400',
 '250100500',
 '250100600',
 '250100700',
 '250100800',
 '250100900',
 '250101000',
 '250101100',
 '250101200',
 '250101300',
 '250101400',
 '250101600',
 '250300900',
 '250301000',
 '250301100',
 '250500700',
 '250500800',
 '250500900',
 '250501100',
 '250501200',
 '250501300',
 '250501400',
 '250501600',
 '250501700',
 '250501800',
 '250501900',
 '250502000',
 '250502100',
 '250502200',
 '250502300',
 '250502400',
 '250502500',
 '250502700',
 '250502800',
 '250500600',
 '250500500',
 '250500400',
 '250500300',
 '250301200',
 '250301300',
 '250301400',
 '250301500',
 '250301600',
 '250301700',
 '250301800',
 '250301900',
 '250302000',
 '240526000',
 '250302100',
 '250400100',
 '250400200',
 '250400300',
 '250400400',
 '250400500',
 '250400600',
 '250400700',
 '250500100',
 '250500200',
 '250302200',
 '240518000',
 '240512000',
 '240510000',
 '202425042',
 '202425044',
 '202426001',
 '202426002',
 '202426003',
 '202426004',
 '202426005',
 '202426006',
 '202426007',
 '202426008',
 '202426009',
 '202426010',
 '202426011',
 '202426012',
 '202426013',
 '202426014',
 '202426015',
 '202426016',
 '202426017',
 '202425041',
 '202425040',
 '202425039',
 '202425038',
 '202425011',
 '202425012',
 '202425013',
 '202425014',
 '202425015',
 '202425016',
 '202425018',
 '202425021',
 '202425023',
 '202426018',
 '202425024',
 '202425026',
 '202425029',
 '202425031',
 '202425032',
 '202425033',
 '202425034',
 '202425035',
 '202425036',
 '202425037',
 '202425025',
 '251502300',
 '202426020',
 '202426025',
 '202427027',
 '202427028',
 '202427029',
 '202427030',
 '202427031',
 '202427032',
 '202427033',
 '202427034',
 '202427035',
 '202427036',
 '202427037',
 '202427041',
 '202427042',
 '203320000',
 '203520000',
 '230043000',
 '230536000',
 '230586000',
 '240291000',
 '202427026',
 '202427025',
 '202427022',
 '202427018',
 '202426026',
 '202426027',
 '202426028',
 '202426029',
 '202426030',
 '202427001',
 '202427002',
 '202427003',
 '202427004',
 '202426021',
 '202427005',
 '202427007',
 '202427008',
 '202427009',
 '202427010',
 '202427013',
 '202427014',
 '202427015',
 '202427016',
 '202427017',
 '202427006',
 '202308640',
 '251502400',
 '251600200',
 '252502700',
 '252502800',
 '252502900',
 '252503000',
 '252503100',
 '252503200',
 '252503300',
 '252503400',
 '252503500',
 '252503600',
 '252503700',
 '252503800',
 '252503900',
 '252504000',
 '252504100',
 '252504200',
 '252504300',
 '252504400',
 '252504500',
 '252502600',
 '252504600',
 '252502500',
 '252502300',
 '252500300',
 '252500400',
 '252500500',
 '252500600',
 '252500700',
 '252500800',
 '252500900',
 '252501000',
 '252501100',
 '252501200',
 '252501300',
 '252501400',
 '252501500',
 '252501600',
 '252501700',
 '252501800',
 '252502000',
 '252502100',
 '252502200',
 '252502400',
 '252504700',
 '252504800',
 '252504900',
 '252601200',
 '252601300',
 '252601400',
 '252601500',
 '252601600',
 '252601700',
 '252601800',
 '252601900',
 '252602000',
 '252602100',
 '252602200',
 '252602300',
 '252602400',
 '252602500',
 '252602600',
 '252602800',
 '252602900',
 '252603000',
 '252603100',
 '252601100',
 '252601000',
 '252600900',
 '252600800',
 '252505000',
 '252505100',
 '252505200',
 '252505300',
 '252505400',
 '252505500',
 '252505600',
 '252505700',
 '252505800',
 '252500200',
 '252505900',
 '252506100',
 '252506200',
 '252506300',
 '252600100',
 '252600300',
 '252600400',
 '252600500',
 '252600600',
 '252600700',
 '252506000',
 '252603200',
 '252500100',
 '252406300',
 '252305800',
 '252305900',
 '252306000',
 '252306100',
 '252306700',
 '252400100',
 '252400200',
 '252400300',
 '252400400',
 '252400500',
 '252400600',
 '252400700',
 '252400800',
 '252400900',
 '252401000',
 '252401100',
 '252401200',
 '252401300',
 '252401400',
 '252305700',
 '252401500',
 '252305600',
 '252305400',
 '252303500',
 '252303600',
 '252303700',
 '252303800',
 '252303900',
 '252304000',
 '252304100',
 '252304200',
 '252304300',
 '252304400',
 '252304500',
 '252304600',
 '252304700',
 '252304800',
 '252304900',
 '252305000',
 '252305100',
 '252305200',
 '252305300',
 '252305500',
 '252401600',
 '252401700',
 '252401800',
 '252404400',
 '252404500',
 '252404600',
 '252404700',
 '252404800',
 '252404900',
 '252405000',
 '252405100',
 '252405200',
 '252405300',
 '252405400',
 '252405500',
 '252405600',
 '252405700',
 '252405800',
 '252405900',
 '252406000',
 '252406100',
 '252406200',
 '252404300',
 '252404200',
 '252404100',
 '252404000',
 '252401900',
 '252402000',
 '252402100',
 '252402200',
 '252402300',
 '252402400',
 '252402500',
 '252402700',
 '252402800',
 '252406400',
 '252402900',
 '252403100',
 '252403200',
 '252403300',
 '252403400',
 '252403500',
 '252403600',
 '252403700',
 '252403800',
 '252403900',
 '252403000',
 '252303400',
 '252603300',
 '252603500',
 '252902500',
 '252902600',
 '252902700',
 '252902800',
 '252902900',
 '252903000',
 '252903100',
 '252903200',
 '252903300',
 '252903400',
 '252903500',
 '252903600',
 '252903700',
 '252903800',
 '252903900',
 '253000100',
 '253000200',
 '253000300',
 '253000400',
 '252902400',
 '253000500',
 '252902300',
 '252902100',
 '252900200',
 '252900300',
 '252900400',
 '252900500',
 '252900600',
 '252900700',
 '252900800',
 '252900900',
 '252901000',
 '252901100',
 '252901200',
 '252901300',
 '252901400',
 '252901500',
 '252901600',
 '252901700',
 '252901800',
 '252901900',
 '252902000',
 '252902200',
 '253000600',
 '253000700',
 '253000800',
 '253100100',
 '253100200',
 '253100300',
 '253100400',
 '253100500',
 '253100600',
 '253100700',
 '253100800',
 '253100900',
 '253101000',
 '253101100',
 '253101200',
 '253101300',
 '253101400',
 '253101500',
 '253101600',
 '253101700',
 '253101800',
 '253102000',
 '253003200',
 '253003100',
 '253003000',
 ...]
In [84]:
lens = {}
records = {}
for item in tem:
    lens[f'长度为{len(item)}'] = lens.get(f'长度为{len(item)}', 0) + 1
    records[f'长度为{len(item)}'] = records.get(f'长度为{len(item)}', []) + [item]
In [85]:
lens
Out [85]:
{'长度为9': 2974, '长度为10': 5, '长度为13': 3}
In [45]:
records['长度为10']
Out [45]:
['2023030432', '2024040613', '2024040128', '2023010303', '2024040152']
In [77]:
#将学号不足9位的学号后面补0,超过9位的截取前9位
df['学号'] = df['学号'].apply(lambda x: f'{str(x):0<9}')
In [78]:
df['学号'].value_counts().head(20)
Out [78]:
学号
202415017    2
202322076    2
202302030    2
202314030    2
252604500    2
202415001    2
202301020    2
202415019    2
202304010    2
202301030    2
202306040    2
250803100    1
250803600    1
250803300    1
250803400    1
250803500    1
250803200    1
250803900    1
250803700    1
250803800    1
Name: count, dtype: int64
In [87]:
df.to_excel('数据整理.xlsx', index=False)
In [88]:
df1 = pd.read_excel('数据整理.xlsx')
df1['学号'].value_counts().head(20)
Out [88]:
学号
202205270    1
250803300    1
250802400    1
250802500    1
250802600    1
250802700    1
250802800    1
250802900    1
250803000    1
250803100    1
250803200    1
250803400    1
250900500    1
250803500    1
250803600    1
250803700    1
250803800    1
250803900    1
250804000    1
250900100    1
Name: count, dtype: int64
In [ ]:
#取出df1中学生和学号组合成字典
student = df1[['姓名', '学号']].set_index('姓名').T.to_dict('list')
C:\Users\Administrator\AppData\Local\Temp\ipykernel_34060\2571666087.py:2: UserWarning: DataFrame columns are not unique, some columns will be omitted.
  student = df1[['姓名', '学号']].set_index('姓名').T.to_dict()
In [93]:
df1['姓名'].value_counts()
Out [93]:
姓名
王子轩     4
洛绒丁真    4
王俊杰     4
李鑫      3
杨杰      3
       ..
未煜祺     1
魏颖煊     1
薛永宏     1
于伟杰     1
董芷妍     1
Name: count, Length: 2892, dtype: int64
In [106]:
df2 = pd.read_excel('学生信息.xls',sheet_name='Sheet0')
In [107]:
df2
Out [107]:
学号 姓名 性别 年级 班级 电话 身份证件号 专业代码 专业名称
0 202304009 韩震 2023 2328数字媒体2班 15883775701 510726200805055219 710204 数字媒体技术应用
1 202304023 胥倩文 2023 2328数字媒体2班 17378613606 510704200802282127 710204 数字媒体技术应用
2 202328001 四郎 2023 2328数字媒体2班 15983736073 513332200405011637 710204 数字媒体技术应用
3 202328005 东红丹巴达吉 2023 2328数字媒体2班 15708362028 513327200706166519 710204 数字媒体技术应用
4 202328006 尼谢交 2023 2328数字媒体2班 18828867303 513333200805241614 710204 数字媒体技术应用
... ... ... ... ... ... ... ... ... ...
2977 2530028 杨马浩 2025 2530智维升学 19114073889 510726201003181410 660201 智能设备运行与维护
2978 2530029 杨逸晨 2025 2530智维升学 18781190071 510724201007141616 660201 智能设备运行与维护
2979 2530030 张文博 2025 2530智维升学 13698138546 510724201005172056 660201 智能设备运行与维护
2980 2530031 张玺毓 2025 2530智维升学 18982542062 50022820100822337X 660201 智能设备运行与维护
2981 2530032 张宇鹏 2025 2530智维升学 15328205746 510724201007140816 660201 智能设备运行与维护

2982 rows × 9 columns

In [111]:
df2.columns
Out [111]:
Index(['学号', '姓名', '性别', '年级', '班级', '电话', '身份证件号', '专业代码', '专业名称'], dtype='object')
In [118]:
df3 = df2[['专业名称','专业代码']].drop_duplicates()
In [119]:
major_map = dict(zip(df3['专业名称'], df3['专业代码']))
In [120]:
major_map
Out [120]:
{'数字媒体技术应用': 710204,
 '运动训练': 770303,
 '智慧健康养老服务': 590302,
 '旅游服务与管理': 740101,
 '民族音乐与舞蹈': 750203,
 '会计事务': 120100,
 '建筑工程施工': 640301,
 '电子信息技术': 510101,
 '新能源汽车运用与维修': 700209,
 '智能设备运行与维护': 660201}
In [121]:
df1.columns
Out [121]:
Index(['身份证件号', '姓名', '性别', '出生日期', '民族', '籍贯', '户口性质', '学生类别', '入学年月', '学校名称',
       '专业', '专业方向', '学号', '户口所在地', '户口所在地区县以下详细地址', '身份证件类型', '学籍号', '婚姻状况',
       '政治面貌', '学生来源', '港澳台侨外', '国籍', '家庭现地址', '入学方式', '学制', '年级', '班级',
       '家庭邮政编码', '联招合作类型', '联招合作学校机构代码', '学生联系电话', '出生地', '电子信箱', '英文姓名',
       '姓名拼音', '省', '市', '县', '学习形式', '专业简称', '在校生状态', '健康状况'],
      dtype='object')
In [123]:
df2.columns
Out [123]:
Index(['学号', '姓名', '性别', '年级', '班级', '电话', '身份证件号', '专业代码', '专业名称'], dtype='object')
In [126]:
df5 = df1[['学号', '姓名', '性别', '年级', '班级', '学生联系电话', '身份证件号', '专业']]
In [127]:
df5.rename(columns={'专业':'专业名称','学生联系电话':'电话'},inplace=True)
C:\Users\Administrator\AppData\Local\Temp\ipykernel_34060\2414071842.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  df5.rename(columns={'专业':'专业名称','学生联系电话':'电话'},inplace=True)
In [129]:
major_map
Out [129]:
{'数字媒体技术应用': 710204,
 '运动训练': 770303,
 '智慧健康养老服务': 590302,
 '旅游服务与管理': 740101,
 '民族音乐与舞蹈': 750203,
 '会计事务': 120100,
 '建筑工程施工': 640301,
 '电子信息技术': 510101,
 '新能源汽车运用与维修': 700209,
 '智能设备运行与维护': 660201}
In [130]:
df5['专业代码'] = df5['专业名称'].map(major_map)
C:\Users\Administrator\AppData\Local\Temp\ipykernel_34060\3695747400.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  df5['专业代码'] = df5['专业名称'].map(major_map)
In [137]:
df5 = df5.astype('str')
In [138]:
df5.to_excel("学生信息_v1.xlsx",index=False)
In [149]:
grademap = {}
def fun(x):
    grademap[x.name] = list(x['班级'].value_counts().to_dict().keys())
df5.groupby('年级').apply(fun)
Out [149]:
C:\Users\Administrator\AppData\Local\Temp\ipykernel_34060\2087057881.py:4: DeprecationWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.
  df5.groupby('年级').apply(fun)
In [150]:
grademap
Out [150]:
{'2023': ['2322数字媒体',
  '2317汽修2班',
  '2309旅游升学',
  '2312电商升学',
  '2316汽修1班',
  '2321建筑升学',
  '2306融通1班',
  '2319会计升学',
  '2310融通3班',
  '2314智维升学',
  '2315融通5班',
  '2302五年制会计',
  '2311电商军事',
  '2304五年制媒体',
  '2318会计融通',
  '2301五年制电子',
  '2325体育',
  '2308旅游融通',
  '2303五年制建筑',
  '2323舞蹈',
  '2326会计2班',
  '2305五年制汽修',
  '2320建筑融通',
  '2328数字媒体2班',
  '2327汽修3班',
  '2324音乐'],
 '2024': ['2422汽修2班',
  '2420融通7班',
  '2411融通3班',
  '2409会计升学',
  '2418数媒1班',
  '2421汽修1班',
  '2414旅游升学',
  '2427智维升学',
  '2406融通1班',
  '2408融通2班',
  '2407电商升学',
  '2402五年制会计',
  '2417融通6班',
  '2424运动训练',
  '2410建筑升学',
  '2423汽修3班',
  '2419数媒2班',
  '2413融通5班',
  '2425智慧服务',
  '2426融通8班',
  '2415舞蹈',
  '2404五年制数媒',
  '2405五年制汽修',
  '2403五年制建筑',
  '2401五年制电子',
  '2416音乐',
  '2412融通4班',
  '2418数字媒体1班'],
 '2025': ['2506电商升学',
  '2524汽修2班',
  '2525汽修3班',
  '2523汽修1班',
  '2514旅游升学',
  '2521融通9班',
  '2522融通10班',
  '2519数字媒体2班',
  '2518数字媒体1班',
  '2528智慧服务',
  '2511融通4班',
  '2517融通8班',
  '2512融通5班',
  '2516融通7班',
  '2526汽修4班',
  '2505融通1班',
  '2508会计升学',
  '2529融通11班',
  '2530智维升学',
  '2527运动训练',
  '2513融通6班',
  '2503五年制数字媒体',
  '2515音乐舞蹈',
  '2520数字媒体3班',
  '2501五年制会计',
  '2507融通2班',
  '2531一年制',
  '2510建筑升学',
  '2502五年制建筑',
  '2504五年制汽修',
  '2509融通3班']}
In [153]:
from requests import get,post
import pandas as pd
import time
teamId = 106
ip = "http://192.168.0.244:8101"
param = {
    "username": "tangchao",
    "password": "123456a",
    "client_id": "client",
    "grant_type": "password",
    "client_secret": "123456",
}
data = get(url=f"{ip}/oauth/token",params=param).json()
token = data["access_token"]
header = {
    "content-type": "application/json",
    "authorization": f"Bearer {token}",
}
In [157]:
for item in grademap['2023']:
    post(f'{ip}/uc/class/add',headers=header,json={"gradeId":327,"teamId":teamId,"className":item,"enabled":True})
In [ ]:
post(f'{ip}/uc/class/add',headers=header,json={"gradeId":322,"teamId":106,"className":"测试班","enabled":true})