Author: 无聊大侠hello word
有一点思考,有一点想法,有一点理性!
CSDN@无聊大侠hello word
文章目录
前言
📋前言📋
💝博客:【无聊大侠hello word】💝
✍本文由在下【无聊大侠hello word】原创,首发于CSDN✍
PyeCharts官方文档(中文)
官方文档(中文):https://pyecharts.org/#/zh-cn/intro
1. 导入模块
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.charts import Pie
from pyecharts.charts import Map
2.读取数据
查看数据前五条数据:
df = pd.read_csv('中国大学综合排名2021.csv', encoding='gb2312')
print(df.head().to_string())
3.查看表格数据类型
print(df.dtypes)
查看表格数据描述:
print(df.describe()) # 可以看到数据一个有582条,升/降数据只有566条,办学层次、学科水平。。。等只有100条,存在数据缺失。
4. 统计空格数据
print(df.isnull().sum())
5. 以0填充所有缺失数据
df.fillna(0, inplace=True)
# print(df.isnull().sum())
统计数据
a.统计前50名中排名下降的学校
# 统计前50名中排名下降( n < 0 )的学校
print(df.loc[(df['排名'] < 50) & (df['升/降'] < 0)].head().to_string())
b.统计各省市大学数量
g = df.groupby('省市')
# 各省市大学数量
df_counts = g.count()['排名'] # 出现次数
df0 = df_counts.copy()
df0.sort_values(ascending=False, inplace=True)
print(df0)
c.统计各省市大学平均分排序
df_means0 = g.mean()['总分']
df_means = df_means0.round(2)
df1 = pd.concat([df_counts, df_means], join='outer', axis=1)
# 重命名
df1.columns = ['数量', '平均分']
# 排序
df1.sort_values(by=['平均分'], ascending=False, inplace=True)
可视化
a. 各省市大学数量和平均分柱状图(横向)
x_data = df1.index.tolist()
y_data1 = df1['数量'].values.tolist()
y_data2 = df1['平均分'].values.tolist()
# 实列化柱状图对象
bar1 = (
Bar()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name='数量', y_axis=y_data1)
.add_yaxis(series_name='平均分', y_axis=y_data2)
.set_global_opts(
title_opts=opts.TitleOpts(title='中国大学排名'),
xaxis_opts=opts.AxisOpts(name='省份'),
yaxis_opts=opts.AxisOpts(name='量')
)
)
# 渲染
bar1.render('中国大学排名(横向).html')
b. 各省市大学数量和平均分柱状图(纵向)
bar2 = (
Bar()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name='数量', y_axis=y_data1)
.add_yaxis(series_name='平均分', y_axis=y_data2)
.set_global_opts(
title_opts=opts.TitleOpts(title='中国大学排名'),
xaxis_opts=opts.AxisOpts(name='省份'),
yaxis_opts=opts.AxisOpts(name='量'),
)
.reversal_axis() # 反转轴
.set_series_opts(
label_opts=opts.LabelOpts(position='right') # 把值反转
)
)
# 渲染
bar2.render('中国大学排名(纵向).html')
c. 各省市大学数量(玫瑰图)
name = df_counts.index.tolist()
count = df_counts.values.tolist()
# 实列化饼图对象
pie1 = (
Pie()
.add(
series_name='',
data_pair=[list(z) for z in zip(name, count)],
# 半径
radius=['20%', '60%'],
# 里圆心距离
center=['50%', '65%'],
# radius:扇区圆心角展现数据的百分比,半径展现数据的大小
# area:所有扇区圆心角相同,仅通过半径展现数据大小
rosetype='radius',
label_opts=opts.LabelOpts(is_show=False)
)
.set_series_opts(
label_opts=opts.LabelOpts(formatter='{b} : {c}')
)
)
# 渲染
pie1.render('各省市大学数量(玫瑰图).html')
d. 各省市大学数量(南丁格尔玫瑰图)
provinces = df0.index.tolist()
num = df0.values.tolist()
# 实列化饼图对象
pie2 = (
Pie()
.add(
series_name='',
data_pair=[list(z) for z in zip(provinces, num)],
radius=['30%', '105%'],
rosetype='area',
)
.set_global_opts(
title_opts=opts.TitleOpts(title='中国大学排名'),
legend_opts=opts.LegendOpts(is_show=False),
tooltip_opts=opts.TitleOpts(),
)
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=True,
position='inside',
font_size=12,
formatter='{b}: {c}',
font_style='italic',
font_weight='bold',
font_family='Microsoft YaHei'
)
)
)
# 渲染
pie2.render('各省市大学数量(南丁格尔玫瑰图).html')
e. 各省市大学数量分布(地图)
name = df0.index.tolist()
count = df0.values.tolist()
# 实列化Map对象
map = (
Map()
.add(series_name='', data_pair=[list(z) for z in zip(name, count)], maptype='china')
.set_global_opts(
title_opts=opts.TitleOpts(title='中国大学排名'),
visualmap_opts=opts.VisualMapOpts(
max_=40,
# 分几段
split_number=8,
# 是否分段
is_piecewise=True,
),
)
)
# 渲染
map.render('各省市大学数量分布(地图).html')
先赞后看,养成习惯!!!^ _ ^ ❤️ ❤️ ❤️
码字不易,大家的支持就是我的坚持下去的动力。点赞后不要忘了关注我哦!