日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

华为python673集_[译] 使用 Python 的 Pandas 和 Seaborn 框架从 Kaggle 数据集中提取信息...

發(fā)布時間:2024/1/8 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 华为python673集_[译] 使用 Python 的 Pandas 和 Seaborn 框架从 Kaggle 数据集中提取信息... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

好奇心和直覺是數(shù)據(jù)科學(xué)家最強大的兩個工具。第三個可能就是 Pandas 了。

我在 上一篇文章 中,展示了如何了解一個數(shù)據(jù)集的完整性,并繪制一些變量,以及查看隨時間變化的趨勢和傾向。

為此,我在 Jupyter Notebook 上使用了 Python 的 Pandas 框架 進行數(shù)據(jù)分析和處理,并使用Seaborn 框架進行可視化。

和本文一樣,前一篇文章中我們使用了 Kaggle 上 120 年奧運會數(shù)據(jù)集,研究了女性運動員隨時間推進的參與情況、運動員的體重和身高分布以及其它一些變量的分析,但沒有使用到每一位運動員參與運動項目的數(shù)據(jù)。

這一次,我們將關(guān)注數(shù)據(jù)集的體育運動欄數(shù)據(jù),并獲取一些關(guān)于它的信息。

我能想到的幾個問題是:

哪項運動更有利于身材魁梧的人?個子高的人呢?

哪些運動項目較新,哪些較舊?有沒有什么運動項目是由于失去了奧運會的青睞而停止了比賽呢?

有沒有在某些運動項目中,總是同樣的隊伍獲勝嗎?那最多樣化的運動呢,獲勝者是不是來自于不同的地區(qū)?

與前面一樣,我們分析中使用的項目放在 這個 Github 項目 中,你可以對其進行 fork(復(fù)制),并添加自己的分析和理解。

讓我們開始吧!

體重與身材分析

在我們的第一個分析中,我們想要分析看看哪些運動項目擁有最重和最高的運動員,哪些運動項目擁有最輕或最矮的運動員。

正如我們在前一篇文章中看到的,身高和體重都很大程度上取決于性別,數(shù)據(jù)集中男性運動員的數(shù)據(jù)比女性運動員的數(shù)據(jù)要多。所以我們會對男性做分析,但同樣的代碼對任何一種性別都是適用的,只需要切換性別過濾器即可。

male_df = df[df.Sex=='M']

sport_weight_height_metrics = male_df.groupby(['Sport'])['Weight','Height'].agg(

['min','max','mean'])

sport_weight_height_metrics.Weight.dropna().sort_values('mean', ascending=False)[:5]

復(fù)制代碼

正如你所看見的那樣,如果我按運動進行分組,就可以計算每個運動運動員體重和身高的最小、最大和平均值。

然后我查看了排名前五的擁有體重最重運動員的運動,發(fā)現(xiàn)(以公斤為單位):

Sport min max average

Tug-Of-War 75.0 118.0 95.61

Basketball 59.0 156.0 91.68

Rugby Sevens 65.0 113.0 91.00

Bobsleigh 55.0 145.0 90.38

Beach Volleyball 62.0 110.0 89.51

復(fù)制代碼

不是很意外對吧?拔河運動員、籃球運動員和橄欖球運動員體重都很重。有趣的是,籃球和橄欖球運動員的體重變化很大,從 59 公斤到 156 公斤,而大多數(shù)拔河運動員的體重都超過了 80 公斤。

然后我畫出了每種運動的平均體重圖,發(fā)現(xiàn)它服從一個很好的正態(tài)分布:

sns.distplot(sport_weight_height_metrics.Weight.dropna()['mean'])

復(fù)制代碼

運動員的平均體重是服從正態(tài)分布的。

運動員的身高具有相似的正態(tài)分布,但其方差很小,高度集中在均值附近:

運動員的身高是呈正態(tài)分布的。

接下來,我開始繪制所有的個體平均值,在有序的散點圖中,看看是否有異常值出現(xiàn)。

means = list(sport_weight_height_metrics.Weight.dropna()['mean'])

sports = list(sport_weight_height_metrics.Weight.dropna().index)

plot_data = sorted(zip(sports, means), key = lambda x:x[1])

plot_data_dict = {

'x' : [i for i, _ in enumerate(plot_data)],

'y' : [v[1] for i, v in enumerate(plot_data)],

'group' : [v[0] for i, v in enumerate(plot_data)]

}

