【Python那些事儿】用图表分析单变量数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/duxu24/article/details/72971963

准备工作

我们采用EDA(探索性数据分析)方式对数据集进行探索,并通过可视化进行展示。这里使用pyplot来绘制图形进行数据可视化,pyplotmatplotlib绘图库的状态机接口。
数据集:

1946,41
1947,23
1948,16
1949,28
1950,20
1951,11
1952,19
1953,14
1954,39
1955,32
1956,
1957,14
1958,
1959,16
1960,6

我们可以观察到数据集中存在异常,如缺失值。可以采用递归方式研究这些异常,发现一个异常,将其删除,然后对等于数据进行处理。(在每一次迭代中,删除发现的异常值之后继续递归地检查数据,是一种常用的检查异常值的方法。

操作方法

import numpy as np
import matplotlib.pyplot as plt

fill_data = lambda x:int(x.strip() or 0)#对于缺失值,匿名函数会将其置为0
data = np.genfromtxt('data.csv', dtype=(int, int), converters={1:fill_data}, delimiter=',')#加载并处理缺失值
print(data)
y = data[:,1]#第二列数据放入y
x = data[:,0]#第一列数据放入x

plt.close('all')#关闭之前程序打开的所有图形
plt.figure(1)#给新图形设置一个编号,在绘制多个图形时方便
plt.plot(x, y, 'ro')#绘图,‘ro’代表红色('r')的点('o')来绘图
plt.title('All data')#设置标题
plt.xlabel('year')#设置x坐标
plt.ylabel('No Presndential Request')#设置y坐标

#计算出百分位数(第25、50、75位),以了解数据分布
perc_25 = np.percentile(y, 25)
perc_50 = np.percentile(y, 50)
perc_75 = np.percentile(y, 75)

#将百分位数添加到之前生成的图形中作为参考,即百分位水平线
plt.axhline(perc_25, label='25th perc', c ='r')
plt.axhline(perc_50, label='50th perc',c ='g')
plt.axhline(perc_75, label='75th perc',c ='m')
plt.legend(loc='best')#添加图例说明,loc参数让pyplot决定最佳放置位置,以免影响读图

plt.show()

输出效果:


这里写图片描述

补充:
为什么使用百分位数,不使用平均数?

  • 百分位数有其优势,平均值往往会异常点倾斜;
  • 百分位数把数据集里的数值范围更清晰地展示出来。

猜你喜欢

转载自blog.csdn.net/duxu24/article/details/72971963