import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#解决中文乱码问题
plt.rcParams["font.sans-serif"] = 'SimHei'
#解决负号无法正常显示问题
plt.rcParams['axes.unicode_minus'] = False
#提取各食堂数据
df = pd.read_csv('E:/泰迪云课堂/python数据分析实训/学生校园消费行为分析/result/task1_X.csv', encoding='gbk')
index = ['第一食堂','第二食堂','第三食堂','第四食堂','第五食堂']
data1 = df.loc[df['Dept'].isin(index)]
data1['Date']=pd.to_datetime(data1['Date'])#转换时间类型
data1['hour'] = data1['Date'].dt.hour # 提取时
data1['day']=[i.day for i in data1['Date']] # 提取天
#划分时间段
breakfast = data1.loc[(data1['hour'] >=6) & (data1['hour'] <=10)]#早上
lunch = data1.loc[(data1['hour'] >=11) & (data1['hour'] <=14)]#中午
dinner = data1.loc[(data1['hour'] >=17) & (data1['hour'] <=19)]#晚上
a1 = breakfast.groupby(['day','Dept'])['CardNo'].nunique() #一天的早餐人数
b1 = a1.groupby('Dept').sum() #一个月早餐人数统计
a2 = lunch.groupby(['day','Dept'])['CardNo'].nunique() #一天午餐
b2 = a2.groupby('Dept').sum() #月午餐
a3 = dinner.groupby(['day','Dept'])['CardNo'].nunique()#一天晚
b3 = a3.groupby('Dept').sum()#月晚餐
#食堂排序
print(b1.sort_values())#早餐
print(b2.sort_values())#午餐
print(b3.sort_values())#晚餐
# 绘制早中晚各食堂就餐人数占比饼图
fig = plt.figure(figsize=(12,12))
#早
ax1 = fig.add_subplot(1,3,1)
plt.pie(b1,labels=b1.index,autopct='%.2f%%')
plt.title('各食堂早餐就餐人数占比饼图')
plt.savefig("E:/泰迪云课堂/python数据分析实训/学生校园消费行为分析/result/task2_X1.png")
plt.show()
#中
ax2 = fig.add_subplot(1,3,2)
x = b2.index
plt.pie(b2,labels=x,autopct='%.2f%%')
plt.title('各食堂午餐就餐人数占比饼图')
plt.savefig("E:/泰迪云课堂/python数据分析实训/学生校园消费行为分析/result/task2_X2.png")
plt.show()
#晚
ax3 = fig.add_subplot(1,3,3)
x = b3.index
plt.pie(b3,labels=x,autopct='%.2f%%')
plt.title('各食堂晚餐就餐人数占比饼图')
plt.savefig("E:/泰迪云课堂/python数据分析实训/学生校园消费行为分析/result/task2_X3.png")
plt.show()
data1['weekday'] = data1['Date'].apply(lambda x: x.weekday()+1) # 提取星期
fwork = data1.loc[(data1['weekday'].apply(lambda x: x in [6, 7])) | (data1['day'].apply(lambda x: x == 5))]#提取非工作日的数据
#提取工作日
index = ['1','2','3','4','5']
wk = data1.loc[data1['weekday'].isin(index) | (data1['day'].apply(lambda x: x == 28))]
work = wk.loc[(wk['day'].apply(lambda x: x != 5)),:]
#就餐折线图
fig=plt.figure(figsize=(6,5))
#工作日
ax1 = fig.add_subplot(2,1,1)
#data=data.head(5)
y = work.groupby("hour")['CardNo'].nunique()
x = y.index
plt.title('工作日就餐折线图')
plt.xlabel('时间点') # 设置x轴标签
plt.ylabel('就餐人数') # 设置y轴标签
#添加数据标签
#for a,b in zip(x,y):
# plt.text(a,b,b,ha = 'center',va = 'bottom',fontsize=11)
#设置网格线
#plt.grid(True)
plt.plot(x,y,c='c')
plt.savefig("E:/泰迪云课堂/python数据分析实训/学生校园消费行为分析/result/task2_X4.png")
plt.show()
#非工作日
ax2 = fig.add_subplot(2,1,2)
#data=data.head(5)
y = fwork.groupby("hour")['CardNo'].nunique()
x = y.index
plt.title('非工作日就餐折线图')
plt.xlabel('时间点') # 设置x轴标签
plt.ylabel('就餐人数') # 设置y轴标签
plt.plot(x,y,c='c')
plt.savefig("E:/泰迪云课堂/python数据分析实训/学生校园消费行为分析/result/task2_X5.png")
plt.show()
荒野大飞
- 粉丝: 1w+
- 资源: 2797
最新资源
- aardio10开发企业管理系统aardio-erp框架源码.zip
- Android Studio实现一个新闻APP系统源码+本科毕业设计必备项目.zip
- Android毕业论文开发记单词app源码.zip
- Android基于HTML5校园二手商品交易app源码案例设计.zip
- ARIMA和SVR 时间序列-python源码.zip
- android开发之GestureDetector手势识别调节音量亮度快进和后退源码.zip
- Android手势识别将识别结果通过ESP8266发送给51单片机控制灯开关源码.zip
- ASP.NET基于Web物物交换二手交易平台设计源码案例设计.zip
- asp.net房屋出租房源网响应式网站设计源码案例设计.zip
- 搭建本地yum源的步骤
- asp.net基于三层模式车辆汽车租赁系统源码案例设计.zip
- asp.net基于三层模式宠物交易平台设计源码案例设计.zip
- asp.net基于三层模式多商家美食团购网源码案例设计.zip
- asp.net基于三层模式球星粉丝互动平台源码案例设计.zip
- asp.net基于三层模式实验室仪器设备管理系统源码案例设计.zip
- 22寸液晶面板 搬运移载设备sw18可编辑全套技术资料100%好用.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