一、豆瓣读书介绍

数据集: 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



广而告之