ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

python连接数据库分析餐饮数据、、可视化

2020-06-03 12:01:27  阅读:550  来源: 互联网

标签:plt python 数据库 number range 可视化 number2 data price


import pandas as pd
from sqlalchemy import create_engine
import numpy as np
import matplotlib.pyplot as plt
enging = create_engine("mysql+mysqlconnector://root:root@localhost/tes_db")#设置数据库连接 #读入数据 data1=pd.read_sql("meal_order_detail1",con=enging) data2=pd.read_sql("meal_order_detail2",con=enging) data3=pd.read_sql("meal_order_detail3",con=enging) # 数据按列合并 data = pd.concat([data1,data2,data3],axis=0)
# 数据预处理
# 计算收入
data['price'] = data['counts']*data['amounts']
# 日期转换为星期
ind = pd.DatetimeIndex(data['place_order_time']) # pd.to_datetime()
data['weekday_name'] = ind.weekday_name

# 每天销售总额
data['day'] = ind.day
data_gb = data[['day','price']].groupby(by='day')
number = data_gb.agg(np.sum)

散点图

# plt.scatter(range(1,32),number)
plt.scatter(range(1,32),number,marker='D')
plt.show()

效果

 

 

 

#绘制折线图

plt.plot(range(1,32),number,'r')
plt.title('2016年8月餐饮销售额趋势示意图')
plt.xlabel('日期')
plt.ylabel('销售额')
plt.xticks(range(1,32)[::6],range(1,32)[::6])

plt.text(number['price'].argmin(),number.min(),'最小值为'+str(number['price'].min()),va='top')
plt.text(number['price'].argmax(),number.max(),'最大值为'+str(number['price'].max()),va='bottom')
plt.show()

效果:

 

星期与销售额的数量情况

ind = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
data_gb_weekday = data[['weekday_name','price']].groupby(by='weekday_name')
number_pie = data_gb_weekday.agg(np.sum)

number2 = number_pie.loc[ind,'price']
# 绘制直方图 plt.bar(range(1,len(number2)+1),number2,width=0.5,alpha=0.5) plt.xticks(range(1,len(number2)+1), number2.index) plt.plot(range(1,len(number2)+1),number2,'g') plt.title('星期与销售额的数量情况') for i,j in zip(range(1,len(number2)+1),number2): plt.text(i,j+1000,'%i'%j,ha='center',va='bottom') plt.show()

 

 星期销售额占比情况

plt.style.use('ggplot')#
plt.figure(figsize=(5,5))#长  宽
plt.pie(number2,autopct='%.2f %%',labels=number2.index,wedgeprops=dict(width=0.6,edgecolor='w'))
plt.title('星期销售额占比情况')
plt.show()

wedgeprops属性可以设置为圆环图,无为饼状图

 

 数据整理

data_gb_or = data[['order_id','price','day']].groupby(by='day')
def myfun(data):
    return len(np.unique(data))

number3 = data_gb_or.agg({'price':np.sum,'order_id':myfun})
number3

 

 订单量、销售额与时间的关系

plt.scatter(range(1,32),number3['price'],s=number3['order_id'])  # 气泡图
# s的大小表示订单量的多少

plt.title('订单量、销售额与时间的关系')
plt.xlabel('时间')
plt.ylabel('销售额')
plt.show()

 

标签:plt,python,数据库,number,range,可视化,number2,data,price
来源: https://www.cnblogs.com/Chen-Tan/p/13036643.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有