这里是南京财经大学的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()