数据分析
import numpy as np import pandas as pd import matplotlib.pyplot as plt path='./data/catering_sale.xls' data = pd.read_excel(path, index_col = u'日期') # 读取数据,指定“日期”列为索引列 data #查看数据 print(data.describe())

plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False plt.figure() p=data.boxplot(return_type='dict') x=p['fliers'][0].get_xdata() y=p['fliers'][0].get_ydata() plt.title('2020310143049吕莹') y.sort() #从小到大排序,该方法直接改变原对象

path1='./data/catering_fish_congee.xls' #餐饮数据 data1=pd.read_excel(path1,names=['data','sale']) data1 #频率分布直方图 num_bins = round((max(data1['sale']) - min(data1['sale'])) / 200) # 计算组数 plt.figure(figsize=(10,6)) # 设置图框大小尺寸 plt.hist(data1['sale'], num_bins) plt.xticks(range(0, 4000, 200)) plt.xlabel('sale分层') plt.grid() plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.title('季度销售额频率分布直方图 2020310143049吕莹',fontsize=20) plt.show()

path2='./data/catering_dish_profit(1).xls' data2=pd.read_excel(path2) data2 #绘制饼图 x=data2['盈利'] labels=data2['菜品名'] plt.figure(figsize=(10,8)) plt.pie(x,labels=labels) plt.title('菜品销售量分布(饼图) 2020310143049吕莹') # 设置标题 plt.axis('equal') plt.show() #条形图 x1=data2['菜品名'] y1=data2['盈利'] plt.figure(figsize=(10,8)) plt.bar(x1,y1) plt.title('菜品销量发布 2020310143049吕莹') plt.show()


path3='./data/dish_sale(1).xls' data3=pd.read_excel(path3) plt.figure(figsize=(10, 8)) plt.plot(data3['月份'], data3['A部门'], color='yellow', label='A部门',marker='o') plt.plot(data3['月份'], data3['B部门'], color='red', label='B部门',marker='s') plt.plot(data3['月份'], data3['C部门'], color='skyblue', label='C部门',marker='x') plt.show()

import seaborn as sns
# 餐饮销量数据统计量分析
catering_sale ='./data/catering_sale.xls' # 餐饮数据
data4 = pd.read_excel(catering_sale, index_col = '日期') # 读取数据,指定“日期”列为索引列
data4 = data4[(data4['销量'] > 400)&(data4['销量'] < 5000)] # 过滤异常数据
statistics = data4.describe() # 保存基本统计量
statistics.loc['range'] = statistics.loc['max']-statistics.loc['min'] # 极差
statistics.loc['var'] = statistics.loc['std']/statistics.loc['mean'] # 变异系数
statistics.loc['dis'] = statistics.loc['75%']-statistics.loc['25%'] # 四分位数间距
print(statistics)
# 菜品盈利数据 帕累托图
# 初始化参数
dish_profit='./data/catering_dish_profit(1).xls'
data5 = pd.read_excel(dish_profit, index_col = '菜品名')
data5 = data5['盈利'].copy()
data5.sort_values(ascending = False)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
plt.figure()
data5.plot(kind='bar')
plt.ylabel('盈利(元)')
p = 1.0*data5.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('盈利(比例)')
plt.show()
# 代码3-9 餐饮销量数据相关性分析
# 餐饮销量数据相关性分析
import pandas as pd
catering_sale = './data/catering_sale_all.xls' # 餐饮数据,含有其他属性
data6 = pd.read_excel(catering_sale, index_col = '日期') # 读取数据,指定“日期”列为索引列
sns.heatmap(data6.corr())
plt.title('2020310143049吕莹')
print(data6.corr()) # 相关系数矩阵,即给出了任意两款菜式之间的相关系数
print(data6.corr()['百合酱蒸凤爪']) # 只显示“百合酱蒸凤爪”与其他菜式的相关系数
# 计算“百合酱蒸凤爪”与“翡翠蒸香茜饺”的相关系数
print(data6['百合酱蒸凤爪'].corr(data6['翡翠蒸香茜饺']))



浙公网安备 33010602011771号