这篇文章主要是将前几篇关於matplotlib的概念
实际应用在资料上
画出各种的图表
会搭配不同的参数调整表现出来的图
文章分成4个部分
分别是
这里延续前面pandas练习过的资料库
从kaggle上找到的关於学生成绩的纪录
先引入所有要使用到的套件pandas
, numpy
,matplotlib
把这笔资料列印部分出来
看看资料的架构长怎样
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_csv("StudentsPerformance.csv")
df.head()
先来看看这笔资料的整体资讯
df.info()
可以看到整笔资料的所有栏位、是否有缺失值跟资料的物件型态
资料里有1000笔纪录
现在若是想要知道不同组别占整体资料的比例
最适用的图形是使用圆饼图
先将资料利用分组聚合函数.groupby()
分组
并且利用.count()
计算各组的数量
group = df.groupby("race/ethnicity").count() r
接下来将想要计算的类别跟数值分别用list装起来
category = list(group.index) #设置类别的list
amounts = list(group["gender"]) #设置各类别数量的list
print(category, amounts)
# ['group A', 'group B', 'group C', 'group D', 'group E'] [89, 190, 319, 262, 140]
最後绘制圆饼图,并且利用参数autopct="%0.2f%%"
设定出现在图上的比例数据
也使用.title()
设定图表的标题
plt.pie(amounts, labels=category,autopct="%0.2f%%")
plt.title("portion of groups")
图表就顺利做出来了!
可以清楚地看到各组所占的比例
使用同样的方法制作不同性别的占比圆饼图
gender = df.groupby("gender").count() # 按照性别分组,并计算各组数量
type_of_gender = list(gender.index) # 将性别的名称放到list
numbers_of_gender = list(gender["lunch"]) # 将各组的数量放进去list
plt.pie(numbers_of_gender, labels=type_of_gender,autopct="%0.2f%%") #作图
plt.title("portion of gender") # 设置标题
在折线图的应用上
适合用在同类的数据变化
所以这里我选择'race/ethnicity'里面的group b作为比较的依据
首先先将属於group b类型的资料打包成独立的dataframe
group_b = df[df['race/ethnicity']=="group B"].dropna()
print(group_b)
可以看到整理过後的资料只剩group B的资料
只剩下190笔数据
但是标签还是依照原本1000笔的排序
现在想替在group B的人重新标index
先重设index,利用default产生从0-189的标签
group_b = group_b.reset_index()
group_b
再删掉右移一栏的index栏位
del group_b["index"]
group_b
可以看到资料重新被整理好
接下来就可以利用group B的学生成绩分布制作折线图
先看数学成绩的折线图
group_b.plot(y=["math score"],figsize=(25,5))
可以看到第1位到第190位学生的数学成绩分布
现在可以在同一张图上叠加reading的成绩分布
group_b.plot(y=["math score","reading score"],figsize=(25,5))
这几篇文章大致上介绍了matplotlib这个套件的操作
加上实际资料的操作
已经对将资料利用图表视觉化有了一定程度的了解
明天会进行更多的绘图练习
利用调整参数进行更多元的图形展现方式
>>: EP27 - 建立 VPN 连线,直接连线到 AWS
写在前面 placeholder for d10 placeholder for d10 place...
一日客语:中文:太阳 客语:ngidˋ teuˇ(日头) 在学建构函式时很常看到this,建构函式内...
DBABootcamp 该不该压缩资料库是 DBA 常见的问题。以记录档 (LDF, log fil...
上一篇的ProgressBar练习是以Horizont的方式 这篇是以环形转圈圈的ProgressB...
前一天中我们讲解了如何利用Vue CLI快速建立专案,再进入到专案开发之前,还是有一些知识需要恶补的...