0
点赞
收藏
分享

微信扫一扫

基于2026 QS世界大学排名数据集的多维度可视化分析


摘要:本研究运用Python的数据分析与可视化库,如pandas、matplotlib和seaborn,对2026 QS世界大学排名数据集进行深入剖析。通过多种可视化图表,包括柱状图、雷达图、箱线图、回归图和散点图,从国家分布、师生比与国际学生比例对比、中国高校关键指标、综合分数分布、科研与学术声誉关系以及排名年度变化等多个维度。

关键指标介绍:

我用夸克网盘给你分享了「2026 QS世界大学排名数据」,点击链接或复制整段内容,打开「夸克APP」即可获取。
链接:https://pan.quark.cn/s/31735260913a

关键词:QS世界大学排名;数据可视化;高校评估;数据分析

一、引言

QS世界大学排名作为全球广泛关注的高校评价体系,其数据集蕴含着丰富的信息。通过对2026 QS世界大学排名数据集的可视化分析,能够直观地呈现高校在不同维度的表现,为教育领域的研究和决策提供有力支持。本研究旨在利用多种可视化方法,深入挖掘数据背后的规律和特征。

二、数据预处理与环境设置

2.1 库导入与绘图风格设置

首先导入必要的Python库,并设置全局绘图风格为ggplot,以获得更美观的可视化效果。同时,配置中文字体为黑体,解决中文显示问题,并确保负号能正确显示。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib import cm

plt.style.use('ggplot')
plt.rcParams['font.sans-serif'] = ['SimHei']  
plt.rcParams['axes.unicode_minus'] = False

2.2 数据加载

从指定路径加载2026 QS世界大学排名数据集。

df = pd.read_csv('E:\\pycharm_workspace\\数据集\\2026QSWorldUniversityRankings.csv')

三、可视化分析

3.1 国家/地区分布(Top 50)

绘制柱状图展示排名前50的大学在不同国家/地区的分布情况。

plt.figure(figsize=(14, 6))
top50 = df.head(50)
country_counts = top50['Country/Territory'].value_counts()

sns.barplot(
    x=country_counts.index,
    y=country_counts.values,
    hue=country_counts.index,
    palette='viridis',
    legend=False,
    dodge=False
)
plt.title(f'Top {len(top50)} Universities by Country (2026 QS Ranking)',
          fontweight='bold', fontsize=14)
plt.xticks(rotation=45, ha='right')
plt.ylabel('Number of Universities', fontsize=12)
plt.xlabel('Country/Territory', fontsize=12)
plt.tight_layout(pad = 2)  
plt.show()

此柱状图使用viridis调色板,通过设置hue突出不同国家/地区,legend=Falsedodge=False简化图表显示。tight_layout函数的pad参数增加了图表周围的空白,避免元素重叠,使图表更清晰。该图直观呈现了前50名大学在各国的数量分布。

基于2026 QS世界大学排名数据集的多维度可视化分析_python

3.2 师生比与国际学生比例对比

通过柱状图展示排名前100的大学中各国师生比的平均得分情况。

plt.figure(figsize=(14, 6))
top100 = df.head(100)
fsr_by_country = top100.groupby('Country/Territory')['FSR SCORE'].mean().sort_values(ascending=False)

sns.barplot(
    x=fsr_by_country.index,
    y=fsr_by_country.values,
    hue=fsr_by_country.index,
    palette='plasma',
    legend=False,
    dodge=False
)
plt.title('Average Faculty - Student Ratio Score by Country (Top 100)',
          fontweight='bold', fontsize=14)
plt.xticks(rotation=45, ha='right')
plt.ylabel('Faculty - Student Ratio Score', fontsize=12)
plt.xlabel('Country/Territory', fontsize=12)
plt.tight_layout(pad = 2)
plt.show()

同样使用柱状图,plasma调色板增强视觉效果,通过分组计算各国师生比的平均得分并按降序排列。图表设置与前一个柱状图类似,旨在清晰展示各国师生比平均得分的差异。

基于2026 QS世界大学排名数据集的多维度可视化分析_数据_02

3.3 中国高校关键指标雷达图

创建函数绘制中国高校在多个关键指标上的雷达图。

def radar_plot(uni_name):
    try:
        china_uni = df[df['Institution Name'].str.contains(uni_name)].iloc[0]
    except IndexError:
        print(f"未找到包含 '{uni_name}' 的大学,请检查名称是否正确")
        return

    categories = ['AR SCORE', 'ER SCORE', 'FSR SCORE', 'CPF SCORE', 'IRN SCORE']
    values = china_uni[categories].tolist()
    values += values[:1]  

    angles = np.linspace(0, 2 * np.pi, len(categories), endpoint=False).tolist()
    angles += angles[:1]

    fig, ax = plt.subplots(figsize=(8, 8), subplot_kw={'polar': True})
    ax.fill(angles, values, color='dodgerblue', alpha=0.25)
    ax.plot(angles, values, color='dodgerblue', linewidth=2, label=uni_name)

    ax.set_ylim(0, 100)
    ax.set_xticks(angles[:-1])
    ax.set_xticklabels([label.replace(' SCORE', '') for label in categories], fontsize=12)
    ax.set_rlabel_position(45)
    ax.grid(True, linestyle='--', alpha=0.5)
    ax.set_theta_offset(np.pi / 2)
    ax.set_theta_direction(-1)

    plt.title(f'{uni_name} Key Indicators (2026 QS)',
              fontweight='bold', fontsize=14, pad = 30)
    plt.legend(loc='lower right', bbox_to_anchor=(1.3, 0.1))  
    plt.tight_layout(pad = 3)  
    plt.show()

