<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          中國奧運(yùn)會成績,知道多少?13張圖告訴你

          共 13170字,需瀏覽 27分鐘

           ·

          2021-08-06 23:36



          轉(zhuǎn)自:尤而小屋 

          作者:  peter

          最近奧運(yùn)會也是非常熱門的事件,但是針對本次奧運(yùn)會有很多值得吐槽的地方,小島國的騷氣操作不想寫??

          于是Peter從網(wǎng)上收集的我國從1984年第一次參加夏季奧運(yùn)會到2016年的歷屆奧運(yùn)會獲獎情況,了解下歷屆的奧運(yùn)會成績。

          數(shù)據(jù)整理成寬表長表兩種形式,進(jìn)行簡單的數(shù)據(jù)處理和不同方式的可視化圖形展示,方便大家了解我國的奧運(yùn)會成績。

          文中全程使用的繪圖工具是高級可視化庫:plotly


          圖形預(yù)覽

          看看部分圖形效果展示:

          導(dǎo)入庫

          導(dǎo)入的庫主要是兩種:數(shù)據(jù)處理和繪圖相關(guān)

          # 數(shù)據(jù)處理相關(guān)
          import pandas as pd
          import numpy as np

          # 繪圖相關(guān)
          import plotly.express as px
          import plotly.graph_objects as go
          from plotly.subplots import make_subplots  # 制作多子圖

          兩種形式數(shù)據(jù)

          從網(wǎng)上收集的中國隊歷屆夏季奧運(yùn)會獲獎情況,整理成兩種形式:寬表和長表

          1、寬表

          寬表形式是將字段盡可能多羅列出來


          2、長表

          長表形式是將字段盡可能減少,同一個字段的數(shù)據(jù)信息可能出現(xiàn)重復(fù)


          中國參加了多少屆夏季奧運(yùn)會

          主要講解的是Python中字符串格式化的知識點(diǎn),3種不同的格式化展示方式:

          • 占位符%s
          • format()
          • f-string

          總獎牌數(shù)

          展示的是中國歷屆奧運(yùn)會的總獎牌數(shù)變化趨勢:

          fig = px.line(df,x="地點(diǎn)",y="總數(shù)",text="總數(shù)")

          fig.update_layout(title="中國獲得總獎牌數(shù)")

          fig.show()

          從結(jié)果的圖形中,我們看到2008年是最多的,剛好是100枚??畢竟是家門口的比賽

          fig = px.scatter(
              df,
              x="地點(diǎn)",
              y="總數(shù)",
              color="金牌",
              size="總數(shù)",
              text="總數(shù)"
              )

          fig.show()

          男子和女子金牌對比

          從結(jié)果中我們可以看出來:

          • 1984年第一次參加奧運(yùn)會,男子金牌數(shù)量是高于女子的
          • 此后,每屆都是女子高于男子:巾幗不讓須眉??

          多指標(biāo)變化

          fig = go.Figure()

          fig.add_trace(go.Scatter(
              x=df["年份"].tolist(),
              y=df["總數(shù)"].tolist(),
              name="總數(shù)"
          ))

          fig.add_trace(go.Bar(
              x=df["年份"].tolist(),
              y=df["金牌"].tolist(),
              name="金牌"
          ))

          fig.add_trace(go.Scatter(
              x=df["年份"].tolist(),
              y=df["銀牌"].tolist(),
              name="銀牌"
          ))

          fig.add_trace(go.Scatter(
              x=df["年份"].tolist(),
              y=df["銅牌"].tolist(),
              name="銅牌"
          ))

          fig.add_trace(go.Scatter(
              x=df["年份"].tolist(),
              y=df["金牌榜"].tolist(),
              name="金牌榜"
          ))


          fig.add_trace(go.Bar(
              x=df["年份"].tolist(),
              y=df["男子金牌"].tolist(),
              name="男子金牌"
          ))

          fig.add_trace(go.Scatter(
              x=df["年份"].tolist(),
              y=df["女子金牌"].tolist(),
              name="女子金牌"
          ))

          fig.show()

          多指標(biāo)變化

          通過子圖的形式展示不同指標(biāo)的變化趨勢:

          # 兩個基本參數(shù):設(shè)置行、列
          fig = make_subplots(rows=4, cols=2,
                             subplot_titles=["獎牌總數(shù)","金牌","銀牌","銅牌","金牌榜","男子金牌","女子金牌","金牌占比"]) 

          # 添加數(shù)據(jù)軌跡
          fig.add_trace(go.Scatter(
              x=df["年份"].tolist(),
              y=df["總數(shù)"].tolist(),
              name="總數(shù)"
          ),1,1)

          fig.add_trace(go.Bar(
              x=df["年份"].tolist(),
              y=df["金牌"].tolist(),
              name="金牌"
          ),1,2)

          fig.add_trace(go.Bar(
              x=df["年份"].tolist(),
              y=df["銀牌"].tolist(),
              text=df["銀牌"].tolist(),
              textposition="outside",
              name="銀牌"
          ),2,1)

          fig.add_trace(go.Scatter(
              x=df["年份"].tolist(),
              y=df["銅牌"].tolist(),
              name="銅牌"
          ),2,2)

          fig.add_trace(go.Scatter(
              x=df["年份"].tolist(),
              y=df["金牌榜"].tolist(),
              mode="markers+text",
              text=df["金牌榜"].tolist(),
              textposition="bottom center",    # 位置
              name="金牌榜"
          ),3,1)


          fig.add_trace(go.Bar(
              x=df["年份"].tolist(),
              y=df["男子金牌"].tolist(),
              name="男子金牌"
          ),3,2)

          fig.add_trace(go.Scatter(
              x=df["年份"].tolist(),
              y=df["女子金牌"].tolist(),
              name="女子金牌"
          ),4,1)

          fig.add_trace(go.Scatter(
              x=df["年份"].tolist(),
              y=df["金牌占比"].tolist(),
              mode="lines+markers",
              text=df["金牌占比"].tolist(),
              textposition="top center",
              name="金牌占比"
          ),4,2)


          # 設(shè)置圖形的寬高和標(biāo)題
          fig.update_layout(height=600
                            width=800
                            title_text="奧運(yùn)會獎牌可視化")
          fig.show()

          雷達(dá)圖

          雷達(dá)圖展示的是不同年份的獲獎情況

          import plotly.graph_objects as go

          categories = ['金牌','銀牌','銅牌']

          fig = go.Figure()

          fig.add_trace(go.Scatterpolar(
                r=df.iloc[0,2:5].tolist(),
                theta=categories,
                fill='tonext',
                name='洛杉磯-1984'
          ))
          fig.add_trace(go.Scatterpolar(
                r=df.iloc[1,2:5].tolist(),
                theta=categories,
                fill='tonext',
                name='漢城-1988'
          ))

          fig.add_trace(go.Scatterpolar(
                r=df.iloc[2,2:5].tolist(),
                theta=categories,
                fill='tonext',
                name='巴塞羅那-1992'
          ))
          fig.add_trace(go.Scatterpolar(
                r=df.iloc[3,2:5].tolist(),
                theta=categories,
                fill='tonext',
                name='亞特蘭大-1996'
          ))

          fig.add_trace(go.Scatterpolar(
                r=df.iloc[4,2:5].tolist(),
                theta=categories,
                fill='tonext',
                name='悉尼-2000'
          ))

          fig.add_trace(go.Scatterpolar(
                r=df.iloc[5,2:5].tolist(),
                theta=categories,
                fill='tonext',
                name='雅典-2004'
          ))
          fig.add_trace(go.Scatterpolar(
                r=df.iloc[6,2:5].tolist(),
                theta=categories,
                fill='tonext',   # ['none', 'toself', 'tonext']
                name='北京-2008'
          ))

          fig.add_trace(go.Scatterpolar(
                r=df.iloc[7,2:5].tolist(),
                theta=categories,
                fill='tonext',
                name='倫敦-2012'
          ))
          fig.add_trace(go.Scatterpolar(
                r=df.iloc[8,2:5].tolist(),
                theta=categories,
                fill='tonext',
                name='里約熱內(nèi)盧-2016'
          ))

          fig.update_layout(
            polar=dict(
              radialaxis=dict(
                visible=True,
                range=[054]
              )),
            showlegend=True
          )

          fig.show()

          小結(jié):從雷達(dá)圖的不同維度頂端觸角,就可以觀察到各自的最大值,比如金牌和銅牌最多的就是北京奧運(yùn)會,銀牌最多的是倫敦奧運(yùn)會

          ??:上面的圖形都是基于寬表形式的數(shù)據(jù),下面是基于長表形式

          金銀銅牌對比

          3種不同獎牌的地點(diǎn)(年份)對比情況:

          px.bar(df2,
                 x="地點(diǎn)",
                 y="數(shù)量",
                 color="獎牌",
                 text="數(shù)量",
                 barmode="group"
                )

          多子圖-不同年份的3種獎牌數(shù)

          # 不共享y軸

          fig = px.scatter(
              df2,
              x="排名",
              y="數(shù)量",
              color="獎牌",
              size="數(shù)量",
              facet_col="年份",
              facet_col_wrap=3
          )

          #fig.update_yaxes(matches=None)  # 不共享y軸

          fig.show()

          圖形解釋:

          1. 橫坐標(biāo):整體的排名。越靠左,數(shù)值越小,排名靠前。可以看到北京奧運(yùn)會是最棒的:整體排名靠左
          2. 縱坐標(biāo):每個獎牌的數(shù)量,氣泡越大,數(shù)量越多。銀牌是2012年倫敦,銅牌是2008年北京(看點(diǎn)的高度)

          3種獎牌整體占比

          3種獎牌不同年份占比

          3種獎牌在不同屆奧運(yùn)會的占比情況:

          # 兩個基本參數(shù):設(shè)置行、列
          fig = make_subplots(rows=3, cols=3,
                              horizontal_spacing=0.08,
                              vertical_spacing=0.1,
                              column_widths=[0.4,0.4,0.4],
                              specs=[[{"type":"domain"},{"type":"domain"},{"type":"domain"}],
                                    [{"type":"domain"},{"type":"domain"},{"type":"domain"}],
                                    [{"type":"domain"},{"type":"domain"},{"type":"domain"}]
                                   ],
                             subplot_titles=["1984-洛杉磯","1988-漢城","1992-巴塞羅那","1996-亞特蘭大",
                                             "2000-悉尼","2004-雅典","2008-北京","2012-倫敦","2016-里約熱內(nèi)盧"]) 

          fig.add_trace(go.Pie(
              labels=df2["獎牌"][:3].tolist(),
              values=df2["數(shù)量"][:3].tolist(),
              name="1984-洛杉磯"
          ),1,1)


          fig.add_trace(go.Pie(
              labels=df2["獎牌"][:3].tolist(),
              values=df2["數(shù)量"][3:6].tolist(),
              name="1988-漢城"
          ),1,2)

          fig.add_trace(go.Pie(
              labels=df2["獎牌"][:3].tolist(),
              values=df2["數(shù)量"][6:9].tolist(),
              name="1992-巴塞羅那"
          ),1,3)


          fig.add_trace(go.Pie(
              labels=df2["獎牌"][:3].tolist(),
              values=df2["數(shù)量"][9:12].tolist(),
              name="1996-亞特蘭大"
          ),2,1)

          fig.add_trace(go.Pie(
              labels=df2["獎牌"][:3].tolist(),
              values=df2["數(shù)量"][12:15].tolist(),
              name="2000-悉尼"
          ),2,2)

          fig.add_trace(go.Pie(
              labels=df2["獎牌"][:3].tolist(),
              values=df2["數(shù)量"][15:18].tolist(),
              name="2004-雅典"
          ),2,3)

          fig.add_trace(go.Pie(
              labels=df2["獎牌"][:3].tolist(),
              values=df2["數(shù)量"][18:21].tolist(),
              name="2008-北京"
          ),3,1)

          fig.add_trace(go.Pie(
              labels=df2["獎牌"][:3].tolist(),
              values=df2["數(shù)量"][21:24].tolist(),
              name="2012-倫敦"
          ),3,2)

          fig.add_trace(go.Pie(
              labels=df2["獎牌"][:3].tolist(),
              values=df2["數(shù)量"][24:27].tolist(),
              name="2016-里約熱內(nèi)盧"
          ),3,3)


          fig.update_traces(hole=0.2)

          fig.show()

          從圖形可以看出來:

          • 北京奧運(yùn)會占比最高:51%;其次是雅典奧運(yùn)會
          • 1988年的漢城奧運(yùn)會最低,才17.9%

          3種獎牌旭日圖

          px.sunburst(df2,path=["獎牌","地點(diǎn)"],
                     values="數(shù)量",
                     color="年份",
                     color_continuous_scale="RdBu"
                     )

          根據(jù)3種獎牌的旭日圖,能夠看到3種獎牌各自的排序:

          • 金牌:北京、倫敦、雅典
          • 銀牌:倫敦、亞特蘭大、巴塞羅那
          • 銅牌:北京、里約熱內(nèi)盧、倫敦

          總結(jié)

          本文通過不同的可視化圖形展示了我國的獲獎情況,數(shù)據(jù)顯示在北京奧運(yùn)會中取得成績是最亮眼的;其次,女子的金牌一直都是高于男子,女隊員真的是巾幗不讓須眉。希望在這次奧運(yùn)會中國隊再創(chuàng)輝煌!中國隊????,yyds!



          最后推薦一下我們的星球:由菜鳥學(xué)Python原班人馬建了一個投資星球,匯聚一批喜歡投資的朋友一起分享投資的技巧,不限于基金,股票等其他品種,提高自己的財商,一起讀書打卡,歡迎加入。




          推薦閱讀:

          入門: 最全的零基礎(chǔ)學(xué)Python的問題  | 零基礎(chǔ)學(xué)了8個月的Python  | 實戰(zhàn)項目 |學(xué)Python就是這條捷徑


          干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 |   從萬眾期待到口碑撲街!唐探3令人失望  | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個海量小姐姐素描圖 |碟中諜這么火,我用機(jī)器學(xué)習(xí)做個迷你推薦系統(tǒng)電影


          趣味:彈球游戲  | 九宮格  | 漂亮的花 | 兩百行Python《天天酷跑》游戲!


          AI: 會做詩的機(jī)器人 | 給圖片上色 | 預(yù)測收入 | 碟中諜這么火,我用機(jī)器學(xué)習(xí)做個迷你推薦系統(tǒng)電影


          小工具: Pdf轉(zhuǎn)Word,輕松搞定表格和水印! | 一鍵把html網(wǎng)頁保存為pdf!|  再見PDF提取收費(fèi)! | 用90行代碼打造最強(qiáng)PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換 | 制作一款釘釘?shù)蛢r機(jī)票提示器! |60行代碼做了一個語音壁紙切換器天天看小姐姐!


          年度爆款文案


          點(diǎn)閱讀原文,領(lǐng)廖雪峰資料!

          瀏覽 16
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲视频高清 | 亚洲一区二区黄色电影视频 | 日韩中文字幕无码中字字幕 | 91久久精品视频 | 国产成人无码精品色欲天香 |