├── .gitignore ├── README.md ├── all ├── all_2022.csv ├── all_2022.txt ├── all_2023.csv ├── all_2023.txt ├── all_2024.csv ├── all_2024.txt └── all_with_problem_2022.txt ├── analysis.ipynb ├── analysis_2024.ipynb ├── config.py ├── download.py ├── exception.txt ├── gitpush.bat ├── pdf2text.py ├── requirements.txt ├── txt_joint.py └── 统计结果.png /.gitignore: -------------------------------------------------------------------------------- 1 | paper/*.pdf 2 | paper_2022/*.pdf 3 | paper_2023/*.pdf 4 | .ipynb_checkpoints 5 | __pycache__ 6 | gitpush.bat 7 | .idea 8 | tmp*.txt 9 | all/tmp*.txt 10 | /all/tmp*.txt 11 | your_university/*.txt 12 | /your_university/*.txt 13 | your_university -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # comap_crawler 2 | 3 | 2024更新:修改config.py中的23为24即可爬取2024美赛证书并进行分析 4 | 5 | 2023美赛爬虫,2024美赛获奖证书爬虫 6 | 7 | 美国大学生数学建模竞赛证书爬取及信息OCR识别分析 8 | 9 | ## 运行步骤 10 | 11 | 1. 安装tesseractOCR,参考版本:v5.0.1.20220118,其他版本不保证可用, 12 | 13 | v5.0.1.20220118下载地址 14 | 15 | https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v5.0.1.20220118.exe 16 | 17 | 其他版本下载:https://digi.bib.uni-mannheim.de/tesseract/ 18 | 19 | 2. `pip install -r requirements.txt` 20 | 21 | 3. config.py中设置年份、进程数、你的学校、TesseractOCR安装路径等,进程数根据CPU和内存情况设置 22 | 23 | 4. download.py下载证书,由于有些证书只运行一次部分下载会失败,需要运行多次,确保全部下载 24 | 25 | 5. pdf2text.py识别学校、姓名、获奖等级、队伍ID等 26 | 27 | 6. txt_joint.py合并OCR识别的txt结果 28 | 29 | 7. analysis.ipynb分析数据 30 | 31 | ## 识别结果: 32 | 33 | 更多分析结果请自行下载代码,运行analysis.ipynb进行分析 34 | 35 | ### 2024美赛 36 | 37 | 2024美赛结果,证书数量28905张,最终识别28796条信息 38 | https://raw.githubusercontent.com/personqianduixue/comap_crawler_2023/master/all/all_2024.txt 39 | 40 | cdn加速镜像:https://fastly.jsdelivr.net/gh/personqianduixue/comap_crawler_2023@master/all/all_2024.txt 41 | 42 | 43 | 44 | ### 2023美赛 45 | 46 | 2023美赛结果,证书数量20858张,最终识别20818条信息 47 | 48 | https://raw.githubusercontent.com/personqianduixue/comap_crawler_2023/master/all/all_2023.txt 49 | 50 | cdn加速镜像:https://ghproxy.net/https://raw.githubusercontent.com/personqianduixue/comap_crawler_2023/master/all/all_2023.txt 51 | 52 | 53 | 54 | ### 2022美赛 55 | 56 | 2022美赛结果,证书数量27205张,最终识别27161条信息 57 | 58 | https://raw.githubusercontent.com/personqianduixue/comap_crawler_2023/master/all/all_2022.txt 59 | 60 | cdn加速镜像:https://ghproxy.net/https://raw.githubusercontent.com/personqianduixue/comap_crawler_2023/master/all/all_2022.txt 61 | 62 | 63 | -------------------------------------------------------------------------------- /analysis.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import shutil\n", 10 | "import pandas as pd\n", 11 | "from config import *" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 2, 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "your_university='Huazhong University of Science and Technology'" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": 3, 26 | "metadata": {}, 27 | "outputs": [], 28 | "source": [ 29 | "year=23" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 4, 35 | "metadata": { 36 | "scrolled": true 37 | }, 38 | "outputs": [ 39 | { 40 | "data": { 41 | "text/html": [ 42 | "
\n", 43 | "\n", 56 | "\n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | "
control_numberstudent1student2student3advisoruniversityprize
02300005Zheng YaxinDu JingiuGao QihangUIC Math Modeling TeamBNU-HKBU United International CollegeMeritorious Winner
12300006Wu PeixinChen NingyunWu YouUIC Math Modeling TeamBNU-HKBU United International CollegeSuccessful Participant
22300007Gou RuoXuanHuang JianFeiYe YuJunUIC Math Modeling TeamBNU-HKBU United International CollegeSuccessful Participant
32300008Wan YeqianGan YiningGuo WenhaoUIC Math Modeling TeamBNU-HKBU United International CollegeSuccessful Participant
42300009Lu QianyuLi CanZhao XiaoxuanUIC Math Modeling TeamBNU-HKBU United International CollegeSuccessful Participant
\n", 122 | "
" 123 | ], 124 | "text/plain": [ 125 | " control_number student1 student2 student3 \\\n", 126 | "0 2300005 Zheng Yaxin Du Jingiu Gao Qihang \n", 127 | "1 2300006 Wu Peixin Chen Ningyun Wu You \n", 128 | "2 2300007 Gou RuoXuan Huang JianFei Ye YuJun \n", 129 | "3 2300008 Wan Yeqian Gan Yining Guo Wenhao \n", 130 | "4 2300009 Lu Qianyu Li Can Zhao Xiaoxuan \n", 131 | "\n", 132 | " advisor university \\\n", 133 | "0 UIC Math Modeling Team BNU-HKBU United International College \n", 134 | "1 UIC Math Modeling Team BNU-HKBU United International College \n", 135 | "2 UIC Math Modeling Team BNU-HKBU United International College \n", 136 | "3 UIC Math Modeling Team BNU-HKBU United International College \n", 137 | "4 UIC Math Modeling Team BNU-HKBU United International College \n", 138 | "\n", 139 | " prize \n", 140 | "0 Meritorious Winner \n", 141 | "1 Successful Participant \n", 142 | "2 Successful Participant \n", 143 | "3 Successful Participant \n", 144 | "4 Successful Participant " 145 | ] 146 | }, 147 | "execution_count": 4, 148 | "metadata": {}, 149 | "output_type": "execute_result" 150 | } 151 | ], 152 | "source": [ 153 | "txtpath='./all/all_20'+str(year)+'.txt'\n", 154 | "csvpath='./all/all_20'+str(year)+'.csv'\n", 155 | "shutil.copyfile(txtpath, csvpath)\n", 156 | "data = pd.read_csv(csvpath)\n", 157 | "data=data.iloc[:,0:7]\n", 158 | "data.head()" 159 | ] 160 | }, 161 | { 162 | "cell_type": "code", 163 | "execution_count": 5, 164 | "metadata": { 165 | "scrolled": true 166 | }, 167 | "outputs": [ 168 | { 169 | "data": { 170 | "text/plain": [ 171 | "Harbin Engineering University 580\n", 172 | "XIDIAN UNIVERSITY 448\n", 173 | "Beihang University 407\n", 174 | "Jilin University 364\n", 175 | "Huazhong University of Science and Technology 338\n", 176 | "Northwestern Polytechnical University 323\n", 177 | "Nanjing University of Posts and Telecommunication 298\n", 178 | "Dalian University of Technology 293\n", 179 | "Shanghai Jiao Tong University 263\n", 180 | "South China University of Technology 228\n", 181 | "Hohai University 215\n", 182 | "National University of Defense Technology 207\n", 183 | "Northeastern University 206\n", 184 | "Harbin Institute of Technology 200\n", 185 | "Beijing Institute of Technology 197\n", 186 | "Southwest University 193\n", 187 | "Central University of Finance and Economics 192\n", 188 | "Renmin University of China 183\n", 189 | "Xi'an Jiaotong University 162\n", 190 | "Hangzhou Normal University 154\n", 191 | "Name: university, dtype: int64" 192 | ] 193 | }, 194 | "execution_count": 5, 195 | "metadata": {}, 196 | "output_type": "execute_result" 197 | } 198 | ], 199 | "source": [ 200 | "univ_data=data['university'].value_counts().iloc[0:20]\n", 201 | "univ_data" 202 | ] 203 | }, 204 | { 205 | "cell_type": "code", 206 | "execution_count": 6, 207 | "metadata": { 208 | "scrolled": true 209 | }, 210 | "outputs": [ 211 | { 212 | "data": { 213 | "image/png": "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\n", 214 | "text/plain": [ 215 | "
" 216 | ] 217 | }, 218 | "metadata": { 219 | "needs_background": "light" 220 | }, 221 | "output_type": "display_data" 222 | } 223 | ], 224 | "source": [ 225 | "\n", 226 | "ax=univ_data.sort_values().plot.barh()\n", 227 | "fig=ax.get_figure()\n", 228 | "fig.savefig('统计结果.png',bbox_inches='tight')" 229 | ] 230 | }, 231 | { 232 | "cell_type": "code", 233 | "execution_count": 7, 234 | "metadata": {}, 235 | "outputs": [ 236 | { 237 | "data": { 238 | "text/plain": [ 239 | "Successful Participant 13180\n", 240 | "Honorable Mention 4531\n", 241 | "Meritorious Winner 1352\n", 242 | "Disqualified - P 990\n", 243 | "Finalist 545\n", 244 | "Unsuccessful - I 177\n", 245 | "Not Judged 24\n", 246 | "Outstanding Winner 14\n", 247 | "AMS Award 6\n", 248 | "INFORMS Award 5\n", 249 | "SIAM Award 5\n", 250 | "MAA Award 3\n", 251 | "COMAP Scholarship Award 2\n", 252 | "Leonhard Euler Award 1\n", 253 | "Ben Fusaro Award 1\n", 254 | "Vilfredo Pareto Award 1\n", 255 | "Rachel Carson Award 1\n", 256 | "Frank Giordano Award 1\n", 257 | "Unsuccessful - [ 1\n", 258 | "Name: prize, dtype: int64" 259 | ] 260 | }, 261 | "execution_count": 7, 262 | "metadata": {}, 263 | "output_type": "execute_result" 264 | } 265 | ], 266 | "source": [ 267 | "data['prize'].value_counts()" 268 | ] 269 | }, 270 | { 271 | "cell_type": "code", 272 | "execution_count": 8, 273 | "metadata": {}, 274 | "outputs": [ 275 | { 276 | "data": { 277 | "text/html": [ 278 | "
\n", 279 | "\n", 292 | "\n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | "
control_numberstudent1student2student3advisoruniversityprize
962300136Hanzhang ZhouHuangyii ZhengXiaoyang CaoHeng LiangTsinghua UniversityINFORMS Award
1692300229Cao HonglinZhou ZijianHu YongqiLi MingqiJniversity of Electronic Science and Technolog...Leonhard Euler Award
2602300336Jiahao LuoTianyu XiongYuting ZhangGuoliang HeUniversity of Electronic Science and Technolog...AMS Award
10372309229Yuhao SunZiruo WangShuo ZhangHai JinBeijing Institute of TechnologyBen Fusaro Award
15322309766Carrie CoxJobi LoElias CoppockWai LauSeattle Pacific UniversityMAA Award
24062310776Duffy AndersonMatthew HelmerMadeline RueMei ZhuPacific Lutheran UniversityMAA Award
28322311258Haiyan ZhangTao ZhuangYunuo LeiQingsong ZouXIDIAN UNIVERSITYAMS Award
30772311517Taining YanKaiqun WuLijie ChenTaining YanRenmin University of ChinaVilfredo Pareto Award
39122312411Dingkai WeiYuecheng WangWeilong ZhuYuchao LiChang'an UniversityRachel Carson Award
55612314151Jing RenChenyue XiaAnyYu PanGuibing GuoNortheastern University of ChinaCOMAP Scholarship Award
63982315018Hongyu LangYutong ShaoXiaqing ZhouJigao YanSoochow UniversitySIAM Award
66922315321Baoyang ZhangLei TianZihan WuJun LuNational University of Defense TechnologySIAM Award
67492315379Zhu XiangyuLiang KatyinWei XiaoqinWang XiaoyinTiangong UniversityFrank Giordano Award
83052316994Zichen CaoYunyujie DuXinyi JiangXiaofeng GaoShanghai Jiao Tong UniversityINFORMS Award
94882318300Enzo Moraes MescallNicolas SalazarErik Mendes NovakMaria-Veronica CiocanelDuke UniversityCOMAP Scholarship Award
101562318982Kehan TongYuqi YangYan DuQiang YaoEast China Normal UniversitySIAM Award
103512301192Jianjie ZhengWeikang LiYao HouLei LiuZhejiang University of Finance and EconomicsAMS Award
121282320131Song YushuaiZhao ChenxiaHu YunboSong YushuaiTianjin UniversitySIAM Award
145082322645Steven Sofos DiSilvioAnthony OzerovLeon ZhouGeorge DragomirColumbia UniversityINFORMS Award
145462322687Caden LinMaksym BondarenkoPhillip M YanGeorge DragomirColumbia UniversityMAA Award
163002303950Yuewen YangYifan QiYuechuan MaBo WangBeiing Institute of TechnologySIAM Award
163132303967Jingjia PengXinyi HuangXuejun ZhangXiaofeng GaoShanghai Jiao Tong UniversityAMS Award
171812304962Zhu XiaotianLiu JingwenLiu XinjieChen HuaChina University of PetroleumINFORMS Award
179122305794Zhang ChuxiaoWang ChenghanZhang YingYuli ZHANGBeijing Institute of TechnologyINFORMS Award
193082307336Zhaohong LiaoEnyang LiYingyi LiuZhi GaoWuhan UniversityAMS Award
207492308899Ruomu LiChenyu MaMengyuan DaiDongxue YanNanjing University of Posts and TelecommunicationAMS Award
\n", 568 | "
" 569 | ], 570 | "text/plain": [ 571 | " control_number student1 student2 \\\n", 572 | "96 2300136 Hanzhang Zhou Huangyii Zheng \n", 573 | "169 2300229 Cao Honglin Zhou Zijian \n", 574 | "260 2300336 Jiahao Luo Tianyu Xiong \n", 575 | "1037 2309229 Yuhao Sun Ziruo Wang \n", 576 | "1532 2309766 Carrie Cox Jobi Lo \n", 577 | "2406 2310776 Duffy Anderson Matthew Helmer \n", 578 | "2832 2311258 Haiyan Zhang Tao Zhuang \n", 579 | "3077 2311517 Taining Yan Kaiqun Wu \n", 580 | "3912 2312411 Dingkai Wei Yuecheng Wang \n", 581 | "5561 2314151 Jing Ren Chenyue Xia \n", 582 | "6398 2315018 Hongyu Lang Yutong Shao \n", 583 | "6692 2315321 Baoyang Zhang Lei Tian \n", 584 | "6749 2315379 Zhu Xiangyu Liang Katyin \n", 585 | "8305 2316994 Zichen Cao Yunyujie Du \n", 586 | "9488 2318300 Enzo Moraes Mescall Nicolas Salazar \n", 587 | "10156 2318982 Kehan Tong Yuqi Yang \n", 588 | "10351 2301192 Jianjie Zheng Weikang Li \n", 589 | "12128 2320131 Song Yushuai Zhao Chenxia \n", 590 | "14508 2322645 Steven Sofos DiSilvio Anthony Ozerov \n", 591 | "14546 2322687 Caden Lin Maksym Bondarenko \n", 592 | "16300 2303950 Yuewen Yang Yifan Qi \n", 593 | "16313 2303967 Jingjia Peng Xinyi Huang \n", 594 | "17181 2304962 Zhu Xiaotian Liu Jingwen \n", 595 | "17912 2305794 Zhang Chuxiao Wang Chenghan \n", 596 | "19308 2307336 Zhaohong Liao Enyang Li \n", 597 | "20749 2308899 Ruomu Li Chenyu Ma \n", 598 | "\n", 599 | " student3 advisor \\\n", 600 | "96 Xiaoyang Cao Heng Liang \n", 601 | "169 Hu Yongqi Li Mingqi \n", 602 | "260 Yuting Zhang Guoliang He \n", 603 | "1037 Shuo Zhang Hai Jin \n", 604 | "1532 Elias Coppock Wai Lau \n", 605 | "2406 Madeline Rue Mei Zhu \n", 606 | "2832 Yunuo Lei Qingsong Zou \n", 607 | "3077 Lijie Chen Taining Yan \n", 608 | "3912 Weilong Zhu Yuchao Li \n", 609 | "5561 AnyYu Pan Guibing Guo \n", 610 | "6398 Xiaqing Zhou Jigao Yan \n", 611 | "6692 Zihan Wu Jun Lu \n", 612 | "6749 Wei Xiaoqin Wang Xiaoyin \n", 613 | "8305 Xinyi Jiang Xiaofeng Gao \n", 614 | "9488 Erik Mendes Novak Maria-Veronica Ciocanel \n", 615 | "10156 Yan Du Qiang Yao \n", 616 | "10351 Yao Hou Lei Liu \n", 617 | "12128 Hu Yunbo Song Yushuai \n", 618 | "14508 Leon Zhou George Dragomir \n", 619 | "14546 Phillip M Yan George Dragomir \n", 620 | "16300 Yuechuan Ma Bo Wang \n", 621 | "16313 Xuejun Zhang Xiaofeng Gao \n", 622 | "17181 Liu Xinjie Chen Hua \n", 623 | "17912 Zhang Ying Yuli ZHANG \n", 624 | "19308 Yingyi Liu Zhi Gao \n", 625 | "20749 Mengyuan Dai Dongxue Yan \n", 626 | "\n", 627 | " university \\\n", 628 | "96 Tsinghua University \n", 629 | "169 Jniversity of Electronic Science and Technolog... \n", 630 | "260 University of Electronic Science and Technolog... \n", 631 | "1037 Beijing Institute of Technology \n", 632 | "1532 Seattle Pacific University \n", 633 | "2406 Pacific Lutheran University \n", 634 | "2832 XIDIAN UNIVERSITY \n", 635 | "3077 Renmin University of China \n", 636 | "3912 Chang'an University \n", 637 | "5561 Northeastern University of China \n", 638 | "6398 Soochow University \n", 639 | "6692 National University of Defense Technology \n", 640 | "6749 Tiangong University \n", 641 | "8305 Shanghai Jiao Tong University \n", 642 | "9488 Duke University \n", 643 | "10156 East China Normal University \n", 644 | "10351 Zhejiang University of Finance and Economics \n", 645 | "12128 Tianjin University \n", 646 | "14508 Columbia University \n", 647 | "14546 Columbia University \n", 648 | "16300 Beiing Institute of Technology \n", 649 | "16313 Shanghai Jiao Tong University \n", 650 | "17181 China University of Petroleum \n", 651 | "17912 Beijing Institute of Technology \n", 652 | "19308 Wuhan University \n", 653 | "20749 Nanjing University of Posts and Telecommunication \n", 654 | "\n", 655 | " prize \n", 656 | "96 INFORMS Award \n", 657 | "169 Leonhard Euler Award \n", 658 | "260 AMS Award \n", 659 | "1037 Ben Fusaro Award \n", 660 | "1532 MAA Award \n", 661 | "2406 MAA Award \n", 662 | "2832 AMS Award \n", 663 | "3077 Vilfredo Pareto Award \n", 664 | "3912 Rachel Carson Award \n", 665 | "5561 COMAP Scholarship Award \n", 666 | "6398 SIAM Award \n", 667 | "6692 SIAM Award \n", 668 | "6749 Frank Giordano Award \n", 669 | "8305 INFORMS Award \n", 670 | "9488 COMAP Scholarship Award \n", 671 | "10156 SIAM Award \n", 672 | "10351 AMS Award \n", 673 | "12128 SIAM Award \n", 674 | "14508 INFORMS Award \n", 675 | "14546 MAA Award \n", 676 | "16300 SIAM Award \n", 677 | "16313 AMS Award \n", 678 | "17181 INFORMS Award \n", 679 | "17912 INFORMS Award \n", 680 | "19308 AMS Award \n", 681 | "20749 AMS Award " 682 | ] 683 | }, 684 | "execution_count": 8, 685 | "metadata": {}, 686 | "output_type": "execute_result" 687 | } 688 | ], 689 | "source": [ 690 | "avard_result=data.loc[(data['prize'].str.contains('Award'))]\n", 691 | "avard_result" 692 | ] 693 | }, 694 | { 695 | "cell_type": "code", 696 | "execution_count": 9, 697 | "metadata": { 698 | "scrolled": false 699 | }, 700 | "outputs": [ 701 | { 702 | "data": { 703 | "text/html": [ 704 | "
\n", 705 | "\n", 718 | "\n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | " \n", 742 | " \n", 743 | " \n", 744 | " \n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | " \n", 755 | " \n", 756 | " \n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | " \n", 763 | " \n", 764 | " \n", 765 | " \n", 766 | " \n", 767 | " \n", 768 | " \n", 769 | " \n", 770 | " \n", 771 | " \n", 772 | " \n", 773 | " \n", 774 | " \n", 775 | " \n", 776 | " \n", 777 | " \n", 778 | " \n", 779 | " \n", 780 | " \n", 781 | " \n", 782 | " \n", 783 | " \n", 784 | " \n", 785 | " \n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | "
control_numberstudent1student2student3advisoruniversityprize
1572300214Hao YangYuxin HuDi LiuZhiHong YangHuazhong University of Science and TechnologyDisqualified - P
1652300223Yingzhong HuaYanwei TanJichen BianYingzhong HuaHuazhong University of Science and TechnologySuccessful Participant
5882300708Xiang LiYu HuJunHang MaXiang LiHuazhong University of Science and TechnologySuccessful Participant
6372300772Yitian HanAnyang LiRuoxin WuGang XuHuazhong University of Science and TechnologySuccessful Participant
7222300883Lesi HuHannan ChenYulang HongSuyang MaHuazhong University of Science and TechnologySuccessful Participant
........................
208162308976Xiaokai ZhangMuchu ChenBowen ZhouChen YuHuazhong University of Science and TechnologyHonorable Mention
208202308980Xuebin ZhouYutong DingChenmin KeHaoyuan XuHuazhong University of Science and TechnologyHonorable Mention
208222308982Jiongfan ZhuYilong ChenYuezhang LongJiongfan ZhuHuazhong University of Science and TechnologySuccessful Participant
208262308986Lihui ZhangXin HuChenyang XiongLi LiHuazhong University of Science and TechnologyFinalist
208272308987Ziheng HuangZihe LiuWensheng YangZiheng HuangHuazhong University of Science and TechnologySuccessful Participant
\n", 844 | "

338 rows × 7 columns

\n", 845 | "
" 846 | ], 847 | "text/plain": [ 848 | " control_number student1 student2 student3 \\\n", 849 | "157 2300214 Hao Yang Yuxin Hu Di Liu \n", 850 | "165 2300223 Yingzhong Hua Yanwei Tan Jichen Bian \n", 851 | "588 2300708 Xiang Li Yu Hu JunHang Ma \n", 852 | "637 2300772 Yitian Han Anyang Li Ruoxin Wu \n", 853 | "722 2300883 Lesi Hu Hannan Chen Yulang Hong \n", 854 | "... ... ... ... ... \n", 855 | "20816 2308976 Xiaokai Zhang Muchu Chen Bowen Zhou \n", 856 | "20820 2308980 Xuebin Zhou Yutong Ding Chenmin Ke \n", 857 | "20822 2308982 Jiongfan Zhu Yilong Chen Yuezhang Long \n", 858 | "20826 2308986 Lihui Zhang Xin Hu Chenyang Xiong \n", 859 | "20827 2308987 Ziheng Huang Zihe Liu Wensheng Yang \n", 860 | "\n", 861 | " advisor university \\\n", 862 | "157 ZhiHong Yang Huazhong University of Science and Technology \n", 863 | "165 Yingzhong Hua Huazhong University of Science and Technology \n", 864 | "588 Xiang Li Huazhong University of Science and Technology \n", 865 | "637 Gang Xu Huazhong University of Science and Technology \n", 866 | "722 Suyang Ma Huazhong University of Science and Technology \n", 867 | "... ... ... \n", 868 | "20816 Chen Yu Huazhong University of Science and Technology \n", 869 | "20820 Haoyuan Xu Huazhong University of Science and Technology \n", 870 | "20822 Jiongfan Zhu Huazhong University of Science and Technology \n", 871 | "20826 Li Li Huazhong University of Science and Technology \n", 872 | "20827 Ziheng Huang Huazhong University of Science and Technology \n", 873 | "\n", 874 | " prize \n", 875 | "157 Disqualified - P \n", 876 | "165 Successful Participant \n", 877 | "588 Successful Participant \n", 878 | "637 Successful Participant \n", 879 | "722 Successful Participant \n", 880 | "... ... \n", 881 | "20816 Honorable Mention \n", 882 | "20820 Honorable Mention \n", 883 | "20822 Successful Participant \n", 884 | "20826 Finalist \n", 885 | "20827 Successful Participant \n", 886 | "\n", 887 | "[338 rows x 7 columns]" 888 | ] 889 | }, 890 | "execution_count": 9, 891 | "metadata": {}, 892 | "output_type": "execute_result" 893 | } 894 | ], 895 | "source": [ 896 | "your_univ_result=data.loc[data['university']==your_university]\n", 897 | "your_univ_result" 898 | ] 899 | }, 900 | { 901 | "cell_type": "code", 902 | "execution_count": 10, 903 | "metadata": { 904 | "scrolled": true 905 | }, 906 | "outputs": [ 907 | { 908 | "data": { 909 | "text/plain": [ 910 | "Successful Participant 223\n", 911 | "Honorable Mention 72\n", 912 | "Meritorious Winner 20\n", 913 | "Disqualified - P 14\n", 914 | "Finalist 8\n", 915 | "Unsuccessful - I 1\n", 916 | "Name: prize, dtype: int64" 917 | ] 918 | }, 919 | "execution_count": 10, 920 | "metadata": {}, 921 | "output_type": "execute_result" 922 | } 923 | ], 924 | "source": [ 925 | "your_univ_result['prize'].value_counts()" 926 | ] 927 | }, 928 | { 929 | "cell_type": "code", 930 | "execution_count": 11, 931 | "metadata": { 932 | "scrolled": false 933 | }, 934 | "outputs": [ 935 | { 936 | "data": { 937 | "text/html": [ 938 | "
\n", 939 | "\n", 952 | "\n", 953 | " \n", 954 | " \n", 955 | " \n", 956 | " \n", 957 | " \n", 958 | " \n", 959 | " \n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | "
control_numberstudent1student2student3advisoruniversityprize
\n", 968 | "
" 969 | ], 970 | "text/plain": [ 971 | "Empty DataFrame\n", 972 | "Columns: [control_number, student1, student2, student3, advisor, university, prize]\n", 973 | "Index: []" 974 | ] 975 | }, 976 | "execution_count": 11, 977 | "metadata": {}, 978 | "output_type": "execute_result" 979 | } 980 | ], 981 | "source": [ 982 | "prize_result=your_univ_result.loc[(your_univ_result['prize']=='Outstanding Winner') | (your_univ_result['prize'].str.contains('Award'))]\n", 983 | "prize_result" 984 | ] 985 | }, 986 | { 987 | "cell_type": "code", 988 | "execution_count": null, 989 | "metadata": {}, 990 | "outputs": [], 991 | "source": [] 992 | }, 993 | { 994 | "cell_type": "code", 995 | "execution_count": 12, 996 | "metadata": {}, 997 | "outputs": [ 998 | { 999 | "data": { 1000 | "text/html": [ 1001 | "
\n", 1002 | "\n", 1015 | "\n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | " \n", 1024 | " \n", 1025 | " \n", 1026 | " \n", 1027 | " \n", 1028 | " \n", 1029 | " \n", 1030 | " \n", 1031 | " \n", 1032 | " \n", 1033 | " \n", 1034 | " \n", 1035 | " \n", 1036 | " \n", 1037 | " \n", 1038 | " \n", 1039 | " \n", 1040 | " \n", 1041 | " \n", 1042 | " \n", 1043 | " \n", 1044 | " \n", 1045 | " \n", 1046 | " \n", 1047 | " \n", 1048 | " \n", 1049 | " \n", 1050 | " \n", 1051 | " \n", 1052 | " \n", 1053 | " \n", 1054 | " \n", 1055 | " \n", 1056 | " \n", 1057 | " \n", 1058 | " \n", 1059 | " \n", 1060 | " \n", 1061 | " \n", 1062 | " \n", 1063 | " \n", 1064 | " \n", 1065 | " \n", 1066 | " \n", 1067 | " \n", 1068 | " \n", 1069 | " \n", 1070 | " \n", 1071 | " \n", 1072 | " \n", 1073 | " \n", 1074 | " \n", 1075 | " \n", 1076 | " \n", 1077 | " \n", 1078 | " \n", 1079 | " \n", 1080 | " \n", 1081 | " \n", 1082 | " \n", 1083 | " \n", 1084 | " \n", 1085 | " \n", 1086 | " \n", 1087 | " \n", 1088 | " \n", 1089 | " \n", 1090 | " \n", 1091 | " \n", 1092 | " \n", 1093 | " \n", 1094 | " \n", 1095 | " \n", 1096 | " \n", 1097 | " \n", 1098 | " \n", 1099 | " \n", 1100 | " \n", 1101 | " \n", 1102 | " \n", 1103 | " \n", 1104 | " \n", 1105 | " \n", 1106 | " \n", 1107 | " \n", 1108 | " \n", 1109 | " \n", 1110 | "
control_numberstudent1student2student3advisoruniversityprize
28592311286Shituo MaAnqi LiuZixiong WangShituo MaHuazhong University of Science and TechnologyFinalist
43852312921Fanjun KongChenglong ZengDi WuKong FanjunHuazhong University of Science and TechnologyFinalist
46702313212Chen YihuaLv XinshengLin JunJieYang KaiHuazhong University of Science and TechnologyFinalist
49522313511Sitong ZhengYuanmeng ShanZiying ChenZhao PanHuazhong University of Science and TechnologyFinalist
196322307685Xiangqian YanKeyi ChenLing LuoHaoyuan XuHuazhong University of Science and TechnologyFinalist
196922307750Zuoming FuHatyue ChenHaoran ZhuZuoming FuHuazhong University of Science and TechnologyFinalist
207522308903Chenshen MaoZhixiong XiaShuning LuoHaoyuan XuHuazhong University of Science and TechnologyFinalist
208262308986Lihui ZhangXin HuChenyang XiongLi LiHuazhong University of Science and TechnologyFinalist
\n", 1111 | "
" 1112 | ], 1113 | "text/plain": [ 1114 | " control_number student1 student2 student3 \\\n", 1115 | "2859 2311286 Shituo Ma Anqi Liu Zixiong Wang \n", 1116 | "4385 2312921 Fanjun Kong Chenglong Zeng Di Wu \n", 1117 | "4670 2313212 Chen Yihua Lv Xinsheng Lin JunJie \n", 1118 | "4952 2313511 Sitong Zheng Yuanmeng Shan Ziying Chen \n", 1119 | "19632 2307685 Xiangqian Yan Keyi Chen Ling Luo \n", 1120 | "19692 2307750 Zuoming Fu Hatyue Chen Haoran Zhu \n", 1121 | "20752 2308903 Chenshen Mao Zhixiong Xia Shuning Luo \n", 1122 | "20826 2308986 Lihui Zhang Xin Hu Chenyang Xiong \n", 1123 | "\n", 1124 | " advisor university prize \n", 1125 | "2859 Shituo Ma Huazhong University of Science and Technology Finalist \n", 1126 | "4385 Kong Fanjun Huazhong University of Science and Technology Finalist \n", 1127 | "4670 Yang Kai Huazhong University of Science and Technology Finalist \n", 1128 | "4952 Zhao Pan Huazhong University of Science and Technology Finalist \n", 1129 | "19632 Haoyuan Xu Huazhong University of Science and Technology Finalist \n", 1130 | "19692 Zuoming Fu Huazhong University of Science and Technology Finalist \n", 1131 | "20752 Haoyuan Xu Huazhong University of Science and Technology Finalist \n", 1132 | "20826 Li Li Huazhong University of Science and Technology Finalist " 1133 | ] 1134 | }, 1135 | "execution_count": 12, 1136 | "metadata": {}, 1137 | "output_type": "execute_result" 1138 | } 1139 | ], 1140 | "source": [ 1141 | "prize_result=your_univ_result.loc[your_univ_result['prize']=='Finalist']\n", 1142 | "prize_result" 1143 | ] 1144 | }, 1145 | { 1146 | "cell_type": "code", 1147 | "execution_count": null, 1148 | "metadata": {}, 1149 | "outputs": [], 1150 | "source": [] 1151 | }, 1152 | { 1153 | "cell_type": "code", 1154 | "execution_count": null, 1155 | "metadata": {}, 1156 | "outputs": [], 1157 | "source": [] 1158 | } 1159 | ], 1160 | "metadata": { 1161 | "kernelspec": { 1162 | "display_name": "Python 3", 1163 | "language": "python", 1164 | "name": "python3" 1165 | }, 1166 | "language_info": { 1167 | "codemirror_mode": { 1168 | "name": "ipython", 1169 | "version": 3 1170 | }, 1171 | "file_extension": ".py", 1172 | "mimetype": "text/x-python", 1173 | "name": "python", 1174 | "nbconvert_exporter": "python", 1175 | "pygments_lexer": "ipython3", 1176 | "version": "3.7.6" 1177 | } 1178 | }, 1179 | "nbformat": 4, 1180 | "nbformat_minor": 4 1181 | } 1182 | -------------------------------------------------------------------------------- /analysis_2024.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import shutil\n", 10 | "import pandas as pd\n", 11 | "from config import your_university" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 2, 17 | "metadata": { 18 | "scrolled": true 19 | }, 20 | "outputs": [ 21 | { 22 | "data": { 23 | "text/html": [ 24 | "
\n", 25 | "\n", 38 | "\n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | "
control_numberstudent1student2student3universityprize
02400002Huang JiaruiLuo ZimengZhang YifaBeijing Normal UniversityHonorable Mention
12400004Chongqin ChenJunyi LiuRuishu HuangNingbo UniversitySuccessful Participant
22400006Xinkai WuGaoyuan FengNuoheng ZhouNingbo UniversityHonorable Mention
32400007Xiatian ZhangRunyi LinYuehan YangNingbo UniversityFinalist
42400008Kang-liang WangFei NiZi-shuo WangNingbo UniversitySuccessful Participant
\n", 98 | "
" 99 | ], 100 | "text/plain": [ 101 | " control_number student1 student2 student3 \\\n", 102 | "0 2400002 Huang Jiarui Luo Zimeng Zhang Yifa \n", 103 | "1 2400004 Chongqin Chen Junyi Liu Ruishu Huang \n", 104 | "2 2400006 Xinkai Wu Gaoyuan Feng Nuoheng Zhou \n", 105 | "3 2400007 Xiatian Zhang Runyi Lin Yuehan Yang \n", 106 | "4 2400008 Kang-liang Wang Fei Ni Zi-shuo Wang \n", 107 | "\n", 108 | " university prize \n", 109 | "0 Beijing Normal University Honorable Mention \n", 110 | "1 Ningbo University Successful Participant \n", 111 | "2 Ningbo University Honorable Mention \n", 112 | "3 Ningbo University Finalist \n", 113 | "4 Ningbo University Successful Participant " 114 | ] 115 | }, 116 | "execution_count": 2, 117 | "metadata": {}, 118 | "output_type": "execute_result" 119 | } 120 | ], 121 | "source": [ 122 | "shutil.copyfile('./all/all_2024.txt', './all/all_2024.csv')\n", 123 | "data = pd.read_csv('./all/all_2024.csv')\n", 124 | "data=data.iloc[:,0:6]\n", 125 | "data.head()" 126 | ] 127 | }, 128 | { 129 | "cell_type": "code", 130 | "execution_count": 3, 131 | "metadata": {}, 132 | "outputs": [ 133 | { 134 | "data": { 135 | "text/plain": [ 136 | "Jilin University 572\n", 137 | "Harbin Engineering University 560\n", 138 | "Huazhong University of Science and Technology 511\n", 139 | "Northwestern Polytechnical University 497\n", 140 | "Xi'an Jiaotong University 494\n", 141 | "Beihang University 451\n", 142 | "Nanjing University of Posts and Telecommunication 410\n", 143 | "Dalian University of Technology 387\n", 144 | "South China University of Technology 372\n", 145 | "XIDIAN UNIVERSITY 368\n", 146 | "Chongqing University 337\n", 147 | "Wuhan University 337\n", 148 | "Shanghai Jiao Tong University 330\n", 149 | "Harbin Institute of Technology 326\n", 150 | "Xidian University 285\n", 151 | "SUN YAT-SEN UNIVERSITY 273\n", 152 | "Northeastern University 270\n", 153 | "National University of Defense Technology 267\n", 154 | "Being Jiaotong University 266\n", 155 | "Beijing Institute of Technology 262\n", 156 | "Name: university, dtype: int64" 157 | ] 158 | }, 159 | "execution_count": 3, 160 | "metadata": {}, 161 | "output_type": "execute_result" 162 | } 163 | ], 164 | "source": [ 165 | "univ_data=data['university'].value_counts().iloc[0:20]\n", 166 | "univ_data" 167 | ] 168 | }, 169 | { 170 | "cell_type": "code", 171 | "execution_count": 4, 172 | "metadata": { 173 | "scrolled": true 174 | }, 175 | "outputs": [ 176 | { 177 | "data": { 178 | "image/png": "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\n", 179 | "text/plain": [ 180 | "
" 181 | ] 182 | }, 183 | "metadata": { 184 | "needs_background": "light" 185 | }, 186 | "output_type": "display_data" 187 | } 188 | ], 189 | "source": [ 190 | "\n", 191 | "ax=univ_data.sort_values().plot.barh()\n", 192 | "fig=ax.get_figure()\n", 193 | "fig.savefig('统计结果.png',bbox_inches='tight')" 194 | ] 195 | }, 196 | { 197 | "cell_type": "code", 198 | "execution_count": 5, 199 | "metadata": {}, 200 | "outputs": [ 201 | { 202 | "data": { 203 | "text/plain": [ 204 | "Successful Participant 18103\n", 205 | "Honorable Mention 6643\n", 206 | "Meritorious Winner 1918\n", 207 | "Disqualified - P 1432\n", 208 | "Finalist 506\n", 209 | "Unsuccessful - I 127\n", 210 | "Not Judged 24\n", 211 | "Outstanding Winner 13\n", 212 | "AMS Award 6\n", 213 | "INFORMS Award 6\n", 214 | "SIAM Award 5\n", 215 | "MAA Award 3\n", 216 | "COMAP Scholarship Award 2\n", 217 | "Leonhard Euler Award 1\n", 218 | "Vilfredo Pareto Award 1\n", 219 | "Rachel Carson Award 1\n", 220 | "ASA Award 1\n", 221 | "Cc 1\n", 222 | "Ben Fusaro Award 1\n", 223 | "Frank Giordano Award 1\n", 224 | "Name: prize, dtype: int64" 225 | ] 226 | }, 227 | "execution_count": 5, 228 | "metadata": {}, 229 | "output_type": "execute_result" 230 | } 231 | ], 232 | "source": [ 233 | "data['prize'].value_counts()" 234 | ] 235 | }, 236 | { 237 | "cell_type": "code", 238 | "execution_count": 6, 239 | "metadata": {}, 240 | "outputs": [ 241 | { 242 | "data": { 243 | "text/html": [ 244 | "
\n", 245 | "\n", 258 | "\n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | "
control_numberstudent1student2student3universityprize
28502407038Jiechuan GongFantong XiaJunhao ZengUESTCINFORMS Award
29012407093Haoran YiJunrong LiuZhe ZhaoBeijing Institute of TechnologyAMS Award
32082407414Jiajun LeiJunjie WangRuiyang LiuXi'an Jiaotong UniversityAMS Award
55322400860Xinyu HuJiarui LiangDongsheng SuZhejiang Sci-Tech UniversityRachel Carson Award
56562400996Zhen HuangHonghui CaoZhenning LiuWuhan UniversityINFORMS Award
60862409949YANHENG LIHONG JIANGLING GANRenmin University of ChinaCOMAP Scholarship Award
65992410482ZIXUAN TANGYITING YANGXINYU CHENBeijing Normal UniversityINFORMS Award
69472410846Heyu HuangJiahui ZhaiWeibin LiXiamen UniversityBen Fusaro Award
69892410889Wenlong ChenYihui LiWei ZhuShenzhen UniversitySIAM Award
76402411570Yutong WangHaoqi LvPengkun WangChina University of Geosciences BeingFrank Giordano Award
95402413552Qianjing ZhuWenhao YuanYunjie ShaoSoochow UniversityINFORMS Award
95532413565Xu YanZhou YangyujieHuo ZhengyjiXi'an University of Posts and TelecommunicationsINFORMS Award
107272401298Junjie FeiYuxin ShenKaijie DuFudan UniversityAMS Award
133202417004Jiahao ZhuChengzhen HanDongyi JiangEast China Normal UniversityINFORMS Award
141272417831Yue ZhongYueming CaoBo WuTsinghua UniversityLeonhard Euler Award
161332401919Shang Yue LiYuChun YangHuiXue SuRenmin University of ChinaSIAM Award
162932419588Haoyang PengWei LiSiyuan WangNational University of Defense TechnologyAMS Award
166812419984Zeyang WuXinhiang LiXiran NiTongji UniversityAMS Award
186542422054Yi WuJiankai LiChenyang PanShanghai Jiao Tong UniversityVilfredo Pareto Award
192312422656Aranjinsuren EnkhbatBisrat KassieJordan SimsBrandeis UniversityMAA Award
208862424371Xinyu SuiJi ZhengYuhang MaXi'an Jiaotong UniversitySIAM Award
227212425792Cunxin FanHaonan WangKe ZhangShanghai Jiao Tong UniversitySIAM Award
238192426941Wei SunTing MeiFangyuan LiuHunan Normal UniversityAMS Award
252732428463Yilin MaXuantong WangJingyi SunNorth China University of TechnologyASA Award
259292429166Christopher KanBrandon LuBenny SunDuke UniversityMAA Award
259672429211Arjun TanejaPaco NavarroMax CollinsHarvey Mudd CollegeCOMAP Scholarship Award
266752402960Hangyi YaoJiting ChenZeyu LiangNingbo UniversitySIAM Award
271502429973Henry LiYuxin LiCrystal SuColumbia UniversityMAA Award
\n", 525 | "
" 526 | ], 527 | "text/plain": [ 528 | " control_number student1 student2 student3 \\\n", 529 | "2850 2407038 Jiechuan Gong Fantong Xia Junhao Zeng \n", 530 | "2901 2407093 Haoran Yi Junrong Liu Zhe Zhao \n", 531 | "3208 2407414 Jiajun Lei Junjie Wang Ruiyang Liu \n", 532 | "5532 2400860 Xinyu Hu Jiarui Liang Dongsheng Su \n", 533 | "5656 2400996 Zhen Huang Honghui Cao Zhenning Liu \n", 534 | "6086 2409949 YANHENG LI HONG JIANG LING GAN \n", 535 | "6599 2410482 ZIXUAN TANG YITING YANG XINYU CHEN \n", 536 | "6947 2410846 Heyu Huang Jiahui Zhai Weibin Li \n", 537 | "6989 2410889 Wenlong Chen Yihui Li Wei Zhu \n", 538 | "7640 2411570 Yutong Wang Haoqi Lv Pengkun Wang \n", 539 | "9540 2413552 Qianjing Zhu Wenhao Yuan Yunjie Shao \n", 540 | "9553 2413565 Xu Yan Zhou Yangyujie Huo Zhengyji \n", 541 | "10727 2401298 Junjie Fei Yuxin Shen Kaijie Du \n", 542 | "13320 2417004 Jiahao Zhu Chengzhen Han Dongyi Jiang \n", 543 | "14127 2417831 Yue Zhong Yueming Cao Bo Wu \n", 544 | "16133 2401919 Shang Yue Li YuChun Yang HuiXue Su \n", 545 | "16293 2419588 Haoyang Peng Wei Li Siyuan Wang \n", 546 | "16681 2419984 Zeyang Wu Xinhiang Li Xiran Ni \n", 547 | "18654 2422054 Yi Wu Jiankai Li Chenyang Pan \n", 548 | "19231 2422656 Aranjinsuren Enkhbat Bisrat Kassie Jordan Sims \n", 549 | "20886 2424371 Xinyu Sui Ji Zheng Yuhang Ma \n", 550 | "22721 2425792 Cunxin Fan Haonan Wang Ke Zhang \n", 551 | "23819 2426941 Wei Sun Ting Mei Fangyuan Liu \n", 552 | "25273 2428463 Yilin Ma Xuantong Wang Jingyi Sun \n", 553 | "25929 2429166 Christopher Kan Brandon Lu Benny Sun \n", 554 | "25967 2429211 Arjun Taneja Paco Navarro Max Collins \n", 555 | "26675 2402960 Hangyi Yao Jiting Chen Zeyu Liang \n", 556 | "27150 2429973 Henry Li Yuxin Li Crystal Su \n", 557 | "\n", 558 | " university \\\n", 559 | "2850 UESTC \n", 560 | "2901 Beijing Institute of Technology \n", 561 | "3208 Xi'an Jiaotong University \n", 562 | "5532 Zhejiang Sci-Tech University \n", 563 | "5656 Wuhan University \n", 564 | "6086 Renmin University of China \n", 565 | "6599 Beijing Normal University \n", 566 | "6947 Xiamen University \n", 567 | "6989 Shenzhen University \n", 568 | "7640 China University of Geosciences Being \n", 569 | "9540 Soochow University \n", 570 | "9553 Xi'an University of Posts and Telecommunications \n", 571 | "10727 Fudan University \n", 572 | "13320 East China Normal University \n", 573 | "14127 Tsinghua University \n", 574 | "16133 Renmin University of China \n", 575 | "16293 National University of Defense Technology \n", 576 | "16681 Tongji University \n", 577 | "18654 Shanghai Jiao Tong University \n", 578 | "19231 Brandeis University \n", 579 | "20886 Xi'an Jiaotong University \n", 580 | "22721 Shanghai Jiao Tong University \n", 581 | "23819 Hunan Normal University \n", 582 | "25273 North China University of Technology \n", 583 | "25929 Duke University \n", 584 | "25967 Harvey Mudd College \n", 585 | "26675 Ningbo University \n", 586 | "27150 Columbia University \n", 587 | "\n", 588 | " prize \n", 589 | "2850 INFORMS Award \n", 590 | "2901 AMS Award \n", 591 | "3208 AMS Award \n", 592 | "5532 Rachel Carson Award \n", 593 | "5656 INFORMS Award \n", 594 | "6086 COMAP Scholarship Award \n", 595 | "6599 INFORMS Award \n", 596 | "6947 Ben Fusaro Award \n", 597 | "6989 SIAM Award \n", 598 | "7640 Frank Giordano Award \n", 599 | "9540 INFORMS Award \n", 600 | "9553 INFORMS Award \n", 601 | "10727 AMS Award \n", 602 | "13320 INFORMS Award \n", 603 | "14127 Leonhard Euler Award \n", 604 | "16133 SIAM Award \n", 605 | "16293 AMS Award \n", 606 | "16681 AMS Award \n", 607 | "18654 Vilfredo Pareto Award \n", 608 | "19231 MAA Award \n", 609 | "20886 SIAM Award \n", 610 | "22721 SIAM Award \n", 611 | "23819 AMS Award \n", 612 | "25273 ASA Award \n", 613 | "25929 MAA Award \n", 614 | "25967 COMAP Scholarship Award \n", 615 | "26675 SIAM Award \n", 616 | "27150 MAA Award " 617 | ] 618 | }, 619 | "execution_count": 6, 620 | "metadata": {}, 621 | "output_type": "execute_result" 622 | } 623 | ], 624 | "source": [ 625 | "avard_result=data.loc[(data['prize'].str.contains('Award'))]\n", 626 | "avard_result" 627 | ] 628 | }, 629 | { 630 | "cell_type": "code", 631 | "execution_count": 7, 632 | "metadata": { 633 | "scrolled": false 634 | }, 635 | "outputs": [ 636 | { 637 | "data": { 638 | "text/html": [ 639 | "
\n", 640 | "\n", 653 | "\n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | " \n", 702 | " \n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | " \n", 742 | " \n", 743 | " \n", 744 | " \n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | " \n", 755 | " \n", 756 | " \n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | " \n", 763 | " \n", 764 | " \n", 765 | " \n", 766 | "
control_numberstudent1student2student3universityprize
1022400114Zishuo WangYucheng ChenYanjinghao XuHuazhong University of Science and TechnologySuccessful Participant
1242400139Boheng LinZhipu HuZhenghao GaoHuazhong University of Science and TechnologyHonorable Mention
1322400147He YinHaiZhuo WangHaoze LiHuazhong University of Science and TechnologySuccessful Participant
1502400167Jingchao LuRuiXin DongYaxiang GaoHuazhong University of Science and TechnologySuccessful Participant
1652400185Jinlong MaZhimin LuoLeying FuHuazhong University of Science and TechnologySuccessful Participant
.....................
280812403746Jiaye PengYuanzheng LiWeiping ShenHuazhong University of Science and TechnologySuccessful Participant
280832403748Zichuan WangXAuanze YoungYuhang DingHuazhong University of Science and TechnologyHonorable Mention
280962403761Xiangyi LiLin ChenLitong ShiHuazhong University of Science and TechnologyDisqualified - P
282912403964Huadong SongHanxiang LvLiang ZhangHuazhong University of Science and TechnologySuccessful Participant
282972403971Leon Huangjared zhouJoeHuazhong University of Science and TechnologyHonorable Mention
\n", 767 | "

511 rows × 6 columns

\n", 768 | "
" 769 | ], 770 | "text/plain": [ 771 | " control_number student1 student2 student3 \\\n", 772 | "102 2400114 Zishuo Wang Yucheng Chen Yanjinghao Xu \n", 773 | "124 2400139 Boheng Lin Zhipu Hu Zhenghao Gao \n", 774 | "132 2400147 He Yin HaiZhuo Wang Haoze Li \n", 775 | "150 2400167 Jingchao Lu RuiXin Dong Yaxiang Gao \n", 776 | "165 2400185 Jinlong Ma Zhimin Luo Leying Fu \n", 777 | "... ... ... ... ... \n", 778 | "28081 2403746 Jiaye Peng Yuanzheng Li Weiping Shen \n", 779 | "28083 2403748 Zichuan Wang XAuanze Young Yuhang Ding \n", 780 | "28096 2403761 Xiangyi Li Lin Chen Litong Shi \n", 781 | "28291 2403964 Huadong Song Hanxiang Lv Liang Zhang \n", 782 | "28297 2403971 Leon Huang jared zhou Joe \n", 783 | "\n", 784 | " university prize \n", 785 | "102 Huazhong University of Science and Technology Successful Participant \n", 786 | "124 Huazhong University of Science and Technology Honorable Mention \n", 787 | "132 Huazhong University of Science and Technology Successful Participant \n", 788 | "150 Huazhong University of Science and Technology Successful Participant \n", 789 | "165 Huazhong University of Science and Technology Successful Participant \n", 790 | "... ... ... \n", 791 | "28081 Huazhong University of Science and Technology Successful Participant \n", 792 | "28083 Huazhong University of Science and Technology Honorable Mention \n", 793 | "28096 Huazhong University of Science and Technology Disqualified - P \n", 794 | "28291 Huazhong University of Science and Technology Successful Participant \n", 795 | "28297 Huazhong University of Science and Technology Honorable Mention \n", 796 | "\n", 797 | "[511 rows x 6 columns]" 798 | ] 799 | }, 800 | "execution_count": 7, 801 | "metadata": {}, 802 | "output_type": "execute_result" 803 | } 804 | ], 805 | "source": [ 806 | "your_univ_result=data.loc[data['university']==your_university]\n", 807 | "your_univ_result" 808 | ] 809 | }, 810 | { 811 | "cell_type": "code", 812 | "execution_count": 8, 813 | "metadata": { 814 | "scrolled": true 815 | }, 816 | "outputs": [ 817 | { 818 | "data": { 819 | "text/plain": [ 820 | "Successful Participant 311\n", 821 | "Honorable Mention 130\n", 822 | "Meritorious Winner 39\n", 823 | "Disqualified - P 19\n", 824 | "Finalist 11\n", 825 | "Unsuccessful - I 1\n", 826 | "Name: prize, dtype: int64" 827 | ] 828 | }, 829 | "execution_count": 8, 830 | "metadata": {}, 831 | "output_type": "execute_result" 832 | } 833 | ], 834 | "source": [ 835 | "your_univ_result['prize'].value_counts()" 836 | ] 837 | }, 838 | { 839 | "cell_type": "code", 840 | "execution_count": 9, 841 | "metadata": { 842 | "scrolled": false 843 | }, 844 | "outputs": [ 845 | { 846 | "data": { 847 | "text/html": [ 848 | "
\n", 849 | "\n", 862 | "\n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | "
control_numberstudent1student2student3universityprize
\n", 877 | "
" 878 | ], 879 | "text/plain": [ 880 | "Empty DataFrame\n", 881 | "Columns: [control_number, student1, student2, student3, university, prize]\n", 882 | "Index: []" 883 | ] 884 | }, 885 | "execution_count": 9, 886 | "metadata": {}, 887 | "output_type": "execute_result" 888 | } 889 | ], 890 | "source": [ 891 | "prize_result=your_univ_result.loc[(your_univ_result['prize']=='Outstanding Winner') | (your_univ_result['prize'].str.contains('Award'))]\n", 892 | "prize_result" 893 | ] 894 | }, 895 | { 896 | "cell_type": "code", 897 | "execution_count": null, 898 | "metadata": {}, 899 | "outputs": [], 900 | "source": [] 901 | }, 902 | { 903 | "cell_type": "code", 904 | "execution_count": 10, 905 | "metadata": {}, 906 | "outputs": [ 907 | { 908 | "data": { 909 | "text/html": [ 910 | "
\n", 911 | "\n", 924 | "\n", 925 | " \n", 926 | " \n", 927 | " \n", 928 | " \n", 929 | " \n", 930 | " \n", 931 | " \n", 932 | " \n", 933 | " \n", 934 | " \n", 935 | " \n", 936 | " \n", 937 | " \n", 938 | " \n", 939 | " \n", 940 | " \n", 941 | " \n", 942 | " \n", 943 | " \n", 944 | " \n", 945 | " \n", 946 | " \n", 947 | " \n", 948 | " \n", 949 | " \n", 950 | " \n", 951 | " \n", 952 | " \n", 953 | " \n", 954 | " \n", 955 | " \n", 956 | " \n", 957 | " \n", 958 | " \n", 959 | " \n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | " \n", 968 | " \n", 969 | " \n", 970 | " \n", 971 | " \n", 972 | " \n", 973 | " \n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | " \n", 1024 | " \n", 1025 | " \n", 1026 | " \n", 1027 | " \n", 1028 | " \n", 1029 | " \n", 1030 | " \n", 1031 | " \n", 1032 | " \n", 1033 | " \n", 1034 | " \n", 1035 | " \n", 1036 | " \n", 1037 | "
control_numberstudent1student2student3universityprize
64652410343Qianyu ZhaoYanheng jiangShoukun GaoHuazhong University of Science and TechnologyFinalist
67212410612Xinlong ChenWanting WangYining DengHuazhong University of Science and TechnologyFinalist
68492410744Sheng DongXiang FanLewen YanHuazhong University of Science and TechnologyFinalist
71382411045Qu JiaJunLi JunhaoYu HaoHuazhong University of Science and TechnologyFinalist
72272411137Bin WangJiajun ZhangTiantong SunHuazhong University of Science and TechnologyFinalist
74252411343Tingjia HuYinda LiZehua CaoHuazhong University of Science and TechnologyFinalist
79222411866Hatying LaoYongye LaiMuze ZhouHuazhong University of Science and TechnologyFinalist
93052413307Feryang HuangShuchen PuChaoyang ZhengHuazhong University of Science and TechnologyFinalist
112332414823Bowen ZhengYiging YuanHuanyu LiuHuazhong University of Science and TechnologyFinalist
118392415449Wang LingyuLi ShengzhenHuang XinyueHuazhong University of Science and TechnologyFinalist
268002429594Jieang MaJiaxing FengQinglin JIHuazhong University of Science and TechnologyFinalist
\n", 1038 | "
" 1039 | ], 1040 | "text/plain": [ 1041 | " control_number student1 student2 student3 \\\n", 1042 | "6465 2410343 Qianyu Zhao Yanheng jiang Shoukun Gao \n", 1043 | "6721 2410612 Xinlong Chen Wanting Wang Yining Deng \n", 1044 | "6849 2410744 Sheng Dong Xiang Fan Lewen Yan \n", 1045 | "7138 2411045 Qu JiaJun Li Junhao Yu Hao \n", 1046 | "7227 2411137 Bin Wang Jiajun Zhang Tiantong Sun \n", 1047 | "7425 2411343 Tingjia Hu Yinda Li Zehua Cao \n", 1048 | "7922 2411866 Hatying Lao Yongye Lai Muze Zhou \n", 1049 | "9305 2413307 Feryang Huang Shuchen Pu Chaoyang Zheng \n", 1050 | "11233 2414823 Bowen Zheng Yiging Yuan Huanyu Liu \n", 1051 | "11839 2415449 Wang Lingyu Li Shengzhen Huang Xinyue \n", 1052 | "26800 2429594 Jieang Ma Jiaxing Feng Qinglin JI \n", 1053 | "\n", 1054 | " university prize \n", 1055 | "6465 Huazhong University of Science and Technology Finalist \n", 1056 | "6721 Huazhong University of Science and Technology Finalist \n", 1057 | "6849 Huazhong University of Science and Technology Finalist \n", 1058 | "7138 Huazhong University of Science and Technology Finalist \n", 1059 | "7227 Huazhong University of Science and Technology Finalist \n", 1060 | "7425 Huazhong University of Science and Technology Finalist \n", 1061 | "7922 Huazhong University of Science and Technology Finalist \n", 1062 | "9305 Huazhong University of Science and Technology Finalist \n", 1063 | "11233 Huazhong University of Science and Technology Finalist \n", 1064 | "11839 Huazhong University of Science and Technology Finalist \n", 1065 | "26800 Huazhong University of Science and Technology Finalist " 1066 | ] 1067 | }, 1068 | "execution_count": 10, 1069 | "metadata": {}, 1070 | "output_type": "execute_result" 1071 | } 1072 | ], 1073 | "source": [ 1074 | "prize_result=your_univ_result.loc[your_univ_result['prize']=='Finalist']\n", 1075 | "prize_result" 1076 | ] 1077 | }, 1078 | { 1079 | "cell_type": "code", 1080 | "execution_count": null, 1081 | "metadata": {}, 1082 | "outputs": [], 1083 | "source": [] 1084 | }, 1085 | { 1086 | "cell_type": "code", 1087 | "execution_count": null, 1088 | "metadata": {}, 1089 | "outputs": [], 1090 | "source": [] 1091 | } 1092 | ], 1093 | "metadata": { 1094 | "kernelspec": { 1095 | "display_name": "Python 3", 1096 | "language": "python", 1097 | "name": "python3" 1098 | }, 1099 | "language_info": { 1100 | "codemirror_mode": { 1101 | "name": "ipython", 1102 | "version": 3 1103 | }, 1104 | "file_extension": ".py", 1105 | "mimetype": "text/x-python", 1106 | "name": "python", 1107 | "nbconvert_exporter": "python", 1108 | "pygments_lexer": "ipython3", 1109 | "version": "3.7.6" 1110 | } 1111 | }, 1112 | "nbformat": 4, 1113 | "nbformat_minor": 4 1114 | } 1115 | -------------------------------------------------------------------------------- /config.py: -------------------------------------------------------------------------------- 1 | year = 23 2 | total_num = 30000 3 | # 进程数根据CPU和内存能力设置 4 | # step=30000/进程数 5 | #开30进程 6 | download_step = 1000 7 | #开30进程 8 | pdf2text_step = 1000 9 | #你的学校 10 | your_university= 'Huazhong University of Science and Technology' 11 | #TesseractOCR路径 12 | TesseractOCR_path = 'E:/prog/TesseractOCR/tesseract.exe' 13 | -------------------------------------------------------------------------------- /download.py: -------------------------------------------------------------------------------- 1 | """ 2 | 爬取美赛获奖证书,并以控制号命名 3 | 只运行一次部分下载会失败,需要运行多次,确保全部下载 4 | """ 5 | import os 6 | import requests 7 | from multiprocessing import Process 8 | from random import shuffle 9 | from config import * 10 | 11 | 12 | class CMcmCertificateCrawler(): 13 | def __init__(self, contol_nmuber): 14 | self.headers = { 15 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ' 16 | 'Chrome/73.0.3683.103 Safari/537.36' 17 | } 18 | self.control_number = contol_nmuber 19 | 20 | def FGetResponse(self): 21 | url = "http://www.comap-math.com/mcm/20" + str(year) + "Certs/" + str(self.control_number) + ".pdf" 22 | response = requests.get(url=url, headers=self.headers) 23 | # print(response.status_code) 24 | return response 25 | 26 | def FSavePDF(self, control_number): 27 | # 下载证书PDF 28 | try: 29 | path = './paper_20' + str(year) + '/' + str(control_number) + '.pdf' 30 | response = self.FGetResponse() 31 | # print(response.status_code) 32 | if response.status_code != 404: 33 | with open(path, 'wb') as f: 34 | f.write(response.content) 35 | print(str(control_number) + ".pdf" + "存储成功") 36 | else: 37 | print(control_number, ' -- 404') 38 | except Exception: 39 | print("Exception") 40 | 41 | 42 | def download(start, end): 43 | for control_number in range(start, end): 44 | control_number = '%05d' % control_number 45 | control_number = year * 100000 + int(control_number) 46 | mcc = CMcmCertificateCrawler(control_number) 47 | mcc.FSavePDF(control_number) 48 | 49 | 50 | def downloadlist(control_number_list): 51 | for control_number in control_number_list: 52 | mcc = CMcmCertificateCrawler(control_number) 53 | mcc.FSavePDF(control_number) 54 | 55 | 56 | if __name__ == '__main__': 57 | all_control_list = [] 58 | for control_number in range(1, total_num): 59 | control_number = '%05d' % control_number 60 | control_number = year * 100000 + int(control_number) 61 | all_control_list.append(control_number) 62 | 63 | dir = './paper_20' + str(year) + '/' 64 | if not os.path.exists(dir): 65 | os.mkdir(dir) 66 | download_filelist = os.listdir(dir) 67 | for filename in download_filelist: 68 | filenum = int(filename[0:7]) 69 | print(filenum) 70 | filesize = os.path.getsize(dir + filename) 71 | if filesize: 72 | all_control_list.remove(filenum) 73 | 74 | step = download_step 75 | shuffle(all_control_list) 76 | for i in range(0, len(all_control_list), step): 77 | start = i 78 | end = i + step - 1 79 | control_numbers = all_control_list[start:end] 80 | p = Process(target=downloadlist, args=(control_numbers,)) 81 | p.start() 82 | -------------------------------------------------------------------------------- /exception.txt: -------------------------------------------------------------------------------- 1 | 2308010 -------------------------------------------------------------------------------- /gitpush.bat: -------------------------------------------------------------------------------- 1 | git add . 2 | git commit -m "update" 3 | git push -u origin master -------------------------------------------------------------------------------- /pdf2text.py: -------------------------------------------------------------------------------- 1 | """ 2 | 美赛获奖证书信息OCR 3 | """ 4 | 5 | import fitz 6 | import PIL 7 | import pytesseract 8 | import os 9 | from multiprocessing import Process 10 | import re 11 | from config import * 12 | 13 | pytesseract.pytesseract.tesseract_cmd = TesseractOCR_path 14 | 15 | 16 | def pdf2text(pdfPath, control_number, zoom_x=6, zoom_y=6, rotation_angle=0): 17 | students = [''] 18 | university = '' 19 | prize = '' 20 | advisor = '' 21 | try: 22 | # 打开PDF文件 23 | pdf = fitz.open(pdfPath) 24 | # 逐页读取PDF 25 | for pg in range(0, pdf.pageCount): 26 | page = pdf[pg] 27 | rect = page.rect 28 | clip = fitz.Rect(rect.width * 0.25, rect.height * 0.27, 29 | rect.width * 0.8, rect.height * 0.7) 30 | trans = fitz.Matrix(zoom_x, zoom_y).prerotate(rotation_angle) 31 | pix = page.get_pixmap(matrix=trans, alpha=False, clip=clip) 32 | img = PIL.Image.frombytes("RGB", [pix.width, pix.height], pix.samples) 33 | # pix.save("test.png") 34 | text = pytesseract.image_to_string(img) 35 | text = text.split('\n') 36 | text = [s for s in text if s] 37 | # print(text) 38 | try: 39 | students_index = text.index('With Student Advisor') 40 | advisor_index = text.index('With Student Advisor') + 1 41 | except: 42 | try: 43 | students_index = text.index('With Faculty Advisor') 44 | advisor_index = text.index('With Faculty Advisor') + 1 45 | except: 46 | try: 47 | students_index = text.index('Of') - 1 48 | advisor_index = text.index('Of') - 1 49 | except: 50 | students_index = text.index('Was Designated As') - 3 51 | advisor_index = text.index('Was Designated As') - 2 52 | # print(students_index) 53 | # print(advisor_index) 54 | try: 55 | univ_index = text.index('Was Designated As') - 1 56 | students = text[0:students_index] 57 | advisor = text[advisor_index] 58 | university = text[univ_index] 59 | except: 60 | students = text[0:3] 61 | advisor = text[4] 62 | university = text[5] 63 | prize = text[-1] 64 | 65 | pdf.close() 66 | except: 67 | print(control_number, 'Exception') 68 | with open('exception.txt', 'w+') as exception_file: 69 | exception_file.write(str(control_number)) 70 | 71 | university = university.replace(',', ' ').replace('1', 'i') 72 | prize = prize.replace(',', ' ') 73 | advisor = advisor.replace(',', ' ').replace('1', 'i') 74 | stus = [] 75 | for student in students: 76 | student = student.replace(',', ' ').replace('1', 'i') 77 | stus.append(student) 78 | return stus, advisor, university, prize 79 | 80 | 81 | def savetext(start, end, count): 82 | global logger 83 | all_data = '' 84 | your_university_data = '' 85 | for control_number in range(start, end): 86 | control_number = '%05d' % control_number 87 | control_number = year * 100000 + int(control_number) 88 | path = "./paper_20" + str(year) + "/" + str(control_number) + ".pdf" 89 | # print(path) 90 | if os.path.exists(path) and os.path.getsize(path) > 0: 91 | students, advisor, university, prize = pdf2text(path, control_number) 92 | if prize: 93 | if len(students) == 0: 94 | students = ', , ' 95 | elif len(students) == 1: 96 | students = ','.join(students) + ', , ' 97 | elif len(students) == 2: 98 | students = ','.join(students) + ', ' 99 | elif len(students) == 3: 100 | students = ','.join(students) 101 | elif len(students) > 3: 102 | students = students[0:3] 103 | students = ','.join(students) 104 | 105 | row = '%s,%s,%s,%s,%s,\n' % (control_number, students, advisor, university, prize) 106 | row = row.encode('gbk', 'backslashreplace').decode('gbk', 'backslashreplace') 107 | try: 108 | print(row) 109 | except: 110 | print(control_number, ' -- gbk encoding error') 111 | 112 | all_data += row 113 | if university == your_university: 114 | your_university_data += row 115 | 116 | with open('./all/tmp' + str(count) + '.txt', 'w', encoding='utf-8') as all_file: 117 | # all_data = all_data.encode('utf-8') 118 | all_file.write(all_data) 119 | print('./all/tmp' + str(count) + '.txt save sucessfully') 120 | with open('./your_university/tmp' + str(count) + '.txt', 'w', encoding='utf-8') as your_university_file: 121 | your_university_file.write(your_university_data) 122 | print('./your_university/tmp' + str(count) + '.txt save sucessfully') 123 | 124 | 125 | if __name__ == '__main__': 126 | if not os.path.exists('./all/'): 127 | os.mkdir('./all/') 128 | if not os.path.exists('./your_university/'): 129 | os.mkdir('./your_university/') 130 | 131 | step = pdf2text_step 132 | count = 1 133 | for i in range(1, total_num, step): 134 | start = i 135 | end = i + step - 1 136 | p = Process(target=savetext, args=(start, end, count)) 137 | p.start() 138 | count += 1 139 | 140 | # students, advisor, university, prize = pdf2text('./paper_2023/2300009.pdf', 2300009) 141 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | requests==2.22.0 2 | pytesseract==0.3.9 3 | fitz==0.0.1.dev2 4 | PyMuPDF==1.19.6 5 | -------------------------------------------------------------------------------- /txt_joint.py: -------------------------------------------------------------------------------- 1 | import os 2 | import re 3 | from config import year 4 | 5 | def txtjoint(dir): 6 | files = os.listdir(dir) 7 | res = 'control_number,student1,student2,student3,advisor,university,prize,,,\n' 8 | 9 | for file in files: 10 | if re.search('^tmp(\d+).txt',file): 11 | with open(dir + file, "r", encoding='utf-8') as f: 12 | content = f.read() 13 | # content = content.lower() 14 | res += content 15 | 16 | with open(dir + "all_20"+str(year)+".txt", "w", encoding='utf-8') as outFile: 17 | outFile.write(res) 18 | print('txtjoint sucessfully') 19 | 20 | # 合并文件 21 | all_dir = "./all/" 22 | your_university_dir = './your_university/' 23 | txtjoint(all_dir) 24 | txtjoint(your_university_dir) -------------------------------------------------------------------------------- /统计结果.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/personqianduixue/comap_crawler_2023/6ec3537cd279d39d80f4be73b5589477a29defc2/统计结果.png --------------------------------------------------------------------------------