成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

以FIFA球員數據集為例,詳解3大酷炫可視化技巧

大數據 數據可視化
本文討論了計算和讀取不同變量類型之間的相關性、繪制數值數據之間的相關性、以及使用分類散點圖繪制分類數據和數值數據之間的相關性。

可視化令數據一目了然。然而,成功的數據可視化往往很難實現。此外,向更多受眾呈現這些可視化的數據,也需要耗費更多時間和精力。

大家都知道如何制作條形圖、散點圖和直方圖,但卻不注重美化它們。這在無形中會損害我們在同行和上級心中的可靠性。

此外,代碼重用也很重要。你該不會想每次訪問數據集都從頭開始吧?利用一些可重用的圖形能更快地找到你想要的信息。

[[265626]]

本文涉及三個實用的可視化工具:

  • 圖形分類相關性
  • 散點圖矩陣
  • 使用Seaborn的分類散點圖注釋和圖注釋

總的來說,本文會教大家制作一些好看又中用的圖表。

本文將使用kaggle上的國際足聯2019年完整的球員數據集,其***版數據庫包括了每個注冊在內的球員的詳細信息。

由于該數據集有許多列,因此我們只關注分類列和連續列的子集。

  1. import numpy as np 
  2. import pandas as pd 
  3. import seaborn as sns 
  4. import matplotlib.pyplot as plt 
  5. %matplotlib inline 
  6. # We dont Probably need the Gridlines. Do we? If yes comment this line 
  7. sns.set(style="ticks"
  8. player_df = pd.read_csv("../input/data.csv") 
  9. numcols = [ 
  10.  'Overall', 
  11.  'Potential', 
  12. 'Crossing','Finishing',  'ShortPassing',  'Dribbling','LongPassing', 'BallControl', 'Acceleration', 
  13.        'SprintSpeed', 'Agility',  'Stamina', 
  14.  'Value','Wage'] 
  15. catcols = ['Name','Club','Nationality','Preferred Foot','Position','Body Type'] 
  16. # Subset the columns 
  17. player_dfplayer_df = player_df[numcols+ catcols] 
  18. # Few rows of data 
  19. player_df.head(5) 

球員數據

雖然該數據格式良好,但是因為工資和值列是以歐元為單位,并包含字符串,需要進行一些預處理,才能使它們為后續分析提供數值。

  1. def wage_split(x): 
  2.     try: 
  3.         return int(x.split("K")[0][1:]) 
  4.     except: 
  5.         return 0 
  6. player_df['Wage'] = player_df['Wage'].apply(lambda x : wage_split(x)) 
  7. def value_split(x): 
  8.     try: 
  9.         if 'M' in x: 
  10.             return float(x.split("M")[0][1:]) 
  11.         elif 'K' in x: 
  12.             return float(x.split("K")[0][1:])/1000 
  13.     except: 
  14.         return 0 
  15. player_df['Value'] = player_df['Value'].apply(lambda x : value_split(x)) 

圖形分類相關性

簡單來說,相關性是衡量兩個變量如何一起運動的指標。

例如,在現實生活中,收入與支出呈正相關,其中一個變量隨著另一個變量的增加而增加。

學習成績和電子游戲的使用呈負相關,其中一個變量的增加意味著另一個變量的減少。

因此如果預測變量與目標變量呈正相關或負相關,那么該變量就有研究價值。

研究不同變量之間的相關性對于理解數據非常有意義。

使用Seaborn即可輕松創建出相當不錯的關系圖。

  1. corr = player_df.corr() 
  2. g = sns.heatmap(corr,  vmax=.3, center=0
  3.             square=Truelinewidths=.5, cbar_kws={"shrink": .5}, annot=Truefmt='.2f'cmap='coolwarm'
  4. sns.despine() 
  5. g.figure.set_size_inches(14,10) 
  6.  
  7. plt.show() 

所有的分類變量都去哪了?

你有注意到什么問題嗎?

有問題,因為該圖僅計算了數值列之間的相關性。

如果目標變量是club或position,會出現什么情況?

如果想得到三種不同情況之間的相關性,可使用以下相關性度量來計算。

1. 數值變量

該變量可通過Pearson相關性的方式得到,用于度量兩個變量如何一起運動,范圍為[-1,1]。

2. 分類變量

使用克萊姆V系數來分類案例。該系數是兩個離散變量之間的相互關聯,并與具有兩個或多層次的變量一起使用。它也是一個對稱的度量,因為變量的順序無關緊要,即克萊姆(A,B)==克萊姆(B,A)。

例如,在數據集中,Club和Nationality一定有某種關聯。

可用堆疊圖來驗證這一點,這是理解分類變量和分類變量間分布的一個***方法,因為在該數據中有很多國籍和俱樂部,所以使用數據的子集。

只保留***的球隊(保留波爾圖足球俱樂部只是為了讓樣本更加多樣化)和最常見的國籍。

俱樂部偏好在很大程度上反映了“國籍”:了解前者有助于預測后者。

由圖可知,英國球員更可能效力于切爾西隊或曼聯隊,而不是在巴塞羅那隊、拜仁慕尼黑隊或波爾圖隊。

同理,克萊姆V系數也也捕獲到了同樣的信息。

如果所有俱樂部擁有的球員的國籍比例相同,那么克萊姆V系數則為0。

如果每個俱樂部偏好單一國籍的球員,則克萊姆系數V==1,例如,所有的英國球員在曼聯隊效力,所有的德國球員在拜仁慕尼黑隊效力等等。

在所有其他情況下,范圍則為[0,1]。

3. 數值變量和分類變量

對連續分類案例使用相關比率。

在不涉及太多數學的情況下,該變量用于離散程度的衡量。

如果給定一個數字,就能找出它的類別嗎?

例如,假設數據集中有“SprintSpeed”和“Position”兩列分類,那么:

  • 守門員:58(De Gea)、52(T. Courtois)、58(M. Neuer)、 43(G. Buffon)
  • 中后衛:68(D. Godin)、59(V. Kompany)、73(S. Umtiti)、 75(M. Benatia)
  • 前鋒:91(C.Ronaldo)、94(G. Bale)、80(S.Aguero)、 76(R. Lewandowski)

由上可知,這些數字很好地預測了他們所處的位置,因此相關性很高。

如果某球員沖刺速度超過85,那么該球員肯定是前鋒。

這個比率也在[0,1]之間。

執行此操作的代碼取自dython包,代碼不會很多,最終結果如下:

  1. player_dfplayer_df = player_df.fillna(0) 
  2. results = associations(player_df,nominal_columns=catcols,return_results=True

分類vs.分類、分類vs.數值、數值vs.數值,這些使圖表更為有趣。

很美,不是嗎?

只要看看數據,就能對足球有如此多的了解,例如:

  • 球員的位置與運球能力高度相關??偛荒茏屆肺魈吆笮l吧!
  • 值與傳球和控球的相關性比運球更高。規則是永遠傳球,正如內馬爾的傳球。
  • “俱樂部”和“收入”有很高的相關性并且可預測。
  • “體型”與“踢球偏好的腳”高度相關。這是否意味著如果某球員是瘦子,就很可能喜歡用左腳踢球?這可能沒啥實際意義,需要進一步調查。

此外,通過這個簡單的圖表,就能找到上述這么多信息,這在沒有分類變量的典型相關圖中是見不到的。

大家可深入研究這張圖表,得到更多有意義的結果,但關鍵是圖表能讓大家在現實生活中更容易找到某種規律。

散點圖矩陣

雖然前文談到了很多相關性,但它是一個變幻無常的指標,為了讓大家理解,我們來看一個例子。

“Anscombe四重奏”由四個相關性幾乎近似于1的數據集組成,但具有非常不同的數據分布,并且在繪制時呈現出非常不同的效果。

Anscombe四重奏:相關性變化無常

因此,有時繪制相關數據變得至關重要,并且需要單獨查看分布。

現在數據集中有很多列,把它們全都繪制成圖形會很費力。

其實只需幾行代碼就可以解決。

  1. filtered_player_df = player_df[(player_df['Club'].isin(['FC Barcelona', 'Paris Saint-Germain', 
  2.        'Manchester United', 'Manchester City', 'Chelsea', 'Real Madrid','FC Porto','FC Bayern München'])) &  
  3.                       (player_df['Nationality'].isin(['England', 'Brazil', 'Argentina', 
  4.        'Brazil', 'Italy','Spain','Germany']))  
  5.                      ] 
  6. # Single line to create pairplot 
  7. g = sns.pairplot(filtered_player_df[['Value','SprintSpeed','Potential','Wage']]) 

非常好,在該圖中可看到很多信息。

  • 工資和價值高度相關。
  • 大多數其它值也是相關的,然而“潛力”與“價值”的比的趨勢是不尋常的。可以看到,當到達特定的潛在閥值時,價值如何呈指數增長。這些信息對建模很有幫助,可以對“潛力”進行轉換使其更具有相關性嗎?

警告:沒有分類列!

在此基礎上能做得更好嗎?總能做到。

  1. g = sns.pairplot(filtered_player_df[['Value','SprintSpeed','Potential','Wage','Club']],hue = 'Club'

圖上的信息很多,只需添加“hue”參數到分類變量“club”中即可。

  • 波爾圖隊的工資分配趨向于工資少的那一端。
  • 該圖無法看出波爾圖隊球員價值的急劇分布,波爾圖隊的球員們總是在尋求機會。
  • 許多粉紅點(代表切爾西隊)在“潛力”和“工資”圖上形成了一個集群。切爾西隊有很多工資較低的高潛力球員,需要更多關注。

還可從工資/價值子圖中獲取一些信息。

年薪50萬的藍點是梅西。此外,比梅西更有價值的橙點是內馬爾。

盡管該技巧仍然不能解決分類問題,但還有一些其它方法來研究分類變量分布,雖然是個例。

分類散點圖

如何查看分類數據和數字數據之間的關系?

就像輸入名字一樣,輸入分類散點圖的圖片。為每個類別繪制一組點,在y軸上稍微分散,以便于查看。

這是我們目前繪制這種關系的***方法。

  1. g = sns.swarmplot(y = "Club"
  2.               x = 'Wage',  
  3.               data = filtered_player_df
  4.               # Decrease the size of the points to avoid crowding  
  5.               size = 7
  6. # remove the top and right line in graph 
  7. sns.despine() 
  8. g.figure.set_size_inches(14,10) 
  9. plt.show() 

分類散點圖

為什么不用箱形圖呢?中位數在哪?可以繪制出來嗎?當然可以。在頂部覆蓋一個條形圖,就得到了一個好看的圖形。

  1. g = sns.boxplot(y = "Club"
  2.               x = 'Wage',  
  3.               data = filtered_player_dfwhis=np.inf) 
  4. g = sns.swarmplot(y = "Club"
  5.               x = 'Wage',  
  6.               data = filtered_player_df
  7.               # Decrease the size of the points to avoid crowding  
  8.               size = 7,color = 'black'
  9. # remove the top and right line in graph 
  10. sns.despine() 
  11. g.figure.set_size_inches(12,8) 
  12. plt.show() 

有趣的分類散點圖+箱形圖

很好,在圖表上可看出各個點的分布和一些統計數據,并能明確地了解工資差異。

圖中最右邊的點是梅西,這樣一來,就不用通過圖表下方的文字來說明。

該圖可用來做演示,如果老板要求把梅西寫在這張圖上,那么就可加上圖片注釋。

  1. max_wage = filtered_player_df.Wage.max() 
  2. max_wage_player = filtered_player_df[(player_df['Wage'] == max_wage)]['Name'].values[0] 
  3. g = sns.boxplot(y = "Club"
  4.               x = 'Wage',  
  5.               data = filtered_player_dfwhis=np.inf) 
  6. g = sns.swarmplot(y = "Club"
  7.               x = 'Wage',  
  8.               data = filtered_player_df
  9.               # Decrease the size of the points to avoid crowding  
  10.               size = 7,color='black'
  11. # remove the top and right line in graph 
  12. sns.despine() 
  13. # Annotate. xy for coordinate. max_wage is x and 0 is y. In this plot y ranges from 0 to 7 for each level 
  14. # xytext for coordinates of where I want to put my text 
  15. plt.annotate(s = max_wage_player
  16.              xy = (max_wage,0), 
  17.              xytext = (500,1),  
  18.              # Shrink the arrow to avoid occlusion 
  19.              arrowprops = {'facecolor':'gray', 'width': 3, 'shrink': 0.03}, 
  20.              backgroundcolor = 'white'
  21. g.figure.set_size_inches(12,8) 
  22. plt.show() 

 

帶注釋的統計信息和點群,可用于演講中。

  • 看看該圖下方的波爾圖隊,工資預算如此之小,難以和其它高收入的球隊們競爭。
  • 皇馬和巴塞羅那有許多高薪球員。
  • 曼聯的工資中位數***。
  • 曼聯和切爾西注重平等,許多球員的工資水平都差不多。
  • 雖然內馬爾比梅西更受重視,但梅西和內馬爾的工資差距巨大。

由此可知,在這個瘋狂的世界中,有些正常只是表面的。

本文討論了計算和讀取不同變量類型之間的相關性、繪制數值數據之間的相關性、以及使用分類散點圖繪制分類數據和數值數據之間的相關性。十分有趣的是,可以在Seaborn 中將圖表元素疊加在一起。

責任編輯:趙寧寧 來源: 讀芯術
相關推薦

2022-09-29 11:16:21

Python數據可視化

2022-08-17 09:01:16

數據可視化大數據

2021-12-30 12:02:52

Python可視化代碼

2019-07-26 09:19:32

數據可視化架構

2018-03-21 12:13:47

工具數據開發

2022-04-13 09:01:53

Echart5繪制地圖

2020-03-11 14:39:26

數據可視化地圖可視化地理信息

2020-07-06 14:50:36

地圖可視化Java

2023-04-26 15:27:11

JavaScript技巧元素

2023-12-27 10:47:45

Flask數據可視化開發

2017-10-14 13:54:26

數據可視化數據信息可視化

2024-02-26 12:02:37

Python數據可視化D3blocks

2022-02-11 16:01:14

C語言技巧命令

2021-09-26 16:20:04

Sentry Dashboards 數據可視化

2025-02-10 00:45:00

pairplotheatmaplmplot

2021-04-19 09:00:54

Python批量下載視頻下載器

2020-10-22 08:52:52

Python數據集可視化

2020-09-18 16:37:59

數據可視化技術Python

2015-03-16 14:00:25

大數據誤區大數據可視化大數據

2018-08-09 22:16:35

可視化數據集Groeger
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲bt 欧美bt 日本bt | 中文字幕在线免费 | 日本在线中文 | 欧美一a一片一级一片 | 爱爱免费视频 | 日韩一区二区三区视频 | 日本三级全黄三级a | 中文在线播放 | 日韩视频中文字幕 | 精品欧美色视频网站在线观看 | 欧美一区二区在线播放 | 国产激情在线 | 男人的天堂一级片 | 亚洲欧洲在线观看视频 | 日韩色视频 | 国产黄色大片在线免费观看 | 亚洲欧美自拍偷拍视频 | 亚洲a在线观看 | 91精品国产色综合久久不卡98 | 91精品国产综合久久精品图片 | 成人一级片在线观看 | 91新视频 | av在线二区| 国产一区二区不卡 | 天天看天天摸天天操 | 国产精品国产a级 | 欧美国产精品 | 久久久久www | 久久综合久 | 亚洲视频三区 | 久久性色 | 精品欧美| 日韩无 | 国产偷久久一级精品60部 | 亚洲午夜视频在线观看 | 国产精品一区久久久 | 久久一二| 国产精品美女久久久久aⅴ国产馆 | 国内精品视频免费观看 | 亚洲综合在线视频 | 久久精品手机视频 |