python数据分析案例4:我们还是像以前一样喜欢音乐器材商品吗?

这里是南京财经大学的Mooc课程的个人学习笔记,课程网址是:https://www.icourse163.org/course/NJUE-1458311167,课程是免费的,老师讲的很好很认真,欢迎学习。


数据集
下载:
ratings_Musical_Instruments.csv

from datetime import datetime
import matplotlib.pyplot as plt
import pandas as pd

rnames = ['uid', 'pid', 'rating', 'timestamp']
df = pd.read_csv('ratings_Musical_Instruments.csv', header=None, names=rnames)
print(df.head(5))

在这里插入图片描述


把时间戳转换为datetime类型

df['date'] = df['timestamp'].apply(datetime.fromtimestamp)
df = df.drop(['timestamp'], axis=1)
print(df.head(5))

在这里插入图片描述


查看这么多年来人们对于音乐打分的平均分变化

# 设置索引为时间
df.index = df['date']
print(df['rating'].resample("Y").agg(['mean']))

在这里插入图片描述

plt.figure(figsize=(8, 4), dpi=100)
plt.plot(df['rating'].resample("Y").agg(['mean']))
plt.show()

在这里插入图片描述


查看不同月份人们评分的变化

plt.plot(df['rating'].groupby(df.index.month).agg(['mean']))
plt.show()

在这里插入图片描述


按照年月分析评分变化

# 把时间索引按照M的频率生成
df = df.to_period(freq='M')
# 把数据按照月份分组
df = df['rating'].groupby(by=df.index).agg(['mean'])
# datetime的索引列不能直接作为plot的横轴,要转化为时间I戳
plt.plot(df.index.to_timestamp(), df['mean'])
plt.show()

在这里插入图片描述


对于评分数量的考虑

# 把时间索引按照M的频率生成
df = df.to_period(freq='M')
# 把数据按照月份分组
df = df['rating'].groupby(by=df.index).agg(['mean', 'count'])

target = df['count'] > 200
df = df[target]

# datetime的索引列不能直接作为plot的横轴,要转化为时间I戳
plt.plot(df.index.to_timestamp(), df['mean'])
plt.ylim(3.8, 5)
plt.show()

在这里插入图片描述


通过一张图,同时展现评分的人数和评分趋势

# 把时间索引按照M的频率生成
df = df.to_period(freq='M')
# 把数据按照月份分组
df = df['rating'].groupby(by=df.index).agg(['mean', 'count'])
plt.scatter(df.index.to_timestamp(),df['mean'], df['count'])
plt.show()

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值