第1关:单变量特征分布
#!/usr/bin/python
#coding:utf8
import warnings
warnings.filterwarnings("ignore")
import pandas as pd
import os
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
import seaborn as sns
sns.set_style('darkgrid')
font=fm.FontProperties(fname=r'./data/simhei.ttf') #自定义字体集
def explore_user(User_data):
'''
User_data数据类型请参考左边数据背景中用户数据,具体数据内容可以点击右上角文件目录,
选择data文件夹,查看User.csv文件。
请完善用户信息中的性别('sex')、年龄('age')和用户等级('user_lv_cd')的饼图分布,
这里需要使用上面自定义字体集,图标题使用12号字,其他9号字;图形效果如左侧编程要求中的1所示。
使用1行3列的子图展示,子图标题分别为“用户性别分布”,“用户年龄分布”,"用户等级分布";饼图颜色使用默认颜色。
'''
fig = plt.figure(figsize=(27, 9))
########## Begin ##########
vars=['sex','age','user_lv_cd'] #选出要展示的变量名
vars_name=['用户性别分布','用户年龄分布','用户等级分布'] #每个变量对应的图的标题
for i in range(3):
plt.subplot(1, 3, i+1)
plt.pie(User_data[vars[i]].value_counts(), labels=User_data[vars[i]].value_counts().index, autopct='%.1f%%',textprops={'FontProperties':font, 'fontsize':9})
plt.title(vars_name[i],FontProperties=font,fontsize=12)
########## End ##########
plt.show()
plt.savefig('./task1/task1_user.png')
plt.close(fig)
def explore_comment(comment):
'''
comment数据集是数据集Comment.csv的数据,数据中的商品评论数量('comment_num'),'comment_num'包含0,1,2,3,4等五种类型;
类型的含义:0表示无评论,1表示有1条评论, 2表示有2-10条评论,3表示有11-50条评论,4表示大于50条评论;
请完善商品评论中的商品评论数量('comment_num')的分布情况,需要使用自定义字体集,图标题使用12号字,其他9号字。
'''
fig=plt.figure(figsize=(8,6))
########## Begin ##########
plt.pie(comment['comment_num'].value_counts(), labels=comment['comment_num'].value_counts().index, autopct='%.1f%%',textprops={'FontProperties':font, 'fontsize':9})
plt.title('商品评论分布',FontProperties=font,fontsize=12)
plt.show()
########## End ##########
plt.show()
plt.savefig('./task1/task1_comment.png')
plt.close(fig)
def explore_action(action_data):
'''
action_data是数据集Action.csv的数据,是行为数据,可以参考左边的行为数据字段解释;
数据中的‘type’字段包含1,2,3,4,5,6六类数值型数据,(值=1:浏览(指浏览商品详情页);
值=2:加入购物车;值=3:购物车删除;值=4:下单;值=5:关注;值=6:点击)
请完使用seaborn.distplot查看客户这六类行为次数的分布情况,使用自定义字体集,
子图标题字体大小12,其余字体大小9。在画图的过程中需要对统计每个user_id(客户)的行为次数,
可以使用groupby函数,然后再展示客户行为次数分布
'''
figure = plt.figure(figsize=(27, 9))
########## Begin ##########
action_do=['浏览','加入购物车','购物车删除','下单','关注','点击']
for i in range(1, 7, 1):
plt.subplot(2, 3, i)
sns.distplot(action_data[action_data['type'] == i].groupby('user_id')['sku_id'].count())
plt.title('%s分布' %action_do[i-1],FontProperties=font,fontsize=12)
plt.xlabel('客户%s的次数' %action_do[i-1],FontProperties=font,fontsize=9)
########## End ##########
plt.show()
plt.savefig('./task1/task1_action.png')