本文旨在利用Python中的pyecharts、pandas库对软科2024中国大学排行榜进行分析,并进行可视化展示。
相关库简介
pyecharts是一个基于 Python 的数据可视化库,用于生成精美的图表。它是对百度的 Echarts 的封装,提供了简单易用的接口,可以创建多种类型的图表,如折线图、柱状图、饼图、散点图、地图等。
pyecharts 提供了多个模块,每个模块用于创建不同类型的图表:
Line:折线图
Bar:柱状图
Pie:饼图
Scatter:散点图
Map:地图
HeatMap:热力图
Geo:地理坐标图
Pandas 是一个用于数据操作和分析的开源 Python 库,提供了高性能、易于使用的数据结构和数据分析工具。Pandas 基于 NumPy 库构建,特别适用于处理表格数据(类似于电子表格中的数据)。主要功能:
数据读取与写入:从 CSV、Excel、SQL 等格式读取数据,写入数据到这些格式。
数据选择和过滤:基于标签、位置或条件选择和过滤数据。
数据变换:如数据重塑、合并、连接和分组操作。
统计分析:提供常见的统计功能,如描述性统计、频率表、相关性分析等。
时间序列分析:处理时间序列数据,支持频率转换、滑动窗口计算等。
安装pyecharts、pandas库
pip install pyecharts
pip install pandas
代码实现
导入相关库
# 导入相关库
import pandas as pd
from pyecharts.charts import Bar
from pyecharts.charts import Map
from pyecharts.charts import Pie
from pyecharts import options as opts
加载数据
# 数据读取
# 软科爬取的2024年主榜名单
df_school = pd.read_csv('university_rankings.csv')
df_school.head(20)
本次使用数据来源于软科2024年中国大学排行榜主榜,爬取过程会在下篇文章介绍。数据示例:
绘制饼图–2024中国大学各类型占比
# 定义绘制饼图的函数
def get_pie1(df_type_count):
pie1 = (
Pie(init_opts=opts.InitOpts(theme='dark', bg_color='#0d0735')) # 设置主题和背景色
.add(
"",
[list(z) for z in zip(df_type_count['类型'].tolist(), df_type_count['学校数量'].tolist())],
radius=["40%", "70%"], # 设置饼图为环状饼图
label_opts=opts.LabelOpts(
is_show=True,
position="outside", # 标签位置
formatter="{b}: {d}%", # 显示百分比
font_size=12, # 标签字体大小
)
)
.set_colors(['#e94e77', '#f4a261', '#2a9d8f', '#264653', '#e9c46a']) # 定义饼图颜色
.set_global_opts(
title_opts=opts.TitleOpts(
title='2024中国大学各类型占比',
subtitle='@公众号:AI拾贝',
pos_top='1%',
pos_left="1%",
),
)
)
return pie1
绘制柱状图–2024中国大学综合排名TOP20
# 定义绘制柱状图的函数
def get_bar1(df_top20):
bar = (
Bar(init_opts=opts.InitOpts(theme='dark', bg_color='#0d0735')) # 设置背景颜色为深蓝色
.add_xaxis(df_top20['中文名'].tolist()) # 将中文名作为横坐标
.add_yaxis('', df_top20['分数'].tolist()) # 分数作为纵坐标
.reversal_axis() # 交换 x 和 y 轴
.set_global_opts(
title_opts=opts.TitleOpts(
title='2024中国大学综合排名TOP20',
subtitle='@公众号:AI拾贝',
pos_top='1%',
pos_left="1%",
title_textstyle_opts=opts.TextStyleOpts(color='#FFFFFF') # 设置标题字体颜色为白色
),
visualmap_opts=opts.VisualMapOpts(is_show=False),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(color='#FFFFFF')), # 设置x轴标签颜色为白色
yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(color='#FFFFFF')) # 设置y轴标签颜色为白色
)
)
return bar
绘制玫瑰图–2024中国各省地区大学数量分布
# 定义绘制玫瑰图的函数
def get_rose_chart(df_count):
pie = (
Pie(init_opts=opts.InitOpts(bg_color='#0d0735')) # 设置背景色
.add(
"",
[list(z) for z in zip(df_count['省份'], df_count['学校数量'])],
radius=["15%", "80%"], # 内外径
rosetype="area" # 玫瑰图类型
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='2024中国各省地区大学数量分布',
subtitle='@公众号:AI拾贝',
pos_top='1%',
pos_left="1%",
title_textstyle_opts=opts.TextStyleOpts(color='#fff200', font_size=20)
),
legend_opts=opts.LegendOpts(is_show=False),
)
.set_series_opts(
label_opts=opts.LabelOpts(is_show=True, position="outside", formatter="{b}: {c} 所"),
)
)
return pie
绘制地图–全国高校分布地图
# 定义绘制地图的函数
def get_map1(df_school_count):
m1 = (
Map(init_opts=opts.InitOpts(theme='dark', width='1000px', height='600px', bg_color='#0d0735'))
.add('',
[list(z) for z in zip(df_school_count['省份'].tolist(), df_school_count['学校数量'].tolist())],
maptype='china',
is_map_symbol_show=True, # 显示地图符号
label_opts=opts.LabelOpts(is_show=True, color='black'), # 显示标签,字体颜色为黑色
itemstyle_opts=opts.ItemStyleOpts(
border_color='#fff', # 行政区划线颜色
border_width=1 # 行政区划线宽度
)
)
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
is_show=True,
max_=50,
series_index=0,
pos_top='60%',
pos_left='10%',
# 使用默认的颜色范围
range_color=None
),
tooltip_opts=opts.TooltipOpts(formatter='{b}:{c}'),
title_opts=opts.TitleOpts(
title='全国高校分布地图',
subtitle='@公众号:AI拾贝',
pos_top='2%',
pos_left="2%",
title_textstyle_opts=opts.TextStyleOpts(color='#fff200', font_size=20)
)
)
)
return m1
由于篇幅有限,仅展示下绘图函数,具体数据处理的过程,感兴趣的同学可以关注公众号回复关键词获取。
结果展示
饼图–2024中国大学各类型占比
柱状图–2024中国大学综合排名TOP20
玫瑰图–2024中国各省地区大学数量分布
地图–全国高校分布地图
如上,直接在notbook中展示地图数据。如果想保存成html文件,只需要把render_notebook()函数,换成render()即可。
欢迎关注我的公众号“AI拾贝”,原创技术文章第一时间推送。后台发送”软科“,自动回复源码和数据。
