在此感謝阿里雲天池平台提供的學習平台,並提供相應的教程供小白們學習資料分析。
seaborn庫
seaborn 是基於 python 且非常受歡迎的圖形視覺化庫,在 matplotlib 的基礎上,進行了更高階的封裝,使得作圖更加方便快捷。即便是沒有什麼基礎的人,也能通過極簡的**,做出具有分析價值而又十分美觀的圖形。
seaborn 可以實現 python 環境下的絕大部分探索性分析的任務,圖形化的表達幫助你對資料進行分析,而且對 python 的其他庫(比如 numpy/pandas/scipy)有很好的支援。
import我們最常用的三大件:pandas, seaborn, matplotlib, 並且讀取資料
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv(
"./pokemon_data.csv"
)
首先我們觀察一下資料的尺寸。
# 計算出每個特徵有多少百分比是缺失的
percent_missing = df.isnull().
sum()*
100/
len(df)
missing_value_df = pd.dataframe(
)# 檢視top10缺失的
missing_value_df.sort_values(by=
'percent_missing'
, ascending=
false
).head(
10)
然後第二個問題就是:這麼多寶可夢,每代分別有幾隻?這裡我們可以通過簡單的 df[『generation』].value_counts() 來得到。但是為了更加直觀的表現出不同代的寶可夢的數量差別,這裡我們可以用pandas自帶的畫圖的功能來繪製乙個柱狀圖:
# 檢視各代口袋妖怪的數量
df['generation'
].value_counts(
).plot.bar(
)
不難發現,寶可夢數量最多的是在第5代,最少的是在第6代。然後我們再來看不同的主屬性的分布。這裡我們可以先做一些簡單的假設,比如蟲屬性的寶可夢種模擬較多因為在劇**現的頻率相當高,而且有很多種進化。
# 檢視每個系口袋妖怪的數量
df['type1'
].value_counts(
).sort_values(ascending=
true
).plot.barh(
)
這裡我們將之前的柱狀圖橫過來了,更便於觀察。這裡我們可以看到,數量最多的寶可夢是水系,然後是普通,然後是草系。蟲系只排在了第四,並沒有和預期中那樣那麼多。
看完了基礎的一些分布,接下來我會想做一些簡單的相關性分析。我們可以通過以下的**生成相關性圖
# 相關性熱力圖分析
plt.subplots(figsize=(20
,15))
ax = plt.axes(
)ax.set_title(
"correlation heatmap"
)corr = df.corr(
)sns.heatmap(corr,
xticklabels=corr.columns.values,
yticklabels=corr.columns.values)
接下來我們從寶可夢在實戰中的角度來分析這組資料。這裡我們只關注六個基礎值:血量,攻擊力,防禦力,特攻,特防,速度。因為只有這六個基礎值決定了乙隻寶可夢的戰鬥力在不考慮派系克制的情況下。
interested =
['hp'
,'attack'
,'defense'
,'sp_attack'
,'sp_defense'
,'speed'
]sns.pairplot(df[interested]
)
這裡我們可以看到大部分都是成正比例的,乙個值的提高往往會拉高另外乙個值。這點我們通過相關性熱力圖也可以看到
# 通過相關性分析heatmap分析五個基礎屬性
plt.subplots(figsize=(10
,8))
ax = plt.axes(
)ax.set_title(
"correlation heatmap"
)corr = df[interested]
.corr(
)sns.heatmap(corr,
xticklabels=corr.columns.values,
yticklabels=corr.columns.values,
annot=
true
, fmt=
"f",cmap=
"ylgnbu"
)
看完這些以後,我們就可以開始計算種族值然後來選取我們的平民神獸了。畢竟不是每個人都能收服代歐奇希斯,超夢,夢幻這種傳說級別的寶可夢。這裡我們可以通過如下方式,先做乙個特徵型別轉化,然後再計算
for c in interested:
df[c]
= df[c]
.astype(
float
)df = df.assign(total_stats = df[interested]
.sum
(axis=1)
)
這樣我們就完成了用 total_stats 這個欄位來儲存種族值這一特徵。我們可以做個柱狀圖視覺化來看看種族值的分布是什麼樣的:
# 種族值分布
total_stats = df.total_stats
plt.hist(total_stats,bins=35)
plt.xlabel(
'total_stats'
)plt.ylabel(
'frequency'
)
Python學習手札(十)寶可夢資料分析
然後import我們最常用的三大件 pandas,seaborn,matplotlib,並且讀取資料 import pandas as pd import seaborn as sns import matplotlib.pyplot as plt df pd.read csv pokemon da...
Python資料分析之pandas資料視覺化
python資料視覺化常用的是matplotlib庫,matplotlib是底層庫,今天學了pandas的資料視覺化,相對於matplotlib庫來說,簡單許多。我們也可以加入grid引數新增格網 pandas繪圖其實是對matplotlib庫繼承,而matplotlib庫預設為ascii編碼,所以...
Python資料分析之pandas讀取資料
1 csv檔案讀取 語法格式 pandas.read csv 檔案路徑 csv檔案內容如下 import pandas as pd file path e pandas study test.csv content pd.read csv file path content.head 預設返回前5行...