您的位置:首页 > 编程语言 > Python开发

python异常值检测与相关系数

2017-03-17 14:55 232 查看
异常值检测与概念此博客讲得不错:http://blog.csdn.net/zpdreamer/article/details/54095828

下面对不同年月的销售量进行异常值检测。部分数据如下:



代码如下:

#-*- coding: utf-8 -*-
import pandas as pd

catering_sale = 'catering_sale.xls' #餐饮数据
data = pd.read_excel(catering_sale, index_col = u'日期') #读取数据,指定“日期”列为索引列

import matplotlib.pyplot as plt #导入图像库
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号

plt.figure() #建立图像
p = data.boxplot() #画箱线图,直接使用DataFrame的方法
x = p['fliers'][0].get_xdata() # 'flies'即为异常值的标签
print x
y = p['fliers'][0].get_ydata()
print y
y.sort() #从小到大排序,该方法直接改变原对象
for i in range(len(x)):
if i>0:
plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i]))
else:
plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i]))

plt.show() #展示箱线图


结果如下:

x:[ 1. 1. 1. 1. 1. 1. 1. 1.]

y:[ 51. 865. 22. 60. 6607.4 4060.3 9106.44 4065.2 ]

异常值点就输出了。

箱线图略。。。。。

下面计算菜的相关系数,数据如下所示:

日期  百合酱蒸凤爪  翡翠蒸香茜饺  金银蒜汁蒸排骨 乐膳真味鸡   蜜汁焗餐包   生炒菜心    铁板酸菜豆腐
2015/1/1    17  6   8   24  13  13  18
2015/1/2    11  15  14  13  9   10  19
2015/1/3    10  8   12  13  8   3   7
2015/1/4    9   6   6   3   10  9   9
2015/1/5    4   10  13  8   12  10  17
2015/1/6    13  10  13  16  8   9   12
2015/1/7    9   7   13  8   5   7   10
2015/1/8    9   12  13  6   7   8   6
2015/1/12   6   8   8   3       4   5
2015/1/13   9   11  13  6   8   7   6
2015/1/14   6   7   8   9   4   7   8
2015/1/15   5   9   4   7   8   9   15
2015/1/16   9   7   11  9   11  8   14
2015/1/17   10  8   10  6   14  13  16
2015/1/18   13  12  12  10  9   11  8
2015/1/19   4   8   12  11  9   7   10
2015/1/20   6   12  10  9   11  4   8
2015/1/21   9   15  4   12  7   9   1
2015/1/22   3   10  13  13  13  8   13


代码直接利用pd读取计算相关系数:

#-*- coding: utf-8 -*-
#餐饮销量数据相关性分析
from __future__ import print_function
import pandas as pd

catering_sale = 'catering_sale_all.xls' #餐饮数据,含有其他属性
data = pd.read_excel(catering_sale, index_col = u'日期') #读取数据,指定“日期”列为索引列

data.corr() #相关系数矩阵,即给出了任意两款菜式之间的相关系数
print (data.corr()[u'百合酱蒸凤爪']) #只显示“百合酱蒸凤爪”与其他菜式的相关系数
print (data[u'百合酱蒸凤爪'].corr(data[u'翡翠蒸香茜饺'])) #计算“百合酱蒸凤爪”与“翡翠蒸香茜饺”的相关系数


结果:

百合酱蒸凤爪     1.000000
翡翠蒸香茜饺     0.009206
金银蒜汁蒸排骨    0.016799
乐膳真味鸡      0.455638
蜜汁焗餐包      0.098085
生炒菜心       0.308496
铁板酸菜豆腐     0.204898
香煎韭菜饺      0.127448
香煎罗卜糕     -0.090276
原汁原味菜心     0.428316
Name: 百合酱蒸凤爪, dtype: float64
0.00920580305184
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: