数据可视化每周挑战——中国高校数据分析

最近要高考了,这里祝大家金榜题名,旗开得胜。

这是数据集,如果有需要的,可以私信我。

复制代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pyecharts.charts import Line
from pyecharts.charts import Bar
from pyecharts.charts import PictorialBar
from pyecharts.charts import Map
from pyecharts.charts import Pie
from pyecharts.charts import Grid
from pyecharts.charts import WordCloud
from pyecharts import options as opts

plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

老规矩第一步将我们需要用到的库先导入,其次,我们可以将绘图时的字体设置好,

复制代码
data = pd.read_excel("D:\\每周挑战\\中国大学综合排名2023.xlsx")
data.head()

导入数据

复制代码
# data.info()
# 可以看出办学层次缺失数据集太多了,因此我们将其删除
data = data.drop("层次",axis=1)
data.info()
复制代码
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 590 entries, 0 to 589
Data columns (total 16 columns):
 #   Column   Non-Null Count  Dtype  
---  ------   --------------  -----  
 0   排名       590 non-null    int64  
 1   学校名称     590 non-null    object 
 2   英文名称     590 non-null    object 
 3   类型       590 non-null    object 
 4   地区       590 non-null    object 
 5   评分       590 non-null    float64
 6   办学层次     590 non-null    float64
 7   学科水平     590 non-null    float64
 8   办学资源     590 non-null    float64
 9   师资规模与结构  590 non-null    float64
 10  人才培养     590 non-null    float64
 11  科学研究     590 non-null    float64
 12  服务社会     590 non-null    float64
 13  高端人才     590 non-null    float64
 14  重大项目与成果  590 non-null    float64
 15  国际竞争力    590 non-null    float64
dtypes: float64(11), int64(1), object(4)
memory usage: 73.9+ KB

首先,我们先对学校的分布进行分析,这里我们直接使用Map来绘图

复制代码
school_data = data['地区'].value_counts().reset_index()
x = school_data['index'].tolist()
y = school_data['地区'].tolist()
df = []
for i in zip(x,y):
    df.append(i)

range_colors = ['#228be6','#1864ab','#8BC34A','#FFCA28','#D32F2F','#1DFFF5','#FF850E']
schoolmap = (
    Map().add("",df,"china",is_map_symbol_show=False,
             label_opts=opts.LabelOpts(is_show=False)
             )
         .set_global_opts(
             title_opts=opts.TitleOpts(
                  title="2023年各个地区高校数量分布情况",
                  pos_top='1%',
                  pos_left='center'
              ),
              legend_opts=opts.LegendOpts(is_show=False),
              visualmap_opts = opts.VisualMapOpts(
                  max_=40,split_number=8,is_piecewise=True,range_color=range_colors,
                  pos_bottom='5%',pos_left='10%'
              )
         )
)
# schoolmap.render_notebook()
复制代码
df = data['类型'].value_counts()
data_pair = [(index, value) for index, value in df.items()]
pie = (
    Pie(init_opts=opts.InitOpts(width='1000px',height='800px'))
    .add("",data_pair,radius=['30%','50%'])
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="各个类型高校的占比",
            pos_top="1%",
            pos_left='center',
            title_textstyle_opts=opts.TextStyleOpts(color='#1DFFF5',font_size=20)
        ),
        visualmap_opts=opts.VisualMapOpts(
            is_show=True,
            max_=200,
            range_color=['#228be6','#1864ab','#8BC34A','#1DFFF5','#FF850E']
        ),
        legend_opts=opts.LegendOpts(is_show=False)
    )
)
pie.render_notebook()
复制代码
x_data = data.columns[6:].tolist()

line = (
    Line(init_opts = opts.InitOpts(width='1000px',height='800px'))
    .add_xaxis(x_data)
)

for i in range(len(data)):
    line.add_yaxis(data.iloc[i,:].values[1], data.iloc[i,:].values[7:])

line.set_global_opts(
    legend_opts=opts.LegendOpts(is_show=False, pos_top='15%', pos_right='20%', orient='vertical'),
    title_opts=opts.TitleOpts(
        title='中国高校各项评分',
        pos_top='1%',
        pos_left="1%",
        title_textstyle_opts=opts.TextStyleOpts(color='#fff200', font_size=20)
    ),
)
line.render_notebook()

这个图像下载不下来,因此我这里截屏了。大家如果想看自己学校的,可以修改上面的代码 。(由于该数据集只有前100为学校有具体数据,其他学校无数据,因此这里只能改99之前的)

复制代码
x_data = data.columns[6:].tolist()

line = (
    Line(init_opts = opts.InitOpts(width='1000px',height='800px'))
    .add_xaxis(x_data)
)

line.add_yaxis(data.iloc[0(数据集中你学校的位置比如清华学校是0这里就写0),:].values[1], data.iloc[0(数据集中你学校的位置比如清华学校是0这里就写0),:].values[7:])

line.set_global_opts(
    legend_opts=opts.LegendOpts(is_show=False, pos_top='15%', pos_right='20%', orient='vertical'),
    title_opts=opts.TitleOpts(
        title='中国高校各项评分',
        pos_top='1%',
        pos_left="1%",
        title_textstyle_opts=opts.TextStyleOpts(color='#fff200', font_size=20)
    ),
)
line.render_notebook()

我这里改为了50

相关推荐
w***765517 小时前
MySQL数据可视化实战:从查询到图表
信息可视化
lingling00918 小时前
2026 年 BI 发展新趋势:AI 功能如何让数据分析工具 “思考” 和 “对话”?
大数据·人工智能·数据分析
运营秋秋19 小时前
数据分析:超越阅读量,读懂数据背后的“用户语言”
数据挖掘·数据分析·运营
老歌老听老掉牙1 天前
回归模型评估的双重镜:决定系数与平均绝对误差
人工智能·数据挖掘·回归
踏歌~1 天前
突击债市高频交易(固收)面试
数据分析
a***59261 天前
MySQL数据可视化实战指南
数据库·mysql·信息可视化
Turboex邮件分享1 天前
邮件系统的未来趋势:AI、机器学习与大数据分析的融合应用
人工智能·机器学习·数据分析
大闲在人1 天前
惠普利用运筹学改进打印机生产线的设计
数据分析·供应链管理·智能制造
狸猫的科普日记1 天前
MySQL 数据可视化的核心步骤
信息可视化
e***98571 天前
MySQL数据可视化实战:从查询到图表全攻略
数据库·mysql·信息可视化