radar_plot('Peking University')
radar_plot('Tsinghua University')

该函数通过提取高校特定指标数据,构建雷达图。通过设置角度、刻度、标签和颜色等参数,使雷达图能够清晰展示高校在学术声誉(AR)、雇主声誉(ER)、师生比(FSR)、科研实力(CPF)和国际学生比例(IRN)等关键指标上的表现。tight_layout函数的pad参数和bbox_to_anchor参数调整了图表布局和图例位置,增强了可读性。

基于2026 QS世界大学排名数据集的多维度可视化分析_python_03

基于2026 QS世界大学排名数据集的多维度可视化分析_python_04

3.4 综合分数分布箱线图

绘制箱线图分析排名前10国家的高校综合分数的分布情况。

plt.figure(figsize=(12, 6))
top_countries = df['Country/Territory'].value_counts().head(10).index
top_countries_box = df[df['Country/Territory'].isin(top_countries)]
sns.boxplot(
    data=top_countries_box,
    x='Country/Territory',
    y='Overall SCORE',
    hue='Country/Territory',
    palette='Set3',
    legend=False,
    dodge=False,
    showfliers=False
)
plt.title('Distribution of Overall Scores by Country (Top 10 Countries)',
          fontweight='bold', fontsize=14)
plt.xticks(rotation=45, ha='right')
plt.ylabel('Overall Score', fontsize=12)
plt.xlabel('Country/Territory', fontsize=12)
plt.tight_layout(pad = 2)
plt.show()

箱线图使用Set3调色板,通过设置hue区分不同国家/地区,showfliers=False隐藏异常值,使图表更聚焦于主要数据分布。该图有助于观察不同国家高校综合分数的中位数、四分位数以及分布范围。

基于2026 QS世界大学排名数据集的多维度可视化分析_数据_05

3.5 科研与学术声誉关系

利用回归图展示学术声誉与科研影响力之间的关系。

plt.figure(figsize=(10, 8))
sns.regplot(
    data=df,
    x='AR SCORE',
    y='CPF SCORE',
    scatter_kws={'alpha':0.6, 'color':'#2ca02c'},
    line_kws={'color':'red', 'linestyle':'--'}
)
plt.title('学术声誉与科研影响力关系\n(CPF = 师均论文引用)', fontweight='bold')
plt.xlabel('学术声誉得分 (AR)')
plt.ylabel('科研影响力得分 (CPF)')
plt.grid(True, alpha=0.3)
plt.show()

回归图通过scatter_kws设置散点的透明度和颜色,line_kws设置回归线的颜色和线型。此图直观展示了学术声誉得分(AR)与科研影响力得分(CPF,师均论文引用)之间的关系,网格线的设置增强了读数的准确性。

基于2026 QS世界大学排名数据集的多维度可视化分析_python_06

3.6 排名年度变化

分析并可视化QS排名的年度变化情况。

# ====================== 8. 排名年度变化 ======================
# 将 Previous Rank 和 2026 Rank 列转换为数值类型,无法转换的值会被设置为 NaN
df['Previous Rank'] = pd.to_numeric(df['Previous Rank'], errors='coerce')
df['2026 Rank'] = pd.to_numeric(df['2026 Rank'], errors='coerce')

# 计算排名变化
df['Rank Change'] = df['Previous Rank'] - df['2026 Rank']

# 筛选出上升和下降最多的大学前十位
top_10_rise = df.nlargest(10, 'Rank Change')[['Institution Name', 'Rank Change']]
top_10_drop = df.nsmallest(10, 'Rank Change')[['Institution Name', 'Rank Change']]

# 输出结果
print("上升最多的大学前十位:")
print(top_10_rise)
print("\n下降最多的大学前十位:")
print(top_10_drop)

significant_changes = df[abs(df['Rank Change']) >= 10]

plt.figure(figsize=(12, 6))
sns.scatterplot(
    x='Previous Rank',
    y='2026 Rank',
    data=significant_changes,
    hue='Rank Change',
    size=abs(df['Rank Change']),
    sizes=(50, 200),
    palette='coolwarm'
)
plt.plot([0, 200], [0, 200], 'k--', alpha=0.3)  # 参考线
plt.title('QS排名年度变化 (变化≥10名的大学)', fontweight='bold')
plt.xlabel('2025年排名')
plt.ylabel('2026年排名')
plt.grid(True, alpha=0.3)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.tight_layout()
plt.show()

首先将前一年排名和2026年排名列转换为数值类型,计算排名变化。筛选出排名变化≥10名的大学数据进行可视化。散点图通过hue表示排名变化值,size表示排名变化的绝对值,palette='coolwarm'提供直观的颜色映射。参考线的绘制便于观察排名变化趋势,全面展示了QS排名的年度显著变化情况。

基于2026 QS世界大学排名数据集的多维度可视化分析_python_07


基于2026 QS世界大学排名数据集的多维度可视化分析_数据集_08


举报

相关推荐

0 条评论