pokemon精靈數(shù)據(jù)探索性分析-種類分析

作為童年玩Pokemon長大的孩子跪腹,經(jīng)歷了火焰版娇钱、葉綠版、紅寶石钾麸、藍(lán)寶石船殉、綠寶石鲫趁,五個(gè)版本的GBA游戲洗禮,對(duì)于Pokemon有著深深的情懷利虫,偶然看到有這么一個(gè)數(shù)據(jù)集挨厚,試試看,看看分析出來的東西和我所想是不是一樣的糠惫。雖然這個(gè)分析半夜三更進(jìn)行疫剃,腰酸腿痛的,但是硼讽,爽巢价!

1.數(shù)據(jù)整理和查看

1.導(dǎo)入所需要的package
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns
    import pyecharts
    #echart只是為了一個(gè)比較酷炫的雷達(dá)圖
    %matplotlib notebook
    #notebook模式更方便圖片的導(dǎo)出 
2.讀取數(shù)據(jù)
    data = pd.read_csv('pokemon_list.csv')
    data.head()

居然名字都是英文版的,但是也沒有什么問題,資深玩家無所畏懼壤躲,第一個(gè)肯定是妙蛙種子城菊,不信你百度看看。
還有就是這個(gè)數(shù)據(jù)是721個(gè)柒爵,所以沒有一些新的小精靈和mega升級(jí)版本役电。

  data.info()

每一列的數(shù)據(jù)基本可以有個(gè)了之,分別是Number編號(hào)棉胀、Name名稱、Type_1類別1冀膝、Type_2類別2(蒸汽系就是火焰系加上水系)唁奢、Total數(shù)值總計(jì)、HP血量窝剖、Attack攻擊麻掸、Defense防御、Sp_Atk魔法攻擊赐纱、Sp_Def魔法防御脊奋、Speed速度、Generation幾代疙描、isLegendary是否是神獸诚隙、Color顏色、Pr_male為男性精靈的幾率起胰、Egg_Group_1蛋的第一種類久又、Egg_Group_2蛋的第二種類、hasMegaEvolution有超進(jìn)化(總覺得是數(shù)碼寶貝)效五、Height_m高度以米為單位地消、Weight_kg重量以公斤為單位、Catch_Rate捕獲幾率畏妖、Body_Style身體形態(tài)(百變怪最牛逼)

基本看出只有350個(gè)有類別2的屬性脉执,大部分為單一屬性精靈,191個(gè)有第二種類的蛋戒劫,對(duì)于兩種屬性的缺失值半夷,都是統(tǒng)一屬性的多分類,可用第一分類作為填充谱仪。

    #缺失值處理策略為前一列種類填充后一列
    data['Type_2'] = data['Type_2'].fillna(value = data['Type_1'])
    data['Egg_Group_2'] = data['Egg_Group_2'].fillna(value = data['Egg_Group_1'])
3.數(shù)據(jù)描述性統(tǒng)計(jì)列表

Total一列75%線在499玻熙,而最大值為720,高數(shù)值一類應(yīng)該是神獸(玩過的都知道疯攒,神獸特么一張嘴一個(gè)島就沒了嗦随。。。)數(shù)值包括血量枚尼、攻擊等贴浙,標(biāo)準(zhǔn)差基本為28左右,這一點(diǎn)還是很良心署恍,讓玩家有良好的從小怪到大怪有一個(gè)階梯形的概念崎溃。其他的都是單獨(dú)特性,在這里要說一下捕獲率Catch_Rate盯质,口袋妖怪的設(shè)定是從血量多到血量少袁串,捕獲率會(huì)提升,最小為3呼巷,最大為255囱修,應(yīng)該是從2的一次方+1,一直到2的八次方-1王悍。不然通俗理解為255%破镰,丟個(gè)球,捕獲率抓到兩個(gè)半多压储?鲜漩!兩個(gè)我還能理解,半個(gè)多是什么意思集惋?孕似!買一贈(zèng)一還送個(gè)小的?芋膘!情侶入住鳞青,房租減半?为朋!一家人整整齊齊臂拓?!

