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

来源:互联网 发布:三个数最大公约数算法 编辑:程序博客网 时间:2024/06/06 09:04

准备工作

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

1946,411947,231948,161949,281950,201951,111952,191953,141954,391955,321956,1957,141958,1959,161960,6

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

操作方法

import numpy as npimport matplotlib.pyplot as pltfill_data = lambda x:int(x.strip() or 0)#对于缺失值,匿名函数会将其置为0data = np.genfromtxt('data.csv', dtype=(int, int), converters={1:fill_data}, delimiter=',')#加载并处理缺失值print(data)y = data[:,1]#第二列数据放入yx = data[:,0]#第一列数据放入xplt.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()

输出效果:


这里写图片描述

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

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