介绍
数据时代的到来刷新了人们探索未知的方式,从基础能源建设到航天航空工程。在关都地区真新镇大木研究所一直孜孜不倦对精灵宝可梦进行研究的大木博士也不例外,在剧中我们就常常可以看到大木博士制作的精灵图鉴一直在给探险家们提供宝可梦的简单分析,包括宝可梦的身高,体重,特性等等。
与其他探险家旅游挑战道馆的方式不同,我决定通过使用数据分析的方式来帮助我更好的了解宝可梦这种神奇的生物,然后再选择最经济实惠,简单好抓的宝可梦来挑战联盟。通过使用搜索引擎,我找到了一份包含着从第一代到第七代共801只宝可梦的数据集。
探索过程
** 数据集下载**
!wget -O pokemon_data.csv https://pai-public-data.oss-cn-beijing.aliyuncs.com/pokemon/pokemon.csv
使用三大件package:pandas, seaborn, matplotlib,并读取数据
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv("./pokemon_data.csv")
使用df.head()
查看整个数据表,结果显示前5组数据,41列属性。同样使用df.shape
可以得到数据表的尺寸,共801行,41列。使用df.info()
可以了解所有column的详细信息。
df.head()
'''
abilities against_bug against_dark against_dragon against_electric against_fairy against_fight against_fire against_flying against_ghost ... percentage_male pokedex_number sp_attack sp_defense speed type1 type2 weight_kg generation is_legendary
0 ['Overgrow', 'Chlorophyll'] 1.0 1.0 1.0 0.5 0.5 0.5 2.0 2.0 1.0 ... 88.1 1 65 65 45 grass poison 6.9 1 0
1 ['Overgrow', 'Chlorophyll'] 1.0 1.0 1.0 0.5 0.5 0.5 2.0 2.0 1.0 ... 88.1 2 80 80 60 grass poison 13.0 1 0
2 ['Overgrow', 'Chlorophyll'] 1.0 1.0 1.0 0.5 0.5 0.5 2.0 2.0 1.0 ... 88.1 3 122 120 80 grass poison 100.0 1 0
3 ['Blaze', 'Solar Power'] 0.5 1.0 1.0 1.0 0.5 1.0 0.5 1.0 1.0 ... 88.1 4 60 50 65 fire NaN 8.5 1 0
4 ['Blaze', 'Solar Power'] 0.5 1.0 1.0 1.0 0.5 1.0 0.5 1.0 1.0 ... 88.1 5 80 65 80 fire NaN 19.0 1 0
5 rows × 41 columns
'''
df.shape
#(801,41)
第一个问题:这么多特征,是否会有数据缺失呢?这里我们可以通过如下代码来观察每个特征的缺失情况:
# 计算出每个特征有多少百分比是缺失的
percent_missing = df.isnull().sum() * 100 / len(df)
missing_value_df = pd.DataFrame({
'column_name': df.columns,
'percent_missing': percent_missing
})
# 查看Top10缺失的
missing_value_df.sort_values(by='percent_missing', ascending=False).head