豆瓣读书数据分析实战
生活随笔
收集整理的這篇文章主要介紹了
豆瓣读书数据分析实战
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
數(shù)據(jù)爬取請參考:
Python分布式爬蟲實(shí)戰(zhàn) - 豆瓣讀書
本次分析內(nèi)容:
為了每段代碼都可復(fù)制直接使用,所以每段代碼都重復(fù)導(dǎo)入一次pyecharts 模塊…
# 首先導(dǎo)入需要用到的模塊 import pandas as pd import numpy as np import pymysql,re import matplotlib.pyplot as plt %matplotlib inline- 讀取數(shù)據(jù)庫數(shù)據(jù)
- 去重
1.分析所有書籍評分情況
- 對評分進(jìn)行分組,并對評分進(jìn)行統(tǒng)計(jì)
- 散點(diǎn)圖
- 使用柱狀圖展示更為清晰
可以看出評分大部分集中在8.0-8.9之間
2.熱門書籍TOP20
- 柱狀圖展示,按熱門評論排行
- 平行多維曲線圖
3.書名高頻詞匯
import jieba,re from wordcloud import WordCloud from PIL import Image from collections import Counter # 所有書名合并成一條字符串 names = "".join(datum.name) # 按非字符分割字符串,目的是去除字符以外的標(biāo)點(diǎn)符號 names = "".join(re.split("\W",names)) # 分詞 split_name = jieba.lcut(names) # 為了更好的展示效果,這里把長度為1的詞過濾掉 split_name = [i for i in split_name if len(i) > 1] # 用空格分隔開每個(gè)詞語 words = " ".join(split_name) # 加載圖片 img = np.array(Image.open(r"e:/files/11.jpg")) w = WordCloud(# 注意中文需要配置字體font_path=r"e:/files/PingFang.otf",# 指定生成圖片形狀mask=img ) # 生成詞云 w.generate(words) # 配置圖像大小 plt.figure(figsize=(15,15),dpi=80) # 關(guān)閉軸顯示 plt.axis("off") # 在 jupyter notebook中展示 plt.imshow(w)- 最總效果
- 柱狀圖展示高頻詞TOP20
4.作者出版書數(shù)量TOP20
# 復(fù)制數(shù)據(jù) datum = douban_data.loc[:,["author","name"]] # 刪除空值 datum = datum.loc[datum["author"].notnull()] # 按作者名稱分組,統(tǒng)計(jì)數(shù)量,倒序排序,取前20名 temp = datum.groupby("author").count().sort_values("name",ascending=False)[:20] # 這里再進(jìn)行排序是為了圖片展示時(shí)最大值排第一個(gè),最小值排最后一個(gè),實(shí)屬為了展示效果 temp.sort_values("name",inplace=True) # 柱狀圖(除了要更換數(shù)據(jù),基本繪圖代碼沒什么變化) publish_bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK)) publish_bar.add_xaxis(temp.index.tolist()) publish_bar.add_yaxis("publish",temp.name.values.tolist()) publish_bar.reversal_axis() publish_bar.set_series_opts(# 每條柱子顯示數(shù)值配置# 位置可選# top,left,right,bottom,inside,insideLeft,insideRight# insideTop,insideBottom, insideTopLeft,insideBottomLeft# insideTopRight,insideBottomRightlabel_opts=opts.LabelOpts(position="right") ) publish_bar.render_notebook()5.每年出版書籍?dāng)?shù)量分布
# 老規(guī)矩,先復(fù)制需要的數(shù)據(jù) datum = douban_data.loc[:,["name","date"]] # 刪除空值數(shù)據(jù) datum = datum.loc[datum["date"].notnull()] # 按年份分組,排序,取前50個(gè)數(shù)據(jù) temp = datum.groupby("date").count().sort_values("name",ascending=False)[:50] # 按年份排序 temp.sort_values("date",inplace=True) # 繪制曲線圖 from pyecharts.charts import Line publish_book_line = Line(init_opts=opts.InitOpts(theme=ThemeType.ESSOS)) publish_book_line.add_xaxis(temp.index.tolist()) publish_book_line.add_yaxis("Quantity for every year",temp.name.values.tolist()) publish_book_line.set_global_opts(title_opts=opts.TitleOpts(title="Publish books of year"),datazoom_opts=opts.DataZoomOpts(is_show=True), ) publish_book_line.set_series_opts(markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="max",name="最大值"),opts.MarkLineItem(type_="min",name="最小值"),opts.MarkLineItem(type_="average",name="平均值") ]) ) publish_book_line.render_notebook()6.熱評作者TOP20
# 復(fù)制數(shù)據(jù) datum = douban_data.loc[:,["score","author","rating_count"]] # 刪除作者為空的數(shù)據(jù) datum = datum.loc[datum["author"].notnull()] # 刪除評分為空的數(shù)據(jù) datum = datum.loc[datum["score"].notnull()] # 按作者名稱分組取評分均值 temp = datum.groupby("author").mean() # 刪除評分均值為空的行 temp = temp.loc[temp.score.notnull()] top20 = temp.sort_values("rating_count",ascending=False)[:20] top20.sort_values("rating_count",ascending=False) # 柱狀圖 hot_rating_bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION)) hot_rating_bar.add_xaxis(top20.index.tolist()) hot_rating_bar.add_yaxis("Rating agerage",top20.rating_count.round().tolist())hot_rating_bar.set_series_opts(# 標(biāo)簽的位置。可選# top,left,right,bottom,inside,insideLeft,insideRight# insideTop,insideBottom, insideTopLeft,insideBottomLeft# insideTopRight,insideBottomRightlabel_opts=opts.LabelOpts(position="insideRight") ) hot_rating_bar.reversal_axis() hot_rating_bar.render_notebook()7.每年出版最受歡迎的類別
# 復(fù)制數(shù)據(jù) datum = douban_data.loc[:,["date","rating_count","type","name"]] # 刪除年份和總評論空值 datum.dropna(axis=0,inplace=True) temp = datum.groupby("date").max().sort_values("rating_count",ascending=False)[:20] temp.sort_values("date",ascending=False)8.書籍最多的分類TOP20
# 復(fù)制資料 datum = douban_data.loc[:,["type","name"]] temp = datum.groupby("type").count().sort_values("name",ascending=False)[:20] # 柱狀圖 from pyecharts.charts import Bar from pyecharts import options as opts from pyecharts.globals import ThemeType type_top20_bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK)) type_top20_bar.add_xaxis(temp.index.tolist()) type_top20_bar.add_yaxis("Most books categories",temp.name.values.tolist()) type_top20_bar.set_global_opts(datazoom_opts=opts.DataZoomOpts(is_show=True) ) type_top20_bar.set_series_opts(# 關(guān)閉標(biāo)簽顯示label_opts=opts.LabelOpts(is_show=False),# 設(shè)置標(biāo)記選項(xiàng)markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max",name="最大值"),opts.MarkPointItem(type_="min",name="最小值"),opts.MarkPointItem(type_="average",name="平均值")]) ) type_top20_bar.render_notebook()9.熱評分類TOP20
# 復(fù)制資料 datum = douban_data.loc[:,["type","rating_count"]] # 刪除空值 datum.dropna(inplace=True) temp = datum.groupby("type").mean().round(2).sort_values("rating_count",ascending=False)[:20] # 制圖 from pyecharts.charts import Bar from pyecharts import options as opts from pyecharts.globals import ThemeType rating_top20_bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.ESSOS)) rating_top20_bar.add_xaxis(temp.index.tolist()) rating_top20_bar.add_yaxis("Hot type top 20",temp.rating_count.tolist()) rating_top20_bar.set_global_opts(title_opts=opts.TitleOpts(title="熱評分類TOP20"),datazoom_opts=opts.DataZoomOpts(is_show=True) ) rating_top20_bar.set_series_opts(markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="max",name="最大值"),opts.MarkLineItem(type_="min",name="最小值"),opts.MarkLineItem(type_="average",name="平均值")]) ) rating_top20_bar.render_notebook()最后總結(jié):
1.大部分書籍評分都在8.0-8.9之間
2.評論最多的書包括追風(fēng)箏人、解憂的雜貨店、白夜行等,評分都在8.1分以上
3.書名中高頻熱詞前3甲中國、世界、藝術(shù)
4.出書前3甲第一名是加拿大人士亦舒先生,出書243本(可能還不止),五體投地啊!
5.可以看出每年出書量都在穩(wěn)步上漲
6.作者熱評前3甲:[清]曹雪芹著/高鶚續(xù)、柴靜、[美]卡勒德·胡賽尼
7.最多書籍的分類前3:建筑,詩歌,數(shù)學(xué)
8.評論最高實(shí)屬中國文學(xué)類
最后附上數(shù)據(jù)庫文件
鏈接:https://pan.baidu.com/s/19VNdu7n8F7JpuqXQYPbPDg
提取碼:nlv5
總結(jié)
以上是生活随笔為你收集整理的豆瓣读书数据分析实战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 问卷设计注意事项
- 下一篇: 机组组合问题常用术语