###3.1数据质量分析
箱形图
import pandas as pd #导入pandas库
catering_sale='D:/YF_test/catering_sale.xls' #餐饮数据目录位置
data=pd.read_excel(catering_sale,index_col='日期') #读取数据,指定日期列为索引
import matplotlib.pyplot as plt #导入图库
plt.rcParams['font.sans-serif']=['SimHei'] #用来显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来显示负号
plt.figure() #建立图像
p = data.boxplot(return_type='dict') #画箱线图,直接使用DataFrame的方法,书上方法报错,
#产生的原因可能是没有指定p的类型,导致下面不能获取指定的下标
x = p['fliers'][0].get_xdata() #'fliers'即为异常值的标签
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.8,y[i]))
plt.show()
3.2.5
data[‘sum_Times’]=data[‘Times’].groupby([‘userID’]).cumsum()
data.loc[data.isnull().T.any() ]
4.3.3连续属性离散化
等宽法、等频法、基于聚类分析的方法
代码:
#-*-coding: utf-8 -*-
#数据标准化
import pandas as pd
datafile='d:/YF_test/discretization_data.xls' #数据初始化
data=pd.read_excel(datafile) #读取数据
data1=data['肝气郁结证型系数'].copy() #复制一列数据
k=4
d1 = pd.cut(data1, k, labels= range(k)) #等宽离散化,各个类别依次命名为0,1,2 保存的是index 的分类
#等频离散化
w = [1.0*i/k for i in range(k+1)] #创建一个列表,确定分位数0%,25%,50%,75%,100%
w=data1.describe(percentiles=w)[4:4+k+1] #利用describe函数计算分位数,取出分位数
w[0]=w[0]*(1-1e-10) #保证小于最小值
d2=pd.cut(data1,w,labels=range(k))
#基于聚类分析