python数据挖掘与分析实战—1、2、3

来源:互联网 发布:淘宝客服外包靠谱吗 编辑:程序博客网 时间:2024/05/24 06:27

一、数据挖掘的建模过程:

1.1定义挖掘目标:

1.1.1动态的菜品推荐

1.1.2客户进行细分,关注最有价值的客户

1.1.3基于菜品的历史销售情况,对菜品销量进行预测,预备原材料

1.1.4基于大数据,优化选址,菜式调整

1.2数据取样

随机抽样,分类抽样,等距抽样

1.3数据探索

1.3.1异常值分析

1.3.2缺失值分析

1.3.3相关性分析

1.3.4周期性分析

1.4数据预处理

1.4.1缺失值处理

1.4.2异常值处理

1.4.3数据降维

1.5挖掘建模

1.5.1关联规则:智能推荐

1.5.2聚类算法:客户价值分析

1.5.3分类预测:菜品销量,新店选址

1.6模型评价

SAS

SPSS

SQL SERVER

PYTHON

WEKA

KNIME

RAPIDMINER

TIPDM

#-*-coding:utf-8-*-#import pandas as pdcatering_sale = 'catering_sale.xls'data=pd.read_excel(catering_sale,index_col=u'日期')print data.describe()print len(data)'''count   200.000000mean   2755.214700std     751.029772min      22.00000025%    2451.97500050%    2655.85000075%    3026.125000max    9106.440000201'''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的方法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() #展示箱线图

#-*-coding:utf-8-*-#import pandas as pd'''catering_sale = 'catering_sale.xls'data = pd.read_excel(catering_sale)data = data[(data[u'销量']>400)&(data[u'销量']<5000)]statistics = data.describe()'''dish_profile='catering_dish_profit.xls'data=pd.read_excel(dish_profile,index_col=u'菜品名')data=data[u'盈利'].copy()data.sort(ascending = False)import matplotlib.pyplot as plt #导入图像库plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号#贡献率分析--------帕累托法则,百分之八十的李瑞常常来自于百分之二十最畅销的产品plt.figure()data.plot(kind='bar')plt.ylabel(u'盈利()')p = 1.0*data.cumsum()/data.sum()#累计的曲线图p.plot(color='r',secondary_y=True,style='-o',linewidth=2)#第一个是值,第二个是目标位置,第三个是标记位置,最后一个是箭头的样式plt.annotate(format(p[6], '.4%'), xy = (6, p[6]), xytext=(6*0.9, p[6]*0.9), arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2")) #添加注释,即85%处的标记。这里包括了指定箭头样式。plt.ylabel(u'盈利(比例)')plt.show()

#-*- coding:utf-8 -*-import pandas as pdimport numpy as np'''catering_sale='catering_sale_all.xls'data=pd.read_excel(catering_sale)print data.corr(method='spearman')print data.corr()[u'百合酱蒸凤爪']print data[u'百合酱蒸凤爪'].corr(data[u'翡翠蒸香茜饺'])'''data=pd.DataFrame(np.random.randn(6,5))data2=pd.DataFrame([range(0,7),range(1,8)])print dataprint data2s1=data2.loc[0]s2=data2.loc[1]print s1.corr(s2)'''cumsumrolling_sum'''data=pd.Series(range(0,10))print dataprint data.cumsum()print pd.rolling_sum(data,2)#x=range(0,10)x=np.linspace(0,10)y=np.sin(x)'''plot'''import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号plt.figure(1)plt.plot(x,y,'b*--')plt.show()'''pie'''plt.figure(2)labels='Frogs','Hogs','Dogs','Logs'#标签sizes=[15,30,45,10]#每块大小colors=['yellowgreen','gold','lightskyblue','lightcoral']#每块颜色explode=[0,0.1,0,0]#突出显示plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=90)plt.axis('equal')#显示为圆,避免压缩显示为椭圆plt.show()plt.figure(3)x=np.random.randn(1000)plt.hist(x,10)#第二个参数为间隔plt.show()plt.figure(4)x=np.random.randn(1000)D=pd.DataFrame([x,x+1]).TD.plot(kind='box')plt.show()plt.figure(5)x=pd.Series(np.exp(np.arange(200)))x.plot(label=u'原始数据',legend=True)plt.show()x.plot(logy=True,label=u'对数数据图',legend=True)plt.show()plt.figure(6)error = np.random.randn(10)y=pd.Series(np.sin(np.arange(10)))print 'error:',error,'y:',yy.plot(yerr = error)plt.show()

0 0
原创粉丝点击