头歌:电商精准营销—数据探索与可视化

第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')

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值