更新中。。。
本文是作者阅读《python数据分析与挖掘实战》(张良均等,2016年1月第1版,机械工业出版社)时,将几种数据统计图的python写法做一个笔记。
源代码来自书上,注释来自作者理解。为了方便日后使用,对源代码的更正或者改变部分就不另行说明了,谢谢支持。
准备:需要python2.7、pandas、numpy、matplotlib等语言或数据分析库,或者直接安装anaconda(安装anaconda时不需要再安装python,否则使用自行安装的python不能直接import导入anaconda的计算库)
tips:建议使用anaconda的Jupyter Notebook或者Spyder进行以下操作,实测通过命令行和vscode导入包会等的很长
一、箱型图
这是一种将数据四等分,以数据大小为依据,取25%位置的数为下四分位数QU,取75%为大四分位数QL,定义数据集中异常值是那些 小于QL - 1.5IQR或者大于QU + 1.5IQR 的数。其中IQR为上定义的四分位之间差的绝对值。
1 #-*- coding:utf-8 -*- 2 3 import pandas as pd #导入pandas库,用于数据分析 4 5 data_path = ‘data.xls‘ #以Excel文件为例 6 7 ‘‘‘ 8 以下使用read_excel()读取一个Excel文件,并获取列名为“列名字”的一列数据,前面的 u 是为了显示中文避免乱码。
这个函数可以有很多参数,参见官方手册。data是DataFrame类型 9 ‘‘‘ 10 data = pd.read_excel(data_path, index_col = u‘列名字‘) 11 12 13 import matplotlib.pyplot as plt #导入matplotlib,用于画图 14 plt.rcParams[‘font.sans-serif‘] = [‘SimHei‘] #指定字体为雅黑,matplotlib不支持直接显示中文 15 plt.rcParams[‘axes.unicode_minus‘] = False #使得matplotlib正常显示负号 16 17 plt.figure() #建立图像 18 19 ‘‘‘ 20 以下建立箱型图,指定返回值是‘dict‘,此时p是一个字典,其中的‘fliers‘键的值是一个为异常值的且属于matplotlib的line2D对象列表,
使用get_xdata和get_ydata获得数据的横纵坐标数组(准确是numpy.ndarray) 21 ‘‘‘ 22 p = data.boxplot(return_type = ‘dict‘) 23 x = p[‘fliers‘][0].get_xdata() 24 y = p[‘fliers‘][0].get_ydata() 25 y.sort() #排序 26 27 28 ‘‘‘ 29 接下来使用annotate()为该图像增加注释,语法是annotate(u‘标签‘, xy = (cor_x, xor_y), xytext = (cor_x, cor_y)),
其中xy表示标注点坐标,xytext表示注释坐标,cor_x和cor_y是坐标值。
坐标需要根据数据调整,这里不再贴代码。 30 ‘‘‘
由书上的数据和代码得到以下箱型图:
异常值就显而易见了。