{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2026年高校投档线涨跌深度分析｜复核笔记本\n",
    "\n",
    "本笔记本读取同目录下的 `2026_高校投档线深度分析_数据底表.xlsx`，复核专业大类、学校和跨省同专业的核心结论。口径为2025→2026同省最低位次；正值表示2026位次前移、录取难度上升。\n",
    "本次修订新增全部学校覆盖、教育部第二轮‘双一流’147所覆盖审计，以及重点高校逐专业明细。\n",
    "\n",
    "本次修订新增全部学校覆盖、教育部第二轮‘双一流’147所覆盖审计，以及重点高校逐专业明细。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "工作簿: 2026_高校投档线深度分析_数据底表.xlsx\n",
      "工作表: 阅读说明、专业大类、跨省一致性、双一流覆盖审计、双一流专业明细、全部学校覆盖、学校指数、跨省同专业、广东专业组、专业案例、完整匹配底表、质量校验、图表\n"
     ]
    }
   ],
   "source": [
    "from pathlib import Path\n",
    "import pandas as pd\n",
    "\n",
    "book = Path.cwd() / '2026_高校投档线深度分析_数据底表.xlsx'\n",
    "assert book.exists(), f'未找到数据底表: {book}'\n",
    "xls = pd.ExcelFile(book)\n",
    "print('工作簿:', book.name)\n",
    "print('工作表:', '、'.join(xls.sheet_names))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 专业大类：位次层校正后的整体变化\n",
    "\n",
    "“校正后变化”先在每个省、每个2025位次层内扣除整体中位数，再对山东、浙江等权合并，以减少年份总体位次漂移和学校层次差异的影响。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "    专业大类  匹配专业数  同省同位次层校正后变化(%)  上涨占比(%)  山东校正后变化(%)  浙江校正后变化(%)\n",
      " 机械与先进制造    602             8.8     91.4         8.0         9.7\n",
      "    能源动力    678             8.8     91.4         7.9         9.7\n",
      " 电子电气自动化   2887             8.6     92.3         7.0        10.2\n",
      "  航空交通海洋    285             7.9     82.9         5.4        10.6\n",
      "材料化工环境地矿   1411             6.9     88.2         5.5         8.4\n",
      "人工智能与计算机   2296             4.8     78.7         3.2         6.4\n",
      "  数理统计基础    934             4.3     68.0         2.1         6.5\n",
      "  生物食品农林   1120             3.9     72.4         2.9         4.9\n",
      "    土木建筑   1087            -0.1     46.9        -0.2        -0.0\n",
      " 中西药学与制药    730            -0.8     43.2        -2.0         0.4\n",
      "  护理公卫康复    683            -4.1     29.4        -6.8        -1.2\n",
      "    财经管理   3302            -6.8      7.5        -8.9        -4.7\n",
      "      外语   1166            -7.1      8.0        -9.7        -4.4\n",
      "    公共管理    313            -7.4      5.8        -9.2        -5.6\n",
      "    师范教育   1480            -7.8     23.4        -9.8        -5.8\n",
      "    人文新闻   1078            -9.0      3.7       -11.2        -6.8\n",
      "      法学    595           -11.4      2.2       -11.9       -10.9\n",
      "    临床口腔    715           -13.1      8.0       -17.0        -9.0\n"
     ]
    }
   ],
   "source": [
    "category = pd.read_excel(book, sheet_name='专业大类')\n",
    "show_cols = ['专业大类', '匹配专业数', '同省同位次层校正后变化(%)', '上涨占比(%)', '山东校正后变化(%)', '浙江校正后变化(%)']\n",
    "category = category.sort_values('同省同位次层校正后变化(%)', ascending=False)\n",
    "print(category[show_cols].round(1).to_string(index=False))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 跨省一致性：同一个专业在山东、浙江是否同向\n",
    "\n",
    "这里只保留两省都能匹配到的同校同名专业；浙江还要求招生计划同比在0.8—1.25之间。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "          跨省同名专业数  两省均上涨比例  两省均下跌比例  两省平均变化中位数\n",
      "专业大类                                          \n",
      "机械与先进制造       123     87.8      0.8        8.6\n",
      "能源动力          151     86.8      1.3        8.2\n",
      "电子电气自动化       663     84.6      0.3        7.7\n",
      "航空交通海洋         66     69.7      4.5        6.5\n",
      "材料化工环境地矿      288     76.7      2.1        6.2\n",
      "人工智能与计算机      482     56.0      3.9        3.5\n",
      "生物食品农林        228     44.7     10.1        2.4\n",
      "数理统计基础        194     35.6      9.3        2.1\n",
      "土木建筑          210     33.8     37.1       -0.4\n",
      "中西药学与制药       172     19.2     44.8       -3.7\n",
      "护理公卫康复        141      4.3     53.2       -6.4\n",
      "财经管理          703      1.8     85.6       -9.5\n",
      "公共管理           49      2.0     85.7       -9.7\n",
      "外语            260      2.3     86.9       -9.9\n",
      "人文新闻          215      0.5     93.0      -11.5\n",
      "法学            165      0.6     95.2      -14.8\n",
      "临床口腔          218      0.0     84.4      -16.9\n"
     ]
    }
   ],
   "source": [
    "cross = pd.read_excel(book, sheet_name='跨省同专业')\n",
    "cross['两省均上涨'] = (cross['山东变化(%)'] > 0) & (cross['浙江变化(%)'] > 0)\n",
    "cross['两省均下跌'] = (cross['山东变化(%)'] < 0) & (cross['浙江变化(%)'] < 0)\n",
    "consistency = (cross[cross['专业大类'] != '其他']\n",
    "    .groupby('专业大类')\n",
    "    .agg(跨省同名专业数=('专业', 'size'), 两省均上涨比例=('两省均上涨', 'mean'), 两省均下跌比例=('两省均下跌', 'mean'), 两省平均变化中位数=('两省平均变化(%)', 'median'))\n",
    "    .query('跨省同名专业数 >= 30')\n",
    "    .sort_values('两省平均变化中位数', ascending=False))\n",
    "consistency['两省均上涨比例'] *= 100\n",
    "consistency['两省均下跌比例'] *= 100\n",
    "print(consistency.round(1).to_string())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 学校：同名专业组合的原始位次变化\n",
    "\n",
    "学校指数不是官方“校线”。它是同一学校、同名普通专业在两省的中位变化，仅用于观察学校专业组合的相对动量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "\n",
      "[头部(<1万)] 上涨较多\n",
      "      学校  匹配专业数  原始位次变化(%)  校内专业上涨占比(%)\n",
      "    湖南大学     31        8.3         77.8\n",
      "南京航空航天大学     30        7.4         77.8\n",
      "    重庆大学     19        6.7         66.5\n",
      "  北京理工大学     11        4.2         66.7\n",
      "  华南理工大学     29        3.5         60.0\n",
      "    中南大学     22        3.1         52.4\n",
      "  西安交通大学     36        2.6         58.1\n",
      "  北京邮电大学     17        2.2         41.7\n",
      "[头部(<1万)] 下跌较多\n",
      "     学校  匹配专业数  原始位次变化(%)  校内专业上涨占比(%)\n",
      " 中国人民大学     24      -35.7          8.3\n",
      "北京外国语大学     10      -26.5          0.0\n",
      " 北京师范大学     14      -24.2          8.3\n",
      " 中国政法大学     30      -22.7          0.0\n",
      " 上海财经大学     21      -22.0         14.5\n",
      "北京大学医学部     15      -20.9         26.8\n",
      "   中山大学     24      -19.9         27.3\n",
      "   四川大学     35      -19.6         26.5\n",
      "\n",
      "[中高(1万-5万)] 上涨较多\n",
      "              学校  匹配专业数  原始位次变化(%)  校内专业上涨占比(%)\n",
      "          合肥工业大学     51       10.8         91.0\n",
      "    合肥工业大学(宣城校区)     17       10.2         75.7\n",
      "中国石油大学(北京)克拉玛依校区     32        9.7         74.4\n",
      "            三峡大学     29        9.6         69.9\n",
      "          上海电力大学     28        9.3         96.2\n",
      "            东北大学     44        8.8         89.5\n",
      "          东北林业大学     43        8.6         71.8\n",
      "          西安邮电大学     21        8.4         93.8\n",
      "[中高(1万-5万)] 下跌较多\n",
      "     学校  匹配专业数  原始位次变化(%)  校内专业上涨占比(%)\n",
      " 中央戏剧学院     10      -28.7         10.0\n",
      " 中国医科大学     11      -24.3          0.0\n",
      " 华东政法大学      9      -24.0          0.0\n",
      " 西南政法大学     32      -22.7          2.9\n",
      " 首都医科大学     30      -22.0         17.4\n",
      "福建中医药大学     14      -21.0          0.0\n",
      " 华中师范大学     29      -20.5         15.4\n",
      "上海外国语大学     12      -20.2          0.0\n",
      "\n",
      "[中段(5万-15万)] 上涨较多\n",
      "    学校  匹配专业数  原始位次变化(%)  校内专业上涨占比(%)\n",
      "西安工业大学     29       12.8         74.3\n",
      "  中北大学     95       12.6         89.8\n",
      "南昌航空大学     53       10.6         78.8\n",
      "嘉兴南湖学院     12       10.0         75.7\n",
      "南京工程学院     29        9.6         87.5\n",
      "沈阳工程学院      9        9.4        100.0\n",
      "齐鲁工业大学     66        9.4         76.1\n",
      "安徽工业大学     62        9.1         80.8\n",
      "[中段(5万-15万)] 下跌较多\n",
      "     学校  匹配专业数  原始位次变化(%)  校内专业上涨占比(%)\n",
      " 昆明医科大学     17      -23.0          6.2\n",
      " 河北医科大学     12      -16.7          0.0\n",
      " 福建医科大学     19      -16.5         19.9\n",
      " 锦州医科大学     12      -14.8          0.0\n",
      " 南京艺术学院     15      -14.5         13.9\n",
      " 山西医科大学     33      -14.4         14.2\n",
      "广西中医药大学     14      -14.0         14.6\n",
      " 温州医科大学     52      -13.0         18.0\n",
      "\n",
      "[长尾(15万后)] 上涨较多\n",
      "          学校  匹配专业数  原始位次变化(%)  校内专业上涨占比(%)\n",
      "南京航空航天大学金城学院     21       15.2         66.9\n",
      "      湖南工程学院     12        7.5         65.7\n",
      "       中原工学院     11        6.7         93.8\n",
      "        衢州学院     26        6.6         61.4\n",
      "    桂林航天工业学院     34        6.1         78.4\n",
      "    广东石油化工学院     14        5.9        100.0\n",
      "    河北水利电力学院     19        5.8        100.0\n",
      "      吉林化工大学     43        5.6         77.2\n",
      "[长尾(15万后)] 下跌较多\n",
      "        学校  匹配专业数  原始位次变化(%)  校内专业上涨占比(%)\n",
      "天津商业大学宝德学院     21      -15.1          0.0\n",
      "  海南科技职业大学     12      -14.7          5.6\n",
      "    长春科技学院      8      -14.2          0.0\n",
      "    兰州工商学院     19      -13.6          5.0\n",
      "      三亚学院     19      -13.6          0.0\n",
      "    西安思源学院     13      -13.5          6.2\n",
      "    南宁理工学院     12      -13.5          0.0\n",
      "    长春财经学院     20      -13.3          3.3\n"
     ]
    }
   ],
   "source": [
    "schools = pd.read_excel(book, sheet_name='学校指数')\n",
    "for tier in ['头部(<1万)', '中高(1万-5万)', '中段(5万-15万)', '长尾(15万后)']:\n",
    "    block = schools[schools['位次层'] == tier]\n",
    "    rises = block.nlargest(8, '原始位次变化(%)')[['学校', '匹配专业数', '原始位次变化(%)', '校内专业上涨占比(%)']]\n",
    "    falls = block.nsmallest(8, '原始位次变化(%)')[['学校', '匹配专业数', '原始位次变化(%)', '校内专业上涨占比(%)']]\n",
    "    print(f'\\n[{tier}] 上涨较多')\n",
    "    print(rises.round(1).to_string(index=False))\n",
    "    print(f'[{tier}] 下跌较多')\n",
    "    print(falls.round(1).to_string(index=False))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 跨省同专业的代表性个案\n",
    "\n",
    "下表要求山东、浙江方向一致，并按2025基准位次分层，以降低头部小位次数值过敏感的问题。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "\n",
      "[头部(<1万)] 涨幅代表\n",
      "  学校                       专业     专业大类  山东2025位次  山东2026位次  浙江2025位次  浙江2026位次  两省平均变化(%)\n",
      "清华大学             理科试验班(理科各专业)       其他     140.0     123.0     155.0      75.0       53.4\n",
      "吉林大学              理科试验班(唐敖庆班)       其他    5623.5    4558.0    8825.0    7067.0       24.1\n",
      "吉林大学 集成电路设计与集成系统(集成电路科技英才特色班)  电子电气自动化    7579.0    6596.0   10538.0    7938.0       23.5\n",
      "东北大学                     自动化类  电子电气自动化    8608.0    6708.0    9169.0    7763.0       23.1\n",
      "山东大学                   网络空间安全 人工智能与计算机    7974.0    6894.0    9007.0    7423.0       18.5\n",
      "东北大学             人工智能(未来技术学院) 人工智能与计算机    6333.0    5183.0    9042.0    7909.0       18.2\n",
      "[头部(<1万)] 跌幅代表\n",
      "     学校                  专业 专业大类  山东2025位次  山东2026位次  浙江2025位次  浙江2026位次  两省平均变化(%)\n",
      " 中国人民大学                  法学   法学     731.0    1383.0     281.0     881.0      -58.9\n",
      " 中国人民大学 人文科学试验班(历史政治学拔尖人才班)   其他     386.0     873.0     772.0    1701.0      -55.2\n",
      " 中国人民大学              新闻传播学类 人文新闻    1253.0    1844.0     818.0    1840.0      -45.0\n",
      " 中国人民大学        人力资源管理(经管交叉) 财经管理     995.0    1743.0     757.0    1415.0      -44.7\n",
      "北京中医药大学        中西医临床医学(华佗班) 临床口腔    4658.0    7124.0    6519.0   13855.0      -44.5\n",
      " 首都医科大学        口腔医学(5+3一体化) 临床口腔    1891.0    3919.0    6317.0    8741.0      -40.9\n",
      "\n",
      "[中高(1万-5万)] 涨幅代表\n",
      "    学校              专业    专业大类  山东2025位次  山东2026位次  浙江2025位次  浙江2026位次  两省平均变化(%)\n",
      "中国农业大学   动物科学(未来领军创新班)  生物食品农林    9681.0    5754.0   10838.0    9490.0       38.6\n",
      "中国海洋大学 海洋科学(蓝梦拔尖人才实验班)      其他    9988.0    8670.0   11910.0    7252.0       37.5\n",
      "  中北大学            通信工程 电子电气自动化   44109.0   38897.0   53278.0   37177.0       27.5\n",
      "安徽工业大学       电气工程及其自动化 电子电气自动化   49429.0   44421.0   47509.0   33460.0       25.7\n",
      "  南华大学        辐射防护与核安全      其他   36178.0   32906.0   50451.0   36343.0       23.5\n",
      "  中北大学       弹药工程与爆炸技术      其他   43750.0   34796.0   46177.0   38851.0       22.2\n",
      "[中高(1万-5万)] 跌幅代表\n",
      "    学校           专业 专业大类  山东2025位次  山东2026位次  浙江2025位次  浙江2026位次  两省平均变化(%)\n",
      "大连医科大学         口腔医学 临床口腔   15546.0   21218.0   19001.0   39121.0      -40.3\n",
      "中央戏剧学院   艺术管理(影视制片)   其他   20165.0   34251.0    7122.0   11491.0      -39.6\n",
      "南京艺术学院       戏剧影视文学   其他   34483.0   60447.0   31081.0   44848.0      -37.1\n",
      "北京电影学院          电影学   其他   33730.0   63187.0   22487.0   28667.0      -35.3\n",
      "天津师范大学         地理科学   其他   33163.0   58952.0   39319.0   51813.0      -34.7\n",
      "河北医科大学 临床医学(5+3一体化) 临床口腔   15988.0   23276.0   18943.0   28678.0      -32.6\n",
      "\n",
      "[中段(5万-15万)] 涨幅代表\n",
      "    学校          专业     专业大类  山东2025位次  山东2026位次  浙江2025位次  浙江2026位次  两省平均变化(%)\n",
      "  燕山大学   电气工程及其自动化  电子电气自动化  125093.0   71202.0   50655.0   33808.0       62.2\n",
      "  燕山大学     电子科学与技术  电子电气自动化  126684.0   86927.5   64022.0   37067.0       58.7\n",
      "  青海大学     储能科学与工程     能源动力   54746.0   47373.0   69938.0   42151.0       38.5\n",
      "  中北大学        环境工程 材料化工环境地矿  136963.0  121820.0  114239.0   71716.0       33.8\n",
      "沈阳理工大学      金属材料工程 材料化工环境地矿  102028.0   62945.0  113981.0  105606.0       32.3\n",
      "安徽工业大学 机械设计制造及其自动化  电子电气自动化   68391.0   56518.0   53859.0   37523.0       31.8\n",
      "[中段(5万-15万)] 跌幅代表\n",
      "     学校     专业   专业大类  山东2025位次  山东2026位次  浙江2025位次  浙江2026位次  两省平均变化(%)\n",
      " 沈阳建筑大学   风景园林   土木建筑   78644.0  177530.0  135439.0  176820.0      -41.7\n",
      " 重庆医科大学    护理学 护理公卫康复   58085.0  127674.0   78645.0   91614.0      -37.5\n",
      " 华北理工大学   匈牙利语     其他  138497.0  314838.0   91650.0  102931.0      -37.4\n",
      " 江西理工大学 汉语国际教育     其他   97709.0  232244.0   68666.0   73405.0      -37.3\n",
      " 重庆医科大学 公共事业管理     其他   54017.0  101561.0   49869.0   58789.0      -32.8\n",
      "哈尔滨理工大学    金融学   财经管理  108685.0  118762.0   85821.0  171276.0      -32.3\n",
      "\n",
      "[长尾(15万后)] 涨幅代表\n",
      "          学校        专业    专业大类  山东2025位次  山东2026位次  浙江2025位次  浙江2026位次  两省平均变化(%)\n",
      "      沈阳建筑大学      测绘工程    土木建筑  157634.0   97624.0  144133.0  136683.0       30.5\n",
      "南京航空航天大学金城学院 电气工程及其自动化 电子电气自动化  245220.0  174961.0  135063.0  118620.0       26.3\n",
      "      重庆师范大学      森林保护      其他  265305.0  200117.0  138248.0  131760.0       17.9\n",
      "        萍乡学院     机器人工程 电子电气自动化  240268.0  200586.0  141127.0  127567.0       15.1\n",
      "      湖南工程学院       统计学  数理统计基础  224674.0  198246.0  148753.0  128989.0       14.3\n",
      "      吉林化工大学    油气储运工程    能源动力  167017.0  144924.0  149621.0  132973.0       13.9\n",
      "[长尾(15万后)] 跌幅代表\n",
      "        学校    专业   专业大类  山东2025位次  山东2026位次  浙江2025位次  浙江2026位次  两省平均变化(%)\n",
      "  海南科技职业大学    护理 护理公卫康复  224836.0  349627.0  120764.0  167374.0      -31.9\n",
      "    天津仁爱学院   传播学   人文新闻  199384.0  282080.0  127693.0  153958.0      -23.4\n",
      "天津商业大学宝德学院    日语     外语  184861.0  270698.0  127056.0  146451.0      -23.0\n",
      "    南宁理工学院 汉语言文学   人文新闻  210778.0  286450.0  120733.0  148582.0      -22.7\n",
      "  桂林信息科技学院  财务管理   财经管理  218253.0  325062.0  130276.0  142878.0      -21.8\n",
      "     长沙医学院  临床医学   临床口腔  142839.0  227385.0  172274.0  173588.0      -21.0\n"
     ]
    }
   ],
   "source": [
    "bins = [0, 10000, 50000, 150000, float('inf')]\n",
    "labels = ['头部(<1万)', '中高(1万-5万)', '中段(5万-15万)', '长尾(15万后)']\n",
    "cross['位次层'] = pd.cut(cross['2025基准位次'], bins=bins, labels=labels)\n",
    "robust = cross[cross['两省同向'] == True]\n",
    "cols = ['学校', '专业', '专业大类', '山东2025位次', '山东2026位次', '浙江2025位次', '浙江2026位次', '两省平均变化(%)']\n",
    "for tier in labels:\n",
    "    block = robust[robust['位次层'] == tier]\n",
    "    print(f'\\n[{tier}] 涨幅代表')\n",
    "    print(block.nlargest(6, '两省平均变化(%)')[cols].round(1).to_string(index=False))\n",
    "    print(f'[{tier}] 跌幅代表')\n",
    "    print(block.nsmallest(6, '两省平均变化(%)')[cols].round(1).to_string(index=False))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": [
     "coverage-audit"
    ]
   },
   "source": [
    "## 学校覆盖审计：为什么清北等高校在旧版学校表中缺席\n",
    "\n",
    "旧版学校指数只保留山东、浙江各至少3个、合计至少8个同名专业的招生单位。新版保留这个稳健门槛，同时另建完整覆盖层：1169个有至少1条可比记录的招生单位全部可查；教育部第二轮“双一流”147所逐校标注A—F证据级别。医学部与校区仅在覆盖审计中归并，具体专业仍按招生单位分开。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "tags": [
     "coverage-audit"
    ]
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "全部可比招生单位: 1169\n",
      "其中稳健招生单位: 634\n",
      "双一流审计高校: 147\n",
      "证据级别\n",
      "A·双省稳健       120\n",
      "B·双省观察        15\n",
      "C·单省观察         7\n",
      "E·有投档无匹配       1\n",
      "F·当前样本未覆盖      4\n",
      "双一流专业明细: 5004\n"
     ]
    }
   ],
   "source": [
    "coverage = pd.read_excel(book, sheet_name='双一流覆盖审计')\n",
    "all_schools = pd.read_excel(book, sheet_name='全部学校覆盖')\n",
    "priority_programs = pd.read_excel(book, sheet_name='双一流专业明细')\n",
    "\n",
    "print('全部可比招生单位:', len(all_schools))\n",
    "print('其中稳健招生单位:', int(all_schools['达到稳健门槛'].sum()))\n",
    "print('双一流审计高校:', len(coverage))\n",
    "print(coverage['证据级别'].value_counts().sort_index().to_string())\n",
    "print('双一流专业明细:', len(priority_programs))\n",
    "\n",
    "assert len(all_schools) == 1169\n",
    "assert int(all_schools['达到稳健门槛'].sum()) == 634\n",
    "assert len(coverage) == 147\n",
    "assert int((coverage['匹配专业数'] > 0).sum()) == 142\n",
    "assert len(priority_programs) == 5004\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": [
     "coverage-audit"
    ]
   },
   "source": [
    "### 清华与北大逐条复核\n",
    "\n",
    "清华主校在山东2条、浙江3条，共5条，低于旧学校表门槛。北大主校也是5条；北京大学医学部有更多记录，旧版只出现医学部，容易让读者误以为北大整体缺失。下面把主校和医学部同时列出，并保留绝对位次与浙江计划数。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "tags": [
     "coverage-audit"
    ]
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "双一流归并高校      学校 省份                专业    专业大类  2025位次  2026位次  2025计划  2026计划  原始位次变化(%)  同层校正变化(%)\n",
      "   北京大学    北京大学 山东 文科试验班类(不限选考科目类专业)      其他   178.0   216.0      22       0 -17.592593  -9.961710\n",
      "   北京大学    北京大学 山东   理科试验班类(理科基础类专业)      其他   138.0   146.0      50       0  -5.479452   3.273101\n",
      "   北京大学 北京大学医学部 山东              临床医学    临床口腔   255.0   467.0       3       0 -45.396146 -40.339857\n",
      "   北京大学 北京大学医学部 山东     临床医学(八年制本博连读)    临床口腔   221.0   363.0      11       0 -39.118457 -33.480858\n",
      "   北京大学 北京大学医学部 山东              口腔医学    临床口腔   240.0   383.0       1       0 -37.336815 -31.534236\n",
      "   北京大学 北京大学医学部 山东     口腔医学(八年制本博连读)    临床口腔   204.0   193.0       1       0   5.699482  15.487199\n",
      "   北京大学 北京大学医学部 山东     基础医学(八年制本博连读)      其他   336.0   435.0       1       0 -22.758621 -15.606109\n",
      "   北京大学 北京大学医学部 山东          英语(医学英语)      外语   819.0   705.0       5       0  16.170213  26.927514\n",
      "   北京大学 北京大学医学部 山东       药学(六年制本硕连读) 中西药学与制药   356.0   489.0       5       0 -27.198364 -20.456970\n",
      "   北京大学 北京大学医学部 山东     预防医学(七年制本硕连读)  护理公卫康复   361.0   476.0       3       0 -24.159664 -17.136888\n",
      "   清华大学    清华大学 山东             临床医学类    临床口腔   109.0   133.0       5       0 -18.045113 -10.456133\n",
      "   清华大学    清华大学 山东      理科试验班(理科各专业)      其他   140.0   123.0      72       0  13.821138  24.360916\n",
      "   北京大学    北京大学 浙江 文科试验班类(不限选考科目类专业)      其他    92.0    94.0       6       7  -2.127660   7.795166\n",
      "   北京大学    北京大学 浙江        理科试验班类(元培)      其他     5.0    15.0       2       2 -66.666667 -63.287154\n",
      "   北京大学    北京大学 浙江   理科试验班类(理科基础类专业)      其他   100.0    73.0      24      27  36.986301  50.874711\n",
      "   北京大学 北京大学医学部 浙江              临床医学    临床口腔   269.0   358.0       1       1 -24.860335 -17.242271\n",
      "   北京大学 北京大学医学部 浙江     临床医学(八年制本博连读)    临床口腔   259.0   216.0       6       6  19.907407  32.064267\n",
      "   北京大学 北京大学医学部 浙江              口腔医学    临床口腔   234.0   278.0       1       1 -15.827338  -7.293460\n",
      "   北京大学 北京大学医学部 浙江     口腔医学(八年制本博连读)    临床口腔    41.0   132.0       1       1 -68.939394 -65.790302\n",
      "   北京大学 北京大学医学部 浙江          英语(医学英语)      外语   397.0   755.0       3       3 -47.417219 -42.086093\n",
      "   北京大学 北京大学医学部 浙江       药学(六年制本硕连读) 中西药学与制药   339.0   258.0       2       2  31.395349  44.716918\n",
      "   北京大学 北京大学医学部 浙江     预防医学(七年制本硕连读)  护理公卫康复   341.0   401.0       1       1 -14.962594  -6.341043\n",
      "   清华大学    清华大学 浙江             临床医学类    临床口腔   256.0    80.0       4       4 220.000000 252.443325\n",
      "   清华大学    清华大学 浙江     文科试验班类(文科各专业)      其他   102.0    77.0       3       3  32.467532  45.897805\n",
      "   清华大学    清华大学 浙江      理科试验班(理科各专业)      其他   155.0    75.0      29      30 106.666667 127.619647\n"
     ]
    }
   ],
   "source": [
    "show_columns = [\n",
    "    '双一流归并高校', '学校', '省份', '专业', '专业大类',\n",
    "    'rank25', 'rank26', '2025计划', '2026计划',\n",
    "    'pct_selectivity', '同层校正变化(%)'\n",
    "]\n",
    "show_columns = [column for column in show_columns if column in priority_programs.columns]\n",
    "spotlight = priority_programs[\n",
    "    priority_programs['双一流归并高校'].isin(['清华大学', '北京大学'])\n",
    "][show_columns].rename(columns={\n",
    "    'rank25': '2025位次',\n",
    "    'rank26': '2026位次',\n",
    "    'pct_selectivity': '原始位次变化(%)',\n",
    "})\n",
    "print(spotlight.to_string(index=False))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 解释边界\n",
    "\n",
    "- 投档位次是志愿选择、招生计划、专业组编排、选科限制和当年考生规模共同作用的结果，不能直接等同于就业率或专业长期价值。\n",
    "- 山东2026公开投档表没有计划数，所以山东无法做计划稳定性过滤；浙江和广东已做0.8—1.25计划比过滤。\n",
    "- 同名匹配会漏掉2026新设、改名、拆分的专业；广东只能分析院校专业组，不能还原组内单专业线。\n",
    "- 数据来源与完整方法见工作簿“阅读说明”和“质量校验”页。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "name": "python",
   "version": "3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}