数据分析50图(七)|数据分析50图(七) —— 宝可梦能力值杠杆条

前言

A change of perspective is worth 80 IQ points Alan Kay
著名计算机科学家、艾伦·凯说过,换一个角度看问题值80点智商。
因为之前写了一篇宝可梦反应很好,所以我决定以后的原始数据尽量用宝可梦代替啦!本期要画的是Diverging Bars 因为不知道中文怎么翻译,我就按自己的感觉来命名了,我叫他杠杆条感觉挺像那么回事。带着一个问题来开始吧:前18编号的宝可梦,从妙蛙种子到比雕的攻击差距是怎样的?
例10
import pandasas pd # Prepare Data df = pd.read_csv("Pokemon.csv") df = df[:][:18] x = df['Attack'] df['Attack_z'] = (x - x.mean())/x.std() df['colors'] = ['red' if x < 0 else 'green' for x in df['Attack_z']] df.sort_values('Attack_z', inplace=True) df.reset_index(inplace=True)# Draw plot plt.figure(figsize=(14,10), dpi= 80) plt.hlines(y=df.index, xmin=0, xmax=df.Attack_z, color=df.colors, alpha=0.4, linewidth=5)# Decorations plt.gca().set(ylabel='$Model$', xlabel='$Mileage$') plt.yticks(df.index, df.Name, fontsize=12) plt.title('Diverging Bars of Car Mileage', fontdict={'size':20}) plt.grid(linestyle='--', alpha=0.5) plt.show()

解析 看下数据表的样子
# Name Type_1 Type_2 Total HP Attack Defense Sp. Atk Sp. Def Speed Stage Legendary
0 1 Bulbasaur Grass Poison 318 45 49 49 65 65 45 1 False
1 2 Ivysaur Grass Poison 405 60 62 63 80 80 60 2 False
2 3 Venusaur Grass Poison 525 80 82 83 100 100 80 3 False
3 4 Charmander Fire NaN 309 39 52 43 60 50 65 1 False
4 5 Charmeleon Fire NaN 405 58 64 58 80 65 80 2 False
5 6 Charizard Fire Flying 534 78 84 78 109 85 100 3 False
6 7 Squirtle Water NaN 314 44 48 65 50 64 43 1 False
7 8 Wartortle Water NaN 405 59 63 80 65 80 58 2 False
8 9 Blastoise Water NaN 530 79 83 100 85 105 78 3 False
9 10 Caterpie Bug NaN 195 45 30 35 20 20 45 1 False
10 11 Metapod Bug NaN 205 50 20 55 25 25 30 2 False
11 12 Butterfree Bug Flying 395 60 45 50 90 80 70 3 False
12 13 Weedle Bug Poison 195 40 35 30 20 20 50 1 False
13 14 Kakuna Bug Poison 205 45 25 50 25 25 35 2 False
14 15 Beedrill Bug Poison 395 65 90 40 45 80 75 3 False
15 16 Pidgey Normal Flying 251 40 45 40 35 35 56 1 False
16 17 Pidgeotto Normal Flying 349 63 60 55 50 50 71 2 False
17 18 Pidgeot Normal Flying 479 83 80 75 70 70 101 3 False
数据分析50图(七)|数据分析50图(七) —— 宝可梦能力值杠杆条
文章图片
![72.png](https://upload-images.jianshu.io/upload_images/16673634-0a986a742eefa192.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 代码流程
  1. 载入数据,截取前18行,单独取出攻击离这一列
  2. 计算样本标准差 ,和标准化
  3. 增加一列标记,正用绿色,负用红色
  4. 进行排序
  5. 画图
  6. 标注

方法参数解释 复习一下 表格基本操作
df = df[:][:18] # 【:】选择所有列【:18】选择前18行x = df['Attack'] #按列名选取列 df['Attack_z'] = (x - x.mean())/x.std()# 增加一列 列名 Attack_z

(x - x.mean())/x.std() 标准化,减去平均数 除以标准差。不说了,我复习概率统计去了。std() 在pandas 中默认除以(N-1)
sort_values(inplace=True)
排序,inplace:是否替换原来的数据
plt.hlines() 水平线
  • xmin=0, xmax=df.Attack_z ;起点,终点
  • linewidth 线宽度
plt.yticks()
  • 第一个,刻度表示间隔的距离,
  • 第二个,表示刻标,标签的名字,这里覆盖hlines的y标签
图像
数据分析50图(七)|数据分析50图(七) —— 宝可梦能力值杠杆条
文章图片
![72.png](https://upload-images.jianshu.io/upload_images/16673634-6fa15e770d5a1d7c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 应用 从攻击力看,最强的既然不是喷火龙。大针蜂的攻击还是有前途的。铁甲蛹光荣垫底预料之中。用宝可梦的高级进化来和小宝宝状态比较能力显然不公平,我们可以利用 Stage 字段筛选掉不是最高级进化的宝可梦。动手试试吧。还有几个不同的形式比如,带数值线图,点图。不做赘述,感兴趣的同学可以尝试,下期中会稍加说明。
例11 数据分析50图(七)|数据分析50图(七) —— 宝可梦能力值杠杆条
文章图片
72.png 例12 数据分析50图(七)|数据分析50图(七) —— 宝可梦能力值杠杆条
文章图片
73.png 下期预告 标注 —— 强调的你像表达的信息
例程来自:https://www.machinelearningplus.com/plots/matplotlib-histogram-python-examples//
【数据分析50图(七)|数据分析50图(七) —— 宝可梦能力值杠杆条】感谢b站UP "菜菜TsaiTsai" 分享这个博客.

    推荐阅读