分析数据,将数据可视化
import pandas as pd catering_sale = 'D:/人工智能&软件工程/数据挖掘与分析/data/catering_sale.xls' # 餐饮数据 data = pd.read_excel(catering_sale, index_col = u'日期') # 读取数据,指定“日期”列为索引列 print(data) print(data.describe(),data.describe().max()-data.describe().min())
输出结果:
销量 日期 2015-03-01 51.0 2015-02-28 2618.2 2015-02-27 2608.4 2015-02-26 2651.9 2015-02-25 3442.1 ... ... 2014-08-06 2915.8 2014-08-05 2618.1 2014-08-04 2993.0 2014-08-03 3436.4 2014-08-02 2261.7 [201 rows x 1 columns] 销量 count 200.000000 mean 2755.214700 std 751.029772 min 22.000000 25% 2451.975000 50% 2655.850000 75% 3026.125000 max 9106.440000 销量 9084.44 dtype: float64
绘制箱型图
# 代码3-2 餐饮销额数据异常值检测 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.title('餐饮销额数据箱型图_3041') plt.show() # 展示箱线图
绘制直方图
# 代码3-3 捞起生鱼片的季度销售情况 import pandas as pd import numpy as np catering_sale = 'D:/人工智能&软件工程/数据挖掘与分析/data/catering_fish_congee.xls' # 餐饮数据 data = pd.read_excel(catering_sale,names=['date','sale']) # 读取数据,指定“日期”列为索引 bins = [0,500,1000,1500,2000,2500,3000,3500,4000] labels = ['[0,500)','[500,1000)','[1000,1500)','[1500,2000)', '[2000,2500)','[2500,3000)','[3000,3500)','[3500,4000)'] data['sale分层'] = pd.cut(data.sale, bins, labels=labels) # aggResult = data.groupby(by=['sale分层'])['sale'].agg({"sale","sale"}) aggResult = data.groupby('sale分层').agg({'sale':'count'}) pAggResult = round(aggResult/aggResult.sum(), 2, ) * 100 import matplotlib.pyplot as plt plt.figure(figsize=(10,6)) # 设置图框大小尺寸 pAggResult['sale'].plot(kind='bar',width=0.8,fontsize=10) # 绘制频率直方图 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.title('季度销售额频率分布直方图_3041',fontsize=20) plt.show()
绘制饼图
#代码清单3-4 不同菜品在某段时间的销售量分布情况 import pandas as pd import matplotlib.pyplot as plt catering_dish_profit = 'D:/人工智能&软件工程/数据挖掘与分析/data/catering_dish_profit.xls' # 餐饮数据 data = pd.read_excel(catering_dish_profit) # 读取数据,指定“日期”列 为索引 # 绘制饼图 x = data['盈利'] labels = data['菜品名'] plt.figure(figsize=(8, 6)) # 设置画布大小 plt.pie(x,labels=labels) #饼状图 # 绘制饼图 plt.rcParams['font.sans-serif'] = 'SimHei' plt.title('菜品销售量分布(饼图)_3041') # 设置标题 plt.axis('equal') plt.show() # 绘制条形图 x = data['菜品名'] y = data['盈利'] plt.figure(figsize=(8, 4)) # 设置画布大小 plt.bar(x,y) #柱状图 plt.rcParams['font.sans-serif'] = 'SimHei' plt.xlabel('菜品') # 设置x轴标题 plt.ylabel('销量') # 设置y轴标题 plt.title('菜品销售量分布(条形图)_3041')# 设置标题 plt.show()
绘制折线图
# 代码3-5 不同部门在各月份的销售对比情况 # 部门之间销售金额比较 import pandas as pd import matplotlib.pyplot as plt data = pd.read_excel("D:/人工智能&软件工程/数据挖掘与分析/data/dish_sale.xls") plt.figure(figsize=(12,8)) plt.plot(data['月份'],data['A部门'],color='green',label='A部门',marker='o') plt.plot(data['月份'],data['B部门'],color='red',label='B部门',marker='s') plt.plot(data['月份'],data['C部门'],color='skyblue',label='C部门',marker='x') plt.legend()#显示图标 plt.ylabel('销售额(万元)') plt.xlabel('月份') plt.title("不同部门在各月份的销售对比情况_3041") plt.show()
# 代码3-6 不同年份在各月份的销售对比情况 # 不同年份之间销售金额比较 import pandas as pd import matplotlib.pyplot as plt data = pd.read_excel("D:/人工智能&软件工程/数据挖掘与分析/data/dish_sale_b.xls") plt.figure(figsize=(12,8)) plt.plot(data['月份'],data['2014年'],color='green',label='2014年',marker='o') plt.plot(data['月份'],data['2013年'],color='red',label='2013年',marker='s') plt.plot(data['月份'],data['2012年'],color='skyblue',label='2012年',marker='x')#折线图 plt.legend()#显示图标 plt.ylabel('销售额(万元)') plt.xlabel('月份') plt.title("不同年份在各月份的销售对比情况_3041") plt.grid(axis="y")#增加网格 plt.show()
正弦函数虚线图
#代码3-7 正弦函数虚线图 import matplotlib.pyplot as plt import numpy as np x = np.linspace(0,2*np.pi,50) y = np.sin(x) plt.plot(x,y, 'bp--') plt.rcParams['font.sans-serif']= 'SimHei' plt.title('虚线图_3041',fontsize=20) plt.show()
标签:plt,sale,catering,柱状图,pd,折线图,import,箱型,data From: https://www.cnblogs.com/Binnie/p/17157471.html