2.數(shù)據(jù)分析

2.1種類分析

    Type_pd=pd.concat([data.Type_1,data.Type_2],axis=1)
   
    #計(jì)算出第一種類的數(shù)量加上第二種類數(shù)量
    Type_count = data.Type_2.value_counts() + data.Type_1.value_counts()
    Type_count.sort_values(ascending = False)

由于失誤习寸,第一次只計(jì)算第一類別胶惰,發(fā)現(xiàn)飛行類的只有3個(gè),但是鳥類中最愛的比比鳥居然不是飛行類霞溪,進(jìn)行單獨(dú)查看后孵滞,發(fā)現(xiàn)比比鳥第一類別是normal,第二類別就是飛行鸯匹,所以將兩者進(jìn)行累加坊饶,能夠看出來,水生類最多殴蓬,幽靈類最少匿级。畢竟幽靈類的蟋滴,沒有道具無法進(jìn)行捕獲。

2.2可視化分析

    #Series序列中添加0痘绎,并對(duì)指作排序處理津函,便于繪圖
    Type_count = data.Type_2.value_counts() + data.Type_1.value_counts()
    Type_count = pd.Series([0]).append(Type_count).sort_values()

    #畫布大小設(shè)置
    plt.figure(figsize=(14,5))
    #類別設(shè)置
    cata = [0,'Ghost','Steel','Ice','Dragon','Fairy',
       'Dark','Fighting','Rock','Electric','Ground','Poison',
        'Bug','Fire','Flying','Psychic','Grass','Normal','Water']
    #坐標(biāo)軸y值由Series中的值作為代替
    y_pos = Type_count
    #設(shè)置橫坐標(biāo)和縱坐標(biāo),顏色孤页,透明度    
    plt.bar(cata,y_pos,facecolor = 'yellowgreen',alpha=0.4)
    #設(shè)置橫坐標(biāo)類別進(jìn)行映射
    plt.xticks(cata)  
    #x軸名稱
    plt.xlabel('Type')
    #x的橫向數(shù)量  
    plt.xlim(0,18) 
    #總體圖形名稱 
    plt.title('the num of Type')
    #進(jìn)行展示  
    plt.show()  
    plt.figure(figsize=(10,10))
    #標(biāo)簽名稱
    cata = ['Ghost','Steel','Ice','Dragon','Fairy',
       'Dark','Fighting','Rock','Electric','Ground','Poison',
        'Bug','Fire','Flying','Psychic','Grass','Normal','Water']
    #分塊數(shù)據(jù)
    sizes = Type_count.drop(0)
    #顏色設(shè)置
    colors = [ '#ff8100', '#057d9f', '#00bd39', 'yellow', 'lightgreen', 'orange', '#64de89']
    #各個(gè)色塊的偏移
    explode = (0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0.1) 
    
    #畫餅圖
    plt.pie(sizes, explode=explode, labels=cata, colors=colors,
        autopct='%1.1f%%', shadow=False, startangle=90)
    #呈現(xiàn)正圓形的圖形
    plt.axis('equal')
    #標(biāo)題
    plt.title("Percentage of Different Types of Pokemon")
    plt.show()

可以看出整體尔苦,水系精靈最多,其次是Normal正常系精靈行施,也符合游戲大陸海洋分布的設(shè)定允坚。

2.2.多屬性結(jié)合分析
  • 種類結(jié)合性別分析
  • 種類結(jié)合數(shù)值分析

2.2.1結(jié)合性別分析
因?yàn)閷?duì)于有性別的精靈分析類別價(jià)值不大,所以故對(duì)于無性別精靈進(jìn)行分析

    nogender_num = data[data['hasGender']==False].groupby('Type_1',as_index = False).Number.count().s ort_values(by='Number',ascending = False)

