第2关:用户的购买意向与时间之间的关系
#coding:utf8
import warnings
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('darkgrid')
import matplotlib.font_manager as fm
myfont=fm.FontProperties(fname=r'./data/simhei.ttf')
#请完善下面的函数
warnings.filterwarnings("ignore")
def push_week(new_data):
'''
new_data是数据结构可以参考右边数据结构介绍,具体数据可以查看,文件中的action_new.csv文件。
由于数据集'type'字段中为4的值表示下单,需要先筛选下单赝本,然后对数据集中的'time'
字段(时间格式:"2016-02-01 10:10:10")转化成星期格式,再统计客户的下单情况。要求画出
2016年2月份每天下单的次数的折线图;画布使用plt.figure(figsize=(8, 6)),使用自定义字体集myfont,
前面已给出,图标题使用12号字体,其他字体使用9号字体;条形图的宽设置成0.33
'''
############ Begin ############
new_data=new_data[new_data['type']==4].copy() #选取下单的样本
new_data['weekdays'] = pd.to_datetime(new_data['time']).apply(pd.datetime.weekday) + 1 #把时间转化成星期
week_days = new_data.groupby('weekdays')['user_id'].count() #统计一周内每天内购买次数
fig=plt.figure(figsize=(8,6)) #设置画布大小
bar_width = 0.33 # 条形图的宽度
plt.bar(week_days.index , week_days, bar_width, label='下单的次数')
plt.xlabel('时间',fontproperties=myfont,fontsize=9)
plt.ylabel('数量',fontproperties=myfont,fontsize=9)
plt.title('一周内每天的下单情况',fontproperties=myfont,fontsize=12)
plt.xticks(week_days.index, ('周一', '周二', '周三', '周四', '周五', '周六', '周日'),fontproperties=myfont,fontsize=9)
plt.ylim(0,300)
plt.legend(prop=myfont)
############ End ############
plt.savefig('./task2/task2_week.png')
plt.close(fig)
def push_date(new_data):
'''
new_data数据集是2月-5月的客户行为数据集,2月份受可能春节影响影响较大,'time'格式是'2016-02-01 10:10:10',
需要先选取2月份的样本,然后提把日期转化成天数(即只提取日,剔除年月时分秒),再统计每天的下单情况。
要求画出2016年2月份每天下单的次数的折线图;画布使用plt.figure(figsize=(8, 6)),使用自定义字体集myfont,
前面已给出,图标题使用12号字体,其他字体使用9号字体;
'''
############ Begin ############
new_data = new_data[(new_data['type'] == 4) & (pd.to_datetime(new_data['time']) < pd.to_datetime('2016-03-01'))].copy() #筛选出2016年2月分的
new_data['days'] = [x.day for x in pd.to_datetime(new_data['time'])] #把精确到秒的时间中提
renew=new_data.groupby('days')['sku_id'].count()
fig = plt.figure(figsize=(8, 6))
plt.plot(renew.index,renew,label='购买次数')
plt.xlabel('天数',fontproperties=myfont,fontsize=9)
plt.ylabel('次数',fontproperties=myfont,fontsize=9)
plt.title('购买量和月内日期的关系',fontproperties=myfont,fontsize=12)
plt.legend(prop=myfont)
############ End ############
plt.savefig('./task2/task2_date.png')