数据分析项目四:KLOOK旅游数据分析

导入数据

        观察数据,是csv格式

        导入数据

# 导入数据
df = pd.read_csv('kelu.csv')
df.head()

        分析数据:发现time列数据类型需要修改为datetime

df.info()
# 可以看出共有8k+条数据,time列数据类型需要转换为datetime,没有空数据

df.describe()
# 可以看出平均评分在92,大多数的用户给出了100分
# 数据是16年到19年之间的
# 门票价格都是110
# frequency代表消费次数,全为1,后续计数用

        根据分析结果修改time列数据类型

# 分析数据
# 先转换time列数据类型
df['time'] = pd.to_datetime(df['time'],format='%Y/%m/%d')
df.info()

每日/每月/每个用户数据分析

a1.每日销量分析

# 1.每日销量分析
# time列本来就是精确到天的,所以直接按time分组就行,然后因为也没有空数据,所以随便取一列计数就行
df.groupby('time')['frequency'].count().plot(figsize=(12,4))
# 整体看来每日销量呈现上升趋势,但是18年5月份前后(2、3、4)出现一次较大波动,销量急剧下滑,猜测:台风、疫情,运营推广不利
# 16年9月-17年1月,销量非常低,平均每天2-3张,猜测:101观景台门票刚上线发售,观景台刚对游客开放

a2.每月销量分析

# 2.每月销量分析
# time列精确到天数,而我们只需要月份就行,跟上一个项目一样,新增一列精度为月份
df['month'] = df['time'].values.astype('datetime64[M]') # 保留精度为月份的日期
df.groupby('month')['rating'].count().plot(figsize=(12,4))
# 月份销量整体呈现上升趋势,但是18年2、3、4月销量下滑,跟每天销量有关

a3.每个用户的购买量和消费金额

        先学习新函数merge,比较好理解,将两个表按照相同字段连接

# 新函数merge法,相当于SQL中的join
df1 = pd.DataFrame({
    'name':['zhangsan','lisi'],
    'group':['A','B']
})

df2 = pd.DataFrame({
    'name':['lisi','wangwu'],
    'group':['B','C'],
    'score':[88,90]
})
pd.merge(left=df1,right=df2,on='name',how='inner',suffixes=['_1','_2'])
# left:左表名称  right:右表名称  on:关联字段  how:inner(默认,交集)/outer(并集)/left(只保留左侧)/right(只保留右侧)
# suffixes:如果两个表中有相同列,用suffixes给的值进行区分(默认值x、y)

        这里可以不用这么麻烦,只是为了讲解这个函数

        画散点图的时候,可以指定x、y

# 按照游客分组,统计每个游客购买次数
group_count_author = df.groupby('author')['frequency'].count().reset_index() # 这里的重置索引是为了加上frequency的列名
# 按照游客分组,统计每个游客的消费金额
group_sum_amount = df.groupby('author')['amount'].sum().reset_index()
user_purchase_retention = pd.merge(left=group_count_author,
                                  right=group_sum_amount,
                                  on='author',
                                  how='inner')
user_purchase_retention.plot.scatter(x='frequency',y='amount')
plt.title('用户购买次数和消费金额关系')
plt.xlabel('购物次数')
plt.ylabel('消费金额')
# 结论:斜率是门票价格110,两者呈线性关系 

用户购买数量和次数行为分析

b1.用户购买门票数量分析

        这里我做的跟视频有点出入,因为我觉得frequency只是次数而已,不代表数量,展示的是我自己的做法

# 1.用户购买门票数量分析
# 这里视频教学是直接对frequency进行计数,但是我觉得frequency全为1表示消费次数,但是一次消费可能不只一张门票
df['quantity'] = df['amount']/110
df['totle_quantity'] = df['quantity']*df['frequency']
df.groupby('author')['totle_quantity'].count().plot(kind='hist',bins=50)
plt.xlim(1,17)
plt.xlabel('购买数量')
plt.ylabel('人数')
plt.title('用户购买门票数量直方图')
# 绝大多数用户买过1张门票,用户在7000人左右
# 少数人买过2-6张门票,推测:可能是台北周边用户
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值