對(duì)于類別Type_1進(jìn)行分類(再次不對(duì)第二類別做分析蛾号,因?yàn)榈诙悇e往往是因?yàn)榫`在進(jìn)化和相應(yīng)的環(huán)境中屋讶,才會(huì)出現(xiàn)第二類別。)


    #進(jìn)行可視化圖表建立

    #修改列名便于觀察
    nogender_num.rename(columns={'Type_1':'Type'},inplace=True)
    #設(shè)置畫布
    plt.figure(figsize=(12,8))
    #
    sns.set(font_scale=1.2,color_codes='#df1234')
    sns.barplot(x='Type',y='Number',data = nogender_num)

可以看出Steel鋼鐵類和Psychic超能力類高于其他類別须教,主要是鋼鐵類和超能力類的設(shè)定,鋼鐵類趨向于一種分化和類似于修煉的方式來進(jìn)行斩芭,而超能力就像他的設(shè)定一般轻腺,不詳。

2.2.2結(jié)合數(shù)值分析

    #調(diào)用seaborn畫箱線圖分析數(shù)值total和種類的關(guān)系
    #map映射種類和數(shù)值
    type_to_dict = { 'Grass': 0, 'Fire': 1, 'Water': 2, 'Bug': 3, 'Normal': 4, 
                    'Poison': 5, 'Electric': 6, 'Ground': 7, 'Fairy': 8, 'Fighting': 9,
                    'Psychic' : 10, 'Rock': 11, 'Ghost':12, 'Ice' : 13, 'Dragon': 14, 
                    'Dark': 15, 'Steel': 16, 'Flying': 17} 
        
    data['Int_Type1'] = data['Type_1'].map(type_to_dict).astype(int)

    #設(shè)置相關(guān)的sns參數(shù)
    sns.set(style="ticks")
    fig, ax = plt.subplots(figsize=(8,6))
    sns.boxplot(ax = ax, x="Int_Type1", y="Total",data=data, palette="PRGn")
    sns.despine(offset=10, trim=True)
    plt.show()

可以看出平均水平普遍較高的是龍類(大家都是龍圖騰的國度)划乖。

    #進(jìn)行分類別計(jì)算各個(gè)數(shù)值的均值
    sum_abili = data[['HP','Attack','Defense','Sp_Atk','Sp_Def','Speed']].groupby(data['Type_1'],as_index=True).mean().round(2)
    #use
    colorlist = ['#313695', '#abd9e9',  '#ffffbf',
                '#fdae61','#d73027', '#a50026',
            '#314693', '#3bd9e9',  '#f23fbf',
                '#fda231','#d73a27', '#f51026',
            '#312d93', '#3bd9ea',  '#f23abf',
                '#fda2f1','#df1a27', '#a50f26',]
    c_schemas= [{"name": "生命值/HP", "min": 0},
           {"name": "攻擊值/Attack", "min": 0},
           {"name": "防御值/Defense", "min": 0},
           {"name": "特殊攻擊值/Sp.Atk", "min":0},
           {"name": "特殊防御值/Sp.Def", "min":0},
           {"name": "速度/Speed", "min":0}]

    radar = Radar('不同次代小精靈屬性均值情況',width=800 ,height=600,
              title_pos='center')
    radar.config(c_schema=c_schemas, shape='polygon')
    for i in range(18):
        radar.add(sum_abili.index[i], [list(sum_abili.iloc[i,:])], item_color=colorlist[i],symbol=None,
             legend_pos='0%',legend_orient='vertical')
    radar

可以看出贬养,總體類別中,攻擊值和生命值的差別不大琴庵,畢竟在寵物小精靈中误算,更多的是釋放技能,而不是單純的撞擊迷殿,速度的差異性最大儿礼,飛行系因?yàn)樘厥獾膶傩缘乃俣茸羁欤笫请娤岛妄埾登焖拢軌蜥尫烹姽饣鹗寄艿囊簿瓦@幾個(gè)類別蚊夫。

   #單獨(dú)將Type_1,各數(shù)值,Generation合成一個(gè)表
   data_ex = data[['Type_1','HP','Attack','Defense','Sp_Atk','Sp_Def','Speed','Generation']]

查看數(shù)值變量按照pairs組合后的分布特征

   sns.pairplot(data_ex,vars=['HP','Attack','Defense','Sp_Atk','Sp_Def','Speed'],hue = 'Type_1')

查看每個(gè)數(shù)值型變量的分布特征

    #單獨(dú)抽出數(shù)值做成feature表
    feature = data_ex.columns[1:7]
    plt.figure(1,figsize=(18,18))
    #設(shè)置x軸線風(fēng)格
    sns.axes_style('ticks')
    for i in range(len(feature)):
        tmp = data[feature[i]]
        #畫出畫布
        plt.subplot(3,3,i+1)
        #在畫布中畫出柱狀圖和密度分布線
        sns.distplot(tmp)
    plt.show()

數(shù)值相關(guān)性分析

    #相關(guān)性分析
    data[['Total','HP','Attack','Defense','Sp_Atk','Sp_Def','Speed']].corr()
    #熱力圖繪制
    plt.figure(figsize=(10,10))
    plt.title('num_heatmap')
    sns.heatmap(corr,square=True,linewidths=.5,cmap="YlGnBu")
    plt.show()
  • 嘗試聚類和精靈特征來進(jìn)行分類
  • 嘗試構(gòu)建新的特征

未完待續(xù)懦尝。知纷。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末陵霉,一起剝皮案震驚了整個(gè)濱河市琅轧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌踊挠,老刑警劉巖乍桂,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡模蜡,警方通過查閱死者的電腦和手機(jī)漠趁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忍疾,“玉大人闯传,你說我怎么就攤上這事÷倍剩” “怎么了甥绿?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長则披。 經(jīng)常有香客問我共缕,道長,這世上最難降的妖魔是什么士复? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任图谷,我火速辦了婚禮,結(jié)果婚禮上阱洪,老公的妹妹穿的比我還像新娘便贵。我一直安慰自己,他們只是感情好冗荸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布承璃。 她就那樣靜靜地躺著,像睡著了一般蚌本。 火紅的嫁衣襯著肌膚如雪盔粹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天程癌,我揣著相機(jī)與錄音舷嗡,去河邊找鬼。 笑死席楚,一個(gè)胖子當(dāng)著我的面吹牛咬崔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烦秩,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼垮斯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了只祠?” 一聲冷哼從身側(cè)響起兜蠕,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抛寝,沒想到半個(gè)月后熊杨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體曙旭,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年晶府,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了桂躏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡川陆,死狀恐怖剂习,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情较沪,我是刑警寧澤鳞绕,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站尸曼,受9級(jí)特大地震影響们何,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜控轿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一冤竹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧茬射,春花似錦贴见、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镣衡。三九已至霜定,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間廊鸥,已是汗流浹背望浩。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惰说,地道東北人磨德。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像吆视,于是被迫代替她去往敵國和親典挑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,167評(píng)論 25 707
  • ----------------------- 頁面 1----------------------- 2013 ...
    長春傳齊3閱讀 4,614評(píng)論 0 1
  • 上一段時(shí)間單位的同事通過自己的努力去了更好的單位,大家也為之高興授滓,就有了各種送行宴琳水。 送行宴上是一個(gè)人生...
    小小星火閱讀 190評(píng)論 0 0
  • 公司最近因?yàn)檐浖霈F(xiàn)的性能問題肆糕,在比較各種php環(huán)境之間的差異,下面我就公司目前已經(jīng)試過的搭建php環(huán)境簡單記錄下...
    其實(shí)都沒有_8881閱讀 271評(píng)論 0 1
  • 一個(gè)只有程序員才能立刻理解的笑話:「中國的法律是txt格式的在孝,西方的法律是exe格式的诚啃。」當(dāng)然私沮,這個(gè)笑話相當(dāng)片面(...
    莊表偉閱讀 1,727評(píng)論 3 18