数据分析
-
01_abnormal_check
-
Code
1 # -*- coding: utf-8 -*- 2 3 # 代码3-1 使用describe()方法即可查看数据的基本情况 4 import pandas as pd 5 catering_sale = '../data/catering_sale.xls' # 餐饮数据 6 data = pd.read_excel(catering_sale, index_col = u'日期') # 读取数据,指定“日期”列为索引列 7 print(data.describe()) 8 9 10 11 # 代码3-2 餐饮销额数据异常值检测 12 13 import matplotlib.pyplot as plt # 导入图像库 14 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 15 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 16 17 plt.figure() # 建立图像 18 p = data.boxplot(return_type='dict') # 画箱线图,直接使用DataFrame的方法 19 x = p['fliers'][0].get_xdata() # 'flies'即为异常值的标签 20 y = p['fliers'][0].get_ydata() 21 y.sort() # 从小到大排序,该方法直接改变原对象 22 ''' 23 用annotate添加注释 24 其中有些相近的点,注解会出现重叠,难以看清,需要一些技巧来控制 25 以下参数都是经过调试的,需要具体问题具体调试。 26 ''' 27 for i in range(len(x)): 28 if i>0: 29 plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i])) 30 else: 31 plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i])) 32 33 plt.show() # 展示箱线图
-
Result
-
02_feature_check
-
Code
1 # -*- coding: utf-8 -*- 2 3 # 代码3-3 捞起生鱼片的季度销售情况 4 import pandas as pd 5 import numpy as np 6 catering_sale = '../data/catering_fish_congee.xls' # 餐饮数据 7 data = pd.read_excel(catering_sale,names=['date','sale']) # 读取数据,指定“日期”列为索引 8 9 import matplotlib.pyplot as plt 10 d = 500 # 设置组距 11 num_bins = round((max(data['sale']) - min(data['sale'])) / d) # 计算组数 12 plt.figure(figsize=(10,6)) # 设置图框大小尺寸 13 plt.hist(data['sale'], num_bins) 14 plt.xticks(range(0, 4000, d)) 15 plt.xlabel('sale分层') 16 plt.grid() 17 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 18 plt.title('季度销售额频率分布直方图',fontsize=20) 19 plt.show() 20 21 22 23 # 代码3-4 不同菜品在某段时间的销售量的分布情况 24 import pandas as pd 25 import matplotlib.pyplot as plt 26 catering_dish_profit = '../data/catering_dish_profit.xls' # 餐饮数据 27 data = pd.read_excel(catering_dish_profit) # 读取数据,指定“日期”列为索引 28 29 # 绘制饼图 30 x = data['盈利'] 31 labels = data['菜品名'] 32 plt.figure(figsize = (8, 6)) # 设置画布大小 33 plt.pie(x,labels=labels) # 绘制饼图 34 plt.rcParams['font.sans-serif'] = 'SimHei' 35 plt.title('菜品销售量分布(饼图)') # 设置标题 36 plt.axis('equal') 37 plt.show() 38 39 # 绘制条形图 40 x = data['菜品名'] 41 y = data['盈利'] 42 plt.figure(figsize = (8, 4)) # 设置画布大小 43 plt.bar(x,y) 44 plt.rcParams['font.sans-serif'] = 'SimHei' 45 plt.xlabel('菜品') # 设置x轴标题 46 plt.ylabel('销量') # 设置y轴标题 47 plt.title('菜品销售量分布(条形图)') # 设置标题 48 plt.show() # 展示图片 49 50 51 52 # 代码3-5 不同部门在各月份的销售对比情况 53 # 部门之间销售金额比较 54 import pandas as pd 55 import matplotlib.pyplot as plt 56 data=pd.read_excel("../data/dish_sale.xls") 57 plt.figure(figsize=(8, 4)) 58 plt.plot(data['月份'], data['A部门'], color='green', label='A部门',marker='o') 59 plt.plot(data['月份'], data['B部门'], color='red', label='B部门',marker='s') 60 plt.plot(data['月份'], data['C部门'], color='skyblue', label='C部门',marker='x') 61 plt.legend() # 显示图例 62 plt.ylabel('销售额(万元)') 63 plt.show() 64 65 66 # B部门各年份之间销售金额的比较 67 data=pd.read_excel("../data/dish_sale_b.xls") 68 plt.figure(figsize=(8, 4)) 69 plt.plot(data['月份'], data['2012年'], color='green', label='2012年',marker='o') 70 plt.plot(data['月份'], data['2013年'], color='red', label='2013年',marker='s') 71 plt.plot(data['月份'], data['2014年'], color='skyblue', label='2014年',marker='x') 72 plt.legend() # 显示图例 73 plt.ylabel('销售额(万元)') 74 plt.show() 75 76 77 # 代码3-6 餐饮销量数据统计量分析 78 79 # 餐饮销量数据统计量分析 80 import pandas as pd 81 82 catering_sale = '../data/catering_sale.xls' # 餐饮数据 83 data = pd.read_excel(catering_sale, index_col = '日期') # 读取数据,指定“日期”列为索引列 84 data = data[(data['销量'] > 400)&(data['销量'] < 5000)] # 过滤异常数据 85 statistics = data.describe() # 保存基本统计量 86 87 statistics.loc['range'] = statistics.loc['max']-statistics.loc['min'] # 极差 88 statistics.loc['var'] = statistics.loc['std']/statistics.loc['mean'] # 变异系数 89 statistics.loc['dis'] = statistics.loc['75%']-statistics.loc['25%'] # 四分位数间距 90 91 print(statistics) 92 93 94 # 代码3-7 某单位日用电量预测分析 95 96 import pandas as pd 97 import matplotlib.pyplot as plt 98 99 df_normal = pd.read_csv("../data/user.csv") 100 plt.figure(figsize=(8,4)) 101 plt.plot(df_normal["Date"],df_normal["Eletricity"]) 102 plt.xlabel("日期") 103 plt.ylabel("每日电量") 104 # 设置x轴刻度间隔 105 x_major_locator = plt.MultipleLocator(7) 106 ax = plt.gca() 107 ax.xaxis.set_major_locator(x_major_locator) 108 plt.title("正常用户电量趋势") 109 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 110 plt.show() # 展示图片 111 112 # 窃电用户用电趋势分析 113 df_steal = pd.read_csv("../data/Steal user.csv") 114 plt.figure(figsize=(10, 9)) 115 plt.plot(df_steal["Date"],df_steal["Eletricity"]) 116 plt.xlabel("日期") 117 plt.ylabel("日期") 118 # 设置x轴刻度间隔 119 x_major_locator = plt.MultipleLocator(7) 120 ax = plt.gca() 121 ax.xaxis.set_major_locator(x_major_locator) 122 plt.title("窃电用户电量趋势") 123 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 124 plt.show() # 展示图片 125 126 127 # 代码3-8 菜品盈利帕累托图 128 129 # 菜品盈利数据 帕累托图 130 import pandas as pd 131 132 # 初始化参数 133 dish_profit = '../data/catering_dish_profit.xls' # 餐饮菜品盈利数据 134 data = pd.read_excel(dish_profit, index_col = '菜品名') 135 data = data['盈利'].copy() 136 data.sort_values(ascending = False) 137 138 import matplotlib.pyplot as plt # 导入图像库 139 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 140 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 141 142 plt.figure() 143 data.plot(kind='bar') 144 plt.ylabel('盈利(元)') 145 p = 1.0*data.cumsum()/data.sum() 146 p.plot(color = 'r', secondary_y = True, style = '-o',linewidth = 2) 147 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%处的标记。这里包括了指定箭头样式。 148 plt.ylabel('盈利(比例)') 149 plt.show() 150 151 152 # 代码3-9 餐饮销量数据相关性分析 153 154 # 餐饮销量数据相关性分析 155 from __future__ import print_function 156 import pandas as pd 157 158 catering_sale = '../data/catering_sale_all.xls' # 餐饮数据,含有其他属性 159 data = pd.read_excel(catering_sale, index_col = '日期') # 读取数据,指定“日期”列为索引列 160 161 print(data.corr()) # 相关系数矩阵,即给出了任意两款菜式之间的相关系数 162 print(data.corr()['百合酱蒸凤爪']) # 只显示“百合酱蒸凤爪”与其他菜式的相关系数 163 # 计算“百合酱蒸凤爪”与“翡翠蒸香茜饺”的相关系数 164 print(data['百合酱蒸凤爪'].corr(data['翡翠蒸香茜饺']))
-
Result
标签:数据分析,plt,Python,sale,catering,pd,import,data From: https://www.cnblogs.com/zhangfurong/p/17151317.html