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

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()

效果

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

 

 

 

#绘制折线图

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()

效果:

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

 

星期与销售额的数量情况

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()

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

 

 星期销售额占比情况

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属性可以设置为圆环图,无为饼状图

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

 

 数据整理

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

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

 

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

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

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

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

 

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

上一篇:sqlserver 同一列不同数据放到一行不同列


下一篇:IntelliJ IDEA连接不上数据库 (Connection to testdb@localhost failed. [08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up.)