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

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

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 pd
catering_sale = 'catering_sale.xls'
data=pd.read_excel(catering_sale,index_col=u'日期')
print data.describe()
print len(data)
'''
count   200.000000
mean   2755.214700
std     751.029772
min      22.000000
25%    2451.975000
50%    2655.850000
75%    3026.125000
max    9106.440000
201
'''
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 pd
import 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 data
print data2
s1=data2.loc[0]
s2=data2.loc[1]
print s1.corr(s2)

'''
cumsum
rolling_sum
'''
data=pd.Series(range(0,10))
print data
print 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 plt
plt.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]).T
D.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:',y
y.plot(yerr = error)
plt.show()

你可能感兴趣的:(python)