一、豆瓣读书介绍
数据集: douba-book
数据源: 豆瓣读书
记录数:
- 标签 120 个
- 书 17967 部
- 书评 33941454 条
书评日期起止: 2005-06-12 ~ 2018-10-13
体积: 2.11G(解压后5.52G)
该数据已经过初步清洗,可用于推荐系统、情感分析、知识图谱、社会学文化变迁等多个领域(或主题)。
二、查看数据
2.1 读取数据
下载 douban_book.csv.gz 解压后,可以看到数据集中有一个 douban_book.csv 文件。
import pandas as pd
df = pd.read_csv('douban_book.csv.gz', compression='gzip')
print(len(df))
df
Run
33941454
2.2 所含字段
for col in df.columns:
print(f' - {col}')
Run
- tag 标签
- book_name 书名
- user_name 书评人
- date 书评发布日期
- comment 书评内容
- star 评分(1-5)
- vote_count 书评获赞数
2.3 覆盖日期
书评发布日期覆盖(最早~ 最晚)
df['date'] = pd.to_datetime(df['date'])
print(df['date'].min())
print(df['date'].max())
Run
2005-06-12 00:00:00
2018-10-13 00:00:00
2.4 标签
print(df.tag.nunique())
print(df.tag.unique())
Run
120
['思想' '科技' '金融' '政治学' '随笔' '爱情' '名著' '幾米' '人文' '交互' '悬疑' '算法' '哲学' '艺术史'
'历史' '用户体验' '绘画' '诗词' '考古' '心理学' '互联网' '戏剧' '安妮宝贝' '艺术' '东野圭吾' '散文' '魔幻'
'童话' '商业' 'UCD' '日本文学' '武侠' '音乐' '通信' '科幻小说' '科普' '程序' '生活' '张悦然' '经济'
'小说' '科幻' '军事' '心理' '文学' '电影' '社会学' '广告' '管理' '励志' '耽美' '郭敬明' '穿越'
'阿加莎·克里斯蒂' '杂文' '传记' '韩寒' '设计' '落落' '言情' '职场' '成长' '佛教' '女性' '政治' '近代史'
'营销' '推理小说' '建筑' '经典' '外国名著' '二战' '鲁迅' 'J.K.罗琳' '奇幻' '外国文学' '校园' '人物传记'
'西方哲学' '自由主义' '文化' '旅行' '张小娴' '企业史' '国学' '摄影' '亦舒' '青春' '科学' '策划' 'web'
'创业' '美术' '宗教' '古龙' '沧月' '村上春树' '社会' '股票' '理财' '日本漫画' '轻小说' '数学' '神经网络'
'网络小说' '当代文学' '中国历史' '三毛' '回忆录' '古典文学' '交互设计' '推理' '高木直子' '中国文学' '青春文学'
'金庸' 'UE' '投资' '编程' '几米']
2.5 可视化
书评发布数量随年份变化
import matplotlib.pyplot as plt
import matplotlib
import matplotlib_inline
matplotlib_inline.backend_inline.set_matplotlib_formats('png', 'svg')
import scienceplots
import platform
#初始化matplotlib汉化美化配置
plt.style.use(['science', 'no-latex', 'cjk-sc-font'])
system = platform.system() # 获取操作系统类型
if system == 'Windows':
font = {'family': 'SimHei'}
elif system == 'Darwin':
font = {'family': 'Arial Unicode MS'}
else:
font = {'family': 'sans-serif'}
matplotlib.rc('font', **font) # 设置全局字体
#构造数据
date_series = []
volume_series = []
for date, year_df in df.groupby(pd.Grouper(key='date', freq='M')):
#这里的date, month_df都是特殊数据类型
date_series.append(date.date())
volume_series.append(len(year_df))
volume_by_time_df = pd.DataFrame({'date': date_series, 'volume': volume_series})
volume_by_time_df['date'] = pd.to_datetime(volume_by_time_df['date'])
#开始绘图
plt.figure(figsize=(10, 5))
plt.plot(volume_by_time_df.date,
volume_by_time_df.volume,
linestyle = '--')
plt.scatter(volume_by_time_df.date,
volume_by_time_df.volume,
s=8)
plt.title('豆瓣读书随年份书评数量变化(2005.6.12 ~ 2018.10.13)',
fontsize=10)
plt.xlabel('日期')
plt.ylabel('书评数量')
plt.savefig('plot.png', dpi=200)
plt.show()
三、相关内容
四、获取数据
douban-book 链接: https://pan.baidu.com/s/1qySKU_0dsoi1NAF9lQ971w?pwd=n5qe 提取码: n5qe