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

3.1 数据质量分析

2016-12-05 09:19 204 查看
这是书籍《Python数据分析与挖掘实战》里面第3.1节的一些实践。

理论废话就不讲了,主要是程序代码、调试报错以及结果记录,附带一些心得。

首先说明,数据是书里面网站自带的。
http://pan.baidu.com/s/1kVK2M39 这是下载地址。密码要的请评论问。

首先看录入数据的代码:

#-*- coding:GBK -*-
import pandas as pd

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

print data.describe()


说明一下,这里编码改成 GBK 而不用 utf-8 主要是报错出注释里面 uft-8 是乱码,看着恶心。

对于初学者有个问题,就是

catering_sale = 'catering_sale.xls' #餐饮数据
这里的路径到底怎么写?我摸索了很久。

比如,我把这个代码文件取名为 3_1.py  保存在了 C:\Users\Administrator\Desktop\Python\datadig 这个路径,

同时 catering_sale.xls 文件也保存在这个文件夹下,那么单引号里面的路径就直接写 catering_sale.xls 就行了。

如果我把 xls 数据文件放在了C:\Users\Administrator\Desktop\Python\datadig\data ,而代码文件不变呢?

正确的路径代码是:

catering_sale = 'data\catering_sale.xls' #餐饮数据
亲测可行。同时值得注意的是

catering_sale = 'data\catering_sale.xls' # 读取数据
也是可行的,不管是哪个方向的斜杠输入,都能正确识别。

然后是结果:



结果里面有个莫名其妙的警告,不知道什么意思,懒得管了。

接下来,给出了一段代码:

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

catering_sale = 'data/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'即为异常值的标签
y = p['fliers'][0].get_ydata()
y.sort() #从小到大排序,该方法直接改变原对象

#用annotate添加注释
#其中有些相近的点,注解会出现重叠,难以看清,需要一些技巧来控制。
#以下参数都是经过调试的,需要具体问题具体调试。
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() #展示箱线图


需要说明的是,这里的路径注意检查。以后路径就不额外说明了,都按照本文开头那段做。

然后,命令行给出了一个 future warning,其实不用管,就是说以后的版本可能会怎么样云云,现在屁事没有。

运行结果如下:



这个图叫箱线图 boxplot()

超过上下界的几个销售数据“可能”是异常值,就是400以下,5000以上的。

这里就是 22、51、60、6607.4、9106.44 这几个。

书里面说,“缺失值个数为:1“ 倒是没看见在哪
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 大数据