Pandas+Pyecharts | 成都大运会奖牌数据分析可视化

2023年 8月 18日 122.2k 0

大家好,我是 👉   【Python当打之年】

2023年8月8日,第三十一届世界大学生夏季运动会闭幕式在四川省成都市隆重举行。本届大运会中国体育代表团获得103枚金牌、178枚奖牌,名列金牌榜和奖牌榜首位,这是中国队参加历届大运会以来,所获金牌数的最高纪录,中国也因此成为大运会历史上第二个在一届大运会上金牌总数破百的国家。

本期利用 python 的 pyecharts 可视化库分析成都大运会奖牌数据,希望对大家有所帮助,如有疑问或者需要改进的地方可以联系小编。

涉及到的库:
Pandas — 数据处理
Pyecharts — 数据可视化

1. 导入模块

import pandas as pd
from pyecharts.charts import Line
from pyecharts.charts import Bar
from pyecharts.charts import Funnel
from pyecharts.charts import Map
from pyecharts.charts import WordCloud
from pyecharts import options as opts

2. Pandas数据处理

2.1 读取数据 

df1 = pd.read_csv('成都大运会奖牌榜.csv')

6.png

df2 = pd.read_csv('./成都大运会奖牌榜奖牌明细.csv')

7.png

2.2 数据信息 

df2.info()

8.png

2.3 数据处理

df2['日期'] = df2['日期'].astype('str')
df2['日期'] = pd.to_datetime(df2['日期'])
df2['日期_s'] = df2['日期'].astype('str')

9.png

3. Pyecharts数据可视化

3.1 每日奖牌数量分布

def get_bar1(x_data,y_data1,y_data2):
    bar1 = (
        Bar()
        .add_xaxis(x_data)
        .add_yaxis('中国奖牌',y_data2,category_gap=20)
        .add_yaxis('其他国家奖牌',y_data1,category_gap=20)
        .extend_axis(yaxis=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value}%")))
        .set_global_opts(
            legend_opts=opts.LegendOpts(is_show=True,pos_top='15%',pos_right='40%'),
            title_opts=opts.TitleOpts(
                title='1-每日奖牌数量分布',
                subtitle='-- 制图@公众号:Python当打之年 --',
                pos_top='1%',
                pos_left="1%",
            ),
        )
    )

    line = (
        Line()
        .add_xaxis(x_data)
        .add_yaxis("中国奖牌比例", y_data3, yaxis_index=1, z_level=1,symbol_size=8,
                   label_opts=opts.LabelOpts(color='#00B8D4')
                  )
    )
    bar1.overlap(line)

1.png

  • 中国体育代表团每日奖牌数占比基本在当日总奖牌数的 15% 以上
  • 8月7日中国体育代表团共获得73 枚奖牌,占比达到了 30%

3.2 奖牌榜单TOP20金银铜牌分布

def get_bar2(x_data,y_data1,y_data2,y_data3):
    bar2 = (
        Bar(init_opts=opts.InitOpts(theme='dark',width='1000px', height='800px',bg_color='#0d0735'))
        .add_xaxis(x_data)
        .add_yaxis("金牌数🏅️", y_data1, stack="stack1")
        .add_yaxis("银牌数🥈",y_data2, stack="stack1")
        .add_yaxis("铜牌数🥉",y_data3, stack="stack1")
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title='2-奖牌榜单TOP20金银铜牌分布',
                subtitle='-- 制图@公众号:Python当打之年 --',
                pos_top='1%',
                pos_left="1%",
            ),
            legend_opts=opts.LegendOpts(pos_right="20%", pos_top="25%", orient="vertical")
        )
        .reversal_axis()
    )

2.png

  • 中国体育代表团获得103枚金牌、178枚奖牌,名列金牌榜和奖牌榜首位。

3.3 各比赛项目金牌数量分布

3.png

  • 从金牌数量分布上看,中国体育代表团乒乓球、体操、游泳、田径、赛艇、跳水等项目上优势明显,在乒乓球和跳水两个项目上更是包揽了全部金牌。

3.4 运动员个人金牌榜TOP10

4.png

  • 中国体育代表团的女子游泳运动员张雨霏共参加9个项目(4个单项、5个接力项目),包揽所参赛项目的金牌。
  • 李冰洁、柳雅欣以8枚和6枚分列第二、三位

3.5 各国奖牌数量地图分布

def get_map(datas):
    m = (
        Map()
        .add("", datas, "world",is_map_symbol_show=False)
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title='5-各国奖牌数量地图分布',
                subtitle='-- 制图@公众号:Python当打之年 --',
                pos_top='1%',
                pos_left="1%",
            ),
            visualmap_opts=opts.VisualMapOpts(
                is_show=True,
                pos_left='10%',
                pos_bottom='10%'
            ),
        )
    )

5.png

3.6 各国奖牌数词云

10.png

4. 源码

在线运行地址 :

www.heywhale.com/mw/project/…

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论