sns.scatterplot(data = plot_data_dict, x = 'x' , y = 'y')

復(fù)制代碼

每個奧林匹克運動員的平均身高分布。

實際上,擁有最重運動員的運動相對于圖表的其余部分來說是非常離群的,而擁有最輕運動員的運動也是如此。如果我們在觀察一下身高,盡管方差明顯更小,但圖中顯示的“離群值”和接近均值的人之間的差異更大,更明顯的是大多數(shù)人并沒有偏離均值太多。

每項運動的運動員平均體重。

對于運動員體重最輕的運動,可以使用之前生成的變量 plot_data 來獲取結(jié)果。

print('lightest:')

for sport,weight in plot_data[:5]:

print(sport + ': ' + str(weight))

print('\nheaviest:')

for sport,weight in plot_data[-5:]:

print(sport + ': ' + str(weight))

復(fù)制代碼

結(jié)果(省略了最重的,因為我們已經(jīng)在上面看過了)如下:

lightest:

Gymnastics: 63.3436047592

Ski Jumping: 65.2458805355

Boxing: 65.2962797951

Trampolining: 65.8378378378

Nordic Combined: 66.9095595127

復(fù)制代碼

體操運動員中甚至是男性運動員,都是迄今為止體重最輕的運動員!緊隨其后的是跳臺滑雪、拳擊(這個讓我有點吃驚)和蹦床,這其實很合理。

如果我們尋找身高最高和最矮的運動員,結(jié)果就不會那么令人驚訝了。我猜我們都期望與想象中同樣的運動能夠在榜首,不出所料,確實如此。至少我們現(xiàn)在可以說這不是刻板印象。

shortest (cm):

Gymnastics: 167.644438396

Weightlifting: 169.153061224

Trampolining: 171.368421053

Diving: 171.555352242

Wrestling: 172.870686236

復(fù)制代碼tallest (cm):

Rowing: 186.882697947

Handball: 188.778373113

Volleyball: 193.265659955

Beach Volleyball: 193.290909091

Basketball: 194.872623574

復(fù)制代碼

我們可以看到體操運動員一般是很輕、很矮的。但是,身高排名中的一些運動項目并沒有出現(xiàn)在體重排名中。我想知道每種運動都有著什么樣的“體型”(即重量 / 高度)?

mean_heights = sport_weight_height_metrics.Height.dropna()['mean']

mean_weights = sport_weight_height_metrics.Weight.dropna()['mean']

avg_build = mean_weights/mean_heights

avg_build.sort_values(ascending = True)

builds = list(avg_build.sort_values(ascending = True))

plot_dict = {'x':[i for i,_ in enumerate(builds)],'y':builds}

sns.lineplot(data=plot_dict, x='x', y='y')

復(fù)制代碼

這幅圖看上去是線性的,直到我們到達大多數(shù)離群點落下來的頂端:

奧林匹克運動員的體型(重量/高度)分布

以下是具有體型最小值和最大值的運動項目:

Smallest Build (Kg/centimeters)

Alpine Skiing 0.441989

Archery 0.431801

Art Competitions 0.430488

Athletics 0.410746

Badminton 0.413997

Heaviest Build

Tug-Of-War 0.523977

Rugby Sevens 0.497754

Bobsleigh 0.496656

Weightlifting 0.474433

Handball 0.473507

復(fù)制代碼

橄欖球和拔河比賽是具有最大值體型的運動項目。這次高山滑雪的運動員則是擁有最小值體型中的一個,緊隨其后的是射箭和藝術(shù)比賽(這個是我剛知道的一項奧林匹克運動,需要進一步研究)。

隨時間推移的體育運動變化

現(xiàn)在我們已經(jīng)做了所有能想到的關(guān)于這三列的有趣的事情,我想開始觀察一下時間變量。特別是今年。我想看看奧運會是否引進了新的運動項目,什么時候引進。同樣也要觀察一下被廢棄的體育項目。

我們想要看一下一個東西第一次是什么時候出現(xiàn)的,下面這段代碼一般會很有用,特別是當(dāng)我們想看一下某個變量的異常增長時。

from collections import Counter

sport_min_year = male_df.groupby('Sport').Year.agg(['min','max'])['min'].sort_values('index')

year_count = Counter(sport_min_year)

year = list(year_count.keys())

new_sports = list(year_count.values())

data = {'x':year, 'y':new_sports}

sns.scatterplot(data=data, x = 'x', y='y')

復(fù)制代碼

結(jié)果

這張圖表向我們展示了每年有多少體育項目首次在奧運會上進行。或者,換句話說,每年有多少運動被引進:

Quantity of Sports introduced each year.

所以盡管在 1910 年之前就已經(jīng)有很多運動項目,并且大多數(shù)的運動項目是在 1920 年之前引進的,但還是有很多新引進的。看著這些數(shù)據(jù),我們就會發(fā)現(xiàn) 1936 年引進了很多新的運動項目,之后的每年引進的新項目就很少了(少于 5 個運動項目)

從 1936 年到 1960 年的這段時間里沒有什么新的運動項目引進,直到冬季兩項運動項目的出現(xiàn),之后就定期地增加新項目:

Sport introduced

Biathlon 1960

Luge 1964

Volleyball 1964

Judo 1964

Table Tennis 1988

Baseball 1992

Short Track Speed Skating 1992

Badminton 1992

Freestyle Skiing 1992

Beach Volleyball 1996

Snowboarding 1998

Taekwondo 2000

Trampolining 2000

Triathlon 2000

Rugby Sevens 2016

復(fù)制代碼

對廢棄運動(最大的年份并不在最近)進行的類比分析,結(jié)果顯示這張運動列表中,其中大部分我從未聽說過(盡管這絕不是衡量一項運動是否是流行的好指標(biāo)!)

Basque Pelota 1900

Croquet 1900

Cricket 1900

Roque 1904

Jeu De Paume 1908

Racquets 1908

Motorboating 1908

Lacrosse 1908

Tug-Of-War 1920

Rugby 1924

Military Ski Patrol 1924

Polo 1936

Aeronautics 1936

Alpinism 1936

Art Competitions 1948

復(fù)制代碼

我們看到藝術(shù)比賽在 1948 年被取消,馬球自 1936 年以來就沒有在奧運會上出現(xiàn)過,飛行比賽也是如此。如果有人知道飛行比賽到底是什么,請告知我。我可以想到是在飛機上進行,但不知道比賽會是什么樣子。也許是飛機飛行比賽?讓它們再回到賽場上吧!

今天就到這里,伙計們!我希望你能喜歡這個教程,或許你已經(jīng)得到了一個新的有趣的想法,可以在你的下次家庭晚餐中聊一聊。

和以往一樣,你可以隨意從該分析中 fork(復(fù)制)代碼并添加自己的觀點。后續(xù)工作我正在考慮使用基于運動、體重和身高列的數(shù)據(jù)來 訓(xùn)練一個小型的機器學(xué)習(xí)模型來預(yù)測運動員的性別,告訴我你會用什么模型呢?

如果你覺得本文有什么地方表述不正確,或者有一些簡單錯誤,請讓我知道,讓我們共同學(xué)習(xí)!

繼續(xù)訪問網(wǎng)站以獲取更多數(shù)據(jù)分析文章、Python 技術(shù)教程和其它數(shù)據(jù)相關(guān)內(nèi)容。如果你喜歡這篇文章,請在 twitter 上與你的朋友分享。

可以在 Twitter 或者 Medium 上關(guān)注我獲取更多新內(nèi)容。

如果發(fā)現(xiàn)譯文存在錯誤或其他需要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改并 PR,也可獲得相應(yīng)獎勵積分。文章開頭的 本文永久鏈接 即為本文在 GitHub 上的 MarkDown 鏈接。

掘金翻譯計劃 是一個翻譯優(yōu)質(zhì)互聯(lián)網(wǎng)技術(shù)文章的社區(qū),文章來源為 掘金 上的英文分享文章。內(nèi)容覆蓋 Android、iOS、前端、后端、區(qū)塊鏈、產(chǎn)品、設(shè)計、人工智能等領(lǐng)域,想要查看更多優(yōu)質(zhì)譯文請持續(xù)關(guān)注 掘金翻譯計劃、官方微博、知乎專欄。

總結(jié)

以上是生活随笔為你收集整理的华为python673集_[译] 使用 Python 的 Pandas 和 Seaborn 框架从 Kaggle 数据集中提取信息...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。