Pandas+Pyecharts | 2020东京奥运会奖牌数据可视化

简介: Pandas+Pyecharts | 2020东京奥运会奖牌数据可视化

大家好,我是欧K。

上期给大家介绍了【中国历届夏季奥运会奖牌数据动态树图】本期给大家动态展示本次东京奥运会各国的奖牌数据情况,希望对你有所帮助。


先看看效果:


金牌榜中国持续占据榜首,能否完美收官就看今天啦!


接下来我们分三步制作这幅动态展示图

1. 导入模块

i

mport pandas as pd
from pyecharts.charts import Timeline, Line
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType

升级 pyecharts 包:


可视化部分需要用到 pyecharts==1.9.0,已安装其他低版本的需要升级,如果未安装过pyecharts,直接pip安装就是最新版本


2. Pandas数据处理


2.1 读取数据

df = pd.read_csv('2020东京奥运会奖牌数据.csv', index_col=0, encoding = 'gb18030')
df

结果:



数据截止到7日一共445条数据


2.2 查看中国每日数据

df1 = df[df['国家']=='中国']
df1


效果:


以上是每日获得奖牌(金牌、银牌、铜牌)数量。


2.3 统计中国、美国、日本、澳大利亚等国家奖牌数据

代码:

all_country_data = []
flg = {}
cols = ['国家']
for country in countrys:
    df1 = df[df['国家']==country]
    df_t = df1.copy()
    df2 = df.loc[df['国家']==country,['金牌','银牌','铜牌','总计']]
    if len(df2.index.tolist()) >= len(cols):
        cols += df2.index.tolist()
    flg[country] = df1.iloc[:1, -1].values[0]
    one_country_data = [country]
    datasss = []
    for i in range(df2.shape[0]):
        datasss.append(df2[:i+1].apply(lambda x:x.sum()).values.tolist())
    d1 = pd.DataFrame(data=datasss, columns=['金牌','银牌','铜牌','总计'])
    for col in d1.columns:
        df_t[col] = d1[col].values
    df_t1 = df_t.loc[:,['金牌']]
    one_country_data += df_t['金牌'].values.tolist()
    all_country_data.append(one_country_data)
d2 = pd.DataFrame(data=all_country_data,columns=cols)
d2 = d2.fillna(method = 'ffill',axis=1)

结果:



这样绘图所需要的数据就准备好了。


3. Pyecharts绘图

3.1 基础折线图

代码:

x_data=cols
CHN = []
for d_time in cols:
    CHN.append(d2[d_time][d2['国家']=='中国'].values.tolist()[0])
line = (
    Line()
    .add_xaxis(x_data)
    # 中国线条
    .add_yaxis(
        '中国',
        CHN,
        label_opts=opts.LabelOpts(is_show=True))
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title='中国金牌',
            pos_left='center',
        ),
        yaxis_opts=opts.AxisOpts(
            name='金牌/枚',
            is_scale=True,
            max_=40),
        legend_opts=opts.LegendOpts(is_show=False),
    ))
line.render_notebook()

效果:



3.2 加载样式

代码:

timeline = Timeline(init_opts=opts.InitOpts(bg_color=JsCode(background_color_js),
                                            width='980px',height='600px'))
timeline.add_schema(is_auto_play=True, is_loop_play=True,
                    is_timeline_show=True, play_interval=500)
x_data=cols
CHN, USA, JPN, AUS = [], [], [], []
for d_time in cols:
    CHN.append(d2[d_time][d2['国家']=='中国'].values.tolist()[0])
line = (
    Line(init_opts=opts.InitOpts(bg_color=JsCode(background_color_js),
                                 width='980px',height='600px'))
    .add_xaxis(x_data)
    # 中国线条
    .add_yaxis(
        '中国',
        CHN,
        symbol_size=10,
        is_smooth=True,
        label_opts=opts.LabelOpts(is_show=True),
        markpoint_opts=opts.MarkPointOpts(
                data=[ opts.MarkPointItem(
                        name="",
                        type_='max',
                        value_index=0,
                        symbol='image://'+ flg['中国'],
                        symbol_size=[40, 25],
                    )],
                label_opts=opts.LabelOpts(is_show=False),
            )
    )
    .set_series_opts(linestyle_opts=linestyle_dic,label_opts=opts.LabelOpts(font_size=12, color='red' ))
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title='中国金牌',
            pos_left='center',
            pos_top='2%',
            title_textstyle_opts=opts.TextStyleOpts(
                    color='#DC143C', font_size=20)
        ),
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=14, color='red'),
                                 axisline_opts=opts.AxisLineOpts(is_show=True,
                                    linestyle_opts=opts.LineStyleOpts(width=2, color='#DB7093'))),
        yaxis_opts=opts.AxisOpts(
            name='金牌/枚',
            is_scale=True,
            max_=40,
            name_textstyle_opts=opts.TextStyleOpts(font_size=16,font_weight='bold',color='#FFD700'),
            axislabel_opts=opts.LabelOpts(font_size=13,color='red'),
            splitline_opts=opts.SplitLineOpts(is_show=True,
                                              linestyle_opts=opts.LineStyleOpts(type_='dashed')),
            axisline_opts=opts.AxisLineOpts(is_show=True,
                                    linestyle_opts=opts.LineStyleOpts(width=2, color='#DB7093'))
        ),
        legend_opts=opts.LegendOpts(is_show=False, pos_right='1.5%', pos_top='2%',
                                    legend_icon='roundRect',orient = 'horizontal'),
    ))
line.render_notebook()

效果:



3.3 动态展示中国每日金牌数据


效果:

3.4 添加其他国家数据


效果:


代码比较多,篇幅原因,部分代码未展示,如果需要可以在下面链接Fork获取(可在线运行):

https://www.heywhale.com/mw/project/610e2d90fe727700176baac3 

完。


END


以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、点在看也可以分享让更多人知道

相关文章
|
1月前
|
Python
Pandas和pyecharts绘制某天多省区连续确诊病例无新增天数的玫瑰图实战(附源码)
Pandas和pyecharts绘制某天多省区连续确诊病例无新增天数的玫瑰图实战(附源码)
88 0
|
8月前
|
存储 数据可视化 数据挖掘
Pandas和Pyecharts带你揭秘最近热播好剧的主题和题材趋势
Pandas和Pyecharts带你揭秘最近热播好剧的主题和题材趋势
|
10月前
|
数据可视化 数据挖掘 大数据
Pandas+Pyecharts | 北京某平台二手房数据分析可视化
Pandas+Pyecharts | 北京某平台二手房数据分析可视化
|
5天前
|
数据可视化 数据挖掘 API
Pandas数据可视化(二)
**Pandas数据可视化教程聚焦于双变量分析,如散点图和堆叠图。散点图用于揭示两个变量间的关联,例如价格和评分,较大的点可能表示价格更高的葡萄酒得分更高。当数据过多时,可使用hexplot减少过度绘制,提供密度信息。堆叠图适合展示类别变量的分布,如不同葡萄酒类型的评分分布,显示了Chardonnay等品种的受欢迎程度。**
|
5天前
|
数据可视化 数据挖掘 API
Pandas数据可视化(一)
Pandas是Python数据分析的核心库,不仅用于数据加载和转换,还内置了简单的数据可视化功能。通过`.plot()`方法,可以创建条形图、折线图、直方图和饼图等,便于单变量分析。例如,用葡萄酒数据集展示了不同产区的葡萄酒数量,加利福尼亚占比最高。条形图适合比较类别间的差异,折线图则用于显示趋势。直方图用于数值分布,但对倾斜数据(极值影响)敏感。饼图展示类别占比,但不适用于大量分类。Pandas的可视化帮助我们理解数据集的结构和特征。
|
1月前
|
数据可视化 数据挖掘 定位技术
《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)
《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)
47 2
|
1月前
|
JSON JavaScript 数据可视化
数据可视化:将Python的Pandas与Vue结合展示交互式图表
【4月更文挑战第10天】本文探讨了如何利用Python的Pandas库和前端框架Vue.js创建交互式数据可视化应用。通过Pandas进行数据处理和分析,Vue.js构建用户界面,结合两者可实现动态图表展示。步骤包括数据准备、转换为JSON、创建Vue项目、发送数据请求、渲染图表、添加交互性和优化性能。这种结合为数据理解和探索提供了高效、用户友好的解决方案,适应于数据爱好者和专家,预示着未来数据可视化将更智能、互动。
|
1月前
|
数据采集 Web App开发 数据可视化
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
|
1月前
|
数据可视化 数据挖掘 Python
Pandas 高级教程——数据可视化
Pandas 高级教程——数据可视化
103 3
|
10月前
|
数据可视化 搜索推荐 数据挖掘
Pandas+Pyecharts | 电子产品销售数据分析可视化+用户RFM画像
Pandas+Pyecharts | 电子产品销售数据分析可视化+用户RFM画像