前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >十分钟掌握数据可视化基本操作(上)

十分钟掌握数据可视化基本操作(上)

作者头像
老肥码码码
发布2020-05-13 21:03:44
5520
发布2020-05-13 21:03:44
举报

和之前学习Pandas一样,我们继续以宝可梦数据集作为学习可视化的例子,进而梳理Python绘图的基本操作,主要涉及seaborn以及matplotlib两个可视化库。

上半篇我们主要使用matplotlib来进行柱状图、散点图、饼图折线图等的绘制,下半篇主要使用seaborn来进行箱线图、小提琴图、分簇散点图、热力图等的绘制。本文是上半篇。

首先我们回顾一下整个数据集,列名依次为名字、类型一、类型二、总计值、血量、攻击、防御、特殊攻击、特殊防御、速度、代目、是否为神兽。

柱状图

将宝可梦按照血量的分布来做直方图的统计,可以看到血量40-80是出现频数最高的,宝可梦的血量频数以60-80为中心,向两边递减。

代码语言:javascript
复制
bins=range(0,200,20)
plt.hist(df['HP'],bins,histtype="bar")
plt.xlabel('HP')
plt.ylabel('count')
plt.plot()

我们将前15只宝可梦的特殊攻击和攻击数值一起绘制,并且将其各自的均值绘制成线。

代码语言:javascript
复制
plt.bar(df.index[:15], df['Sp.Atk'][:15],0.2,label="Sp.Atk", color="#87CEFA")
plt.bar(df.index[:15]+0.2, df['Attack'][:15],0.2,label="Attack", color="red")
plt.axhline(df['Attack'][:15].mean(),linestyle='solid',color='red')
plt.axhline(df['Sp.Atk'][:15].mean(),linestyle='dashed',color='#87CEFA')
plt.xlabel("Pokemon index")
plt.ylabel("Attack value")
plt.legend()

散点图

我们知道宝可梦的水系和火系是存在克制关系的(并且这两种宝可梦的种类相对较多),那么这些类型的宝可梦在各项能力数值方面是否存在一定的关系,我们通过散点图的方式来可视化火系与水系防御和攻击属性。

代码语言:javascript
复制
fire=df[(df['Type 1']=='Fire')|(df['Type 2']=='Fire')]
water=df[(df['Type 1']=='Water') | (df['Type 2']=="Water")]
plt.scatter(fire.Attack.head(50),fire.Defense.head(50),color='R',label='Fire',marker="*",s=50)
plt.scatter(water.Attack.head(50),water.Defense.head(50),color='B',label='Water',s=50)

plt.xlabel("Attack")
plt.ylabel("Deffence")
plt.legend()
plt.plot()

可以看到的是火系的宝可梦主要分布在副对角线的下方,其攻击相对较高,但防御相对较低。

饼图

按照宝可梦的类型一来做占比统计,因为种类数过多,这里采用将占比低的种类全部记作‘Others’,这里explode可以将某块分割出来。

代码语言:javascript
复制
labels=list(df['Type1'].value_counts().index[:8])
labels.append("Others")
sizes=list(df['Type1'].value_counts().values[:8])
sizes.append(sum(df['Type1'].value_counts().values[8:]))
explode=(0.1,0,0,0,0,0,0,0,0)

plt.pie(sizes,labels=labels,explode=explode,autopct='%1.1f%%',startangle=90)
# x,y轴刻度设置一致,保证饼图为圆形
plt.axis('equal')
plt.title("Percentage of Different Types of Pokemon")

折线图

我们通过折线图来表现不同代目的宝可梦类型数目变化情况,可以看到水系宝可梦数目逐渐减少,龙系在三代目才首次出现。

代码语言:javascript
复制
df4=df.groupby(['Generation','Type1']).count().reset_index()
df4=df4[['Generation','Type1','Total']].pivot('Generation','Type1','Total')
df4[['Water','Fire','Grass','Dragon','Electric']].plot()
plt.show()
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与数据之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 柱状图
  • 散点图
  • 饼图
  • 折线图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档