往期数据分析笔记
【笔记】python数据分析——numpy初识1
【笔记】python数据分析——numpy初识2
【笔记】python数据分析——变换与编程中的轴
【笔记】python数据分析——numpy随机数函数
【笔记】python数据分析——numpy数组索引及切片
【笔记】python数据分析——元素级运算及通用函数
【笔记】python数据分析——条件逻辑运算
【笔记】python数据分析——统计学运算
【笔记】python数据分析——矩阵相乘
【笔记】python数据分析——应用案例之图像负片
【笔记】python数据分析——pandas初识
【笔记】python数据分析——pandas之增删查改
【笔记】python数据分析——pandas可视化之线型图
【笔记】python数据分析——pandas可视化之柱状图
【笔记】python数据分析——pandas可视化之直方图和密度图
【笔记】python数据分析——pandas可视化之散点图
可视化案例
关于数据集
我们在做数据分析的时候,数据集要么是别人给的现成数据,要么就是我们自己使用爬虫爬取的,而今天的案例就是现成的数据集,我今天使用的是数据集中的mpg文件,我把数据集发出来,大家可以用别的数据集练习一下
数据集链接:https://pan.baidu.com/s/1S_l6QFUhyuabBBuoEM8ufQ
提取码:fphq
首先我们先看看数据
上面就是数据图,因为我本人英文水平有限,所以我也是用了用百度才查全上面的列名是什么意思
mpg:油耗
cylinders:气缸
displacement:排水量
horsepower:马力
weight:重量
acceleration:加速度
model_year:车型年款
origin:汽车来源国家
name:车主名字
导包
import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
依旧是常用的两个包,今天因为有数据,所以不需要使用numpy来构造数据,所以这里我就没有导入
读取数据
mpgs = pd.read_csv('./mpg.csv')
print(mpgs)
运行图:
这样就将数据都读取出来了
统计学运算(describe方法)
print(mpgs.describe())
运行图:
这个方法的作用是计算全为数字列的统计学计算,包括总数,平均值,最大值,最小值,百分比
重点:只对全都为数字的列进行
是否缺失值(info方法)
print(mpgs.info())
运行图:
这个是查看每一列是否有缺失值,比如我们在读取文件的最后一列发现写着398 rows X 9 columns,也就是说有398行,9列
我们通过info就可以找到哪个里面缺少数据
运行图中可以看到,horsepower这一列只有392个值,我们通过观察文件,就可以看到确实少了几个
绘制一个散点图
我们先前情回顾一下,散点图有两点我们要注意
第一:kind参数值为scatter
第二:必须要指定X轴的值和Y轴的值
mpgs.plot(kind = 'scatter',x = 'horsepower',y = 'weight')
plt.show()
运行图:
我们这个图是汽车的马力和重量之间的关系,我们通过散点图就可以看出来,这两个之间是呈现一个上升的趋势的
绘制一个折线图
我们再来回顾一下折线图,折线图是我们学的第一个pandas可视化的图像,它里面不放kind参数
cylinders_data = mpgs[mpgs['model_year'] == 70]['cylinders'].mean()
print(cylinders_data)
horsepower_data = mpgs[mpgs['model_year'] ==70]['horsepower'].mean()
print(horsepower_data)
cylinders_horsepower = Series([cylinders_data,horsepower_data],index = ['cylinders_data','horsepower'])
cylinders_horsepower.plot(color = 'red')
plt.show()
运行图:
接下来我分解一下mpgs[mpgs['model_year'] ==70]['horsepower'].mean()
这行代码
mpgs['model_year'] ==70
这句的意思就是查找model_year中数值为70的值,这句返回的是布尔值,也就是为70的行会为TRUE
mpgs[mpgs['model_year'] ==70]['horsepower']
这句的意思是通过上局筛选出来的TRUE值,取出这些为TRUE的行中的horsepower的值
mean()
这个的意思就是取出这些值的平均值
绘制一个柱状图
柱状图有横线和纵向,横向的参数值是barh,纵向的函数值是bar
mpgs['displacement'] = mpgs['displacement']/(mpgs['displacement'] + mpgs['weight'])
mpgs['displacement'].plot(kind = 'bar')
plt.show()
运行图:
这个本来我是想画出displacement对于displacement和weight的百分比的,但是最后画出来的结果却是这样,这个就证明我们选的图像出了问题
换为直方图展示
直方图很例外,它使用的不是plot()方法,而是使用hist()方法
mpgs['displacement'] = mpgs['displacement']/(mpgs['displacement'] + mpgs['weight'])
mpgs.hist()
plt.show()
运行图:
我们发现虽然图像是正常了,但是它将mpgs所有的值的图都显示了,但是我只想要displacement的图该怎么办呢,其实也很简单
mpgs['displacement'] = mpgs['displacement']/(mpgs['displacement'] + mpgs['weight'])
mpgs['displacement'].hist()
plt.show()
运行图:
这样就算是达到我们预期的效果了
pandas可视化完结
今天这个小案例也算是对pandas可视化的一个总结,我也是抛砖引玉随便搞了一下,当然,你们可以再继续利用之前讲过的东西进行举一反三的
今日鸡汤
我们生来就是为了成为自己,而不仅仅是变成一个正常人。