在数据分析师的分析中豆瓣的书那些值得读
2018-11-24 本文已影响14人
数据运营python
最近总是有人问我有什么书好推荐看看,特烦。但是看到那么多人问,看来挺多人有这个需求,便想了一下,如何通过数据分析找到值得看的书。通过爬取某个标签例如产品,运营获取对应已经打了标签的书,获取书对应的评分以及评价的用户数,通过获取评分最高的30本书和评价人数最多的30本书进行交集的处理,获取出来的综合指数比较高,得到的结果就是评价人数比较多且评分高的书。小编只是对产品,运营,心理学,python,数据分析,算法 这6个方面感兴趣,分享一下这六个方面的值得读的书,想知道其他方面的,也可以在评论下面发一下。
1. 处理过程
爬虫主要用到python的scrapy爬虫框架,下面是爬取数据的处理逻辑
class doubanSpider(scrapy.Spider):
name = "douban"
#要爬取的链接
start_urls = [
u"https://book.douban.com/tag/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90"
]
def parse(self, response):
#获取列表的结构
list=response.xpath('//*[@id="subject_list"]/ul/li')
for info in list:
book_name=info.xpath('div[2]/h2/a/text()').extract_first()
url=info.xpath('div[2]/h2/a/@href').extract_first()
score=info.xpath('div[2]/div[2]/span[2]/text()').extract_first()
count=info.xpath('div[2]/div[2]/span[3]/text()').extract_first()
l=JobItemLoad(JobItem())
if score is not None:
l.add_value('score', score.strip())
if count is not None:
l.add_value('count', count.strip())
l.add_value('book_name', book_name.strip())
l.add_value('url', url.strip())
yield l.load_item()
#获取下一页的链接
next_url=response.css('#subject_list > div.paginator > span.next > a::attr(href)').extract_first();
if next_url:
yield scrapy.Request('https://book.douban.com'+next_url,callback=self.parse)
爬取后的格式如下:
部分结果
对爬取后的数据进行处理:
import pandas as pd
def fromCsv(fileName):
data = pd.read_csv(fileName,encoding = "ISO-8859-1")
return data
def toCsv(data,file_name):
data.to_csv(file_name, encoding="ISO-8859-1")
if __name__ == '__main__':
#要处理的文件的名称
csv_names=[u'douban_analysis',u'douban_arithmetic',u'douban_psychology',u'douban_operate',u'douban_prod',u'douban_python']
for name in csv_names:
#从csv文件读取数据
data=fromCsv(f"{name}.csv")
#分别按评分,数量进行排序后,获取前30个数据
count_df=data.sort_values('count', ascending=False).iloc[0:30]
score_df=data.sort_values('score', ascending=False).iloc[0:30]
#对两个数据进行交集的处理获取结果
result_df=count_df[count_df["book_name"].isin(score_df['book_name'].tolist())]
toCsv(result_df.sort_values('score', ascending=False), f"{name}_result.csv")
2. 结果
2.1 产品
书名 | 评价人数 | 评分 |
---|---|---|
浪潮之巅 | 19783 | 9.1 |
2.2 运营
书名 | 评价人数 | 评分 |
---|---|---|
孵化皮克斯 | 336 | 8.9 |
我看电商 | 1058 | 8.3 |
SEO实战密码 | 764 | 8.3 |
数据化管理 | 411 | 8.3 |
精益数据分析 | 563 | 8.2 |
运营之光 | 1939 | 8.1 |
你凭什么做好互联网 | 617 | 8.1 |
2.3 心理学
书名 | 评价人数 | 评分 |
---|---|---|
对伪心理学说不 | 3297 | 9.2 |
社会性动物 | 5564 | 9.1 |
灯塔 | 4526 | 9.1 |
社会心理学 | 11765 | 9 |
2.4 python
书名 | 评价人数 | 评分 |
---|---|---|
流畅的Python | 291 | 9.4 |
Hands-On Machine Learning with Scikit-Learn and TensorFlow | 237 | 9.3 |
Python编程:从入门到实践 | 1000 | 9.1 |
Python编程快速上手 | 359 | 9 |
A Byte of Python | 1104 | 8.7 |
Python源码剖析 | 708 | 8.7 |
Flask Web开发:基于Python的Web应用开发实战 | 478 | 8.7 |
Python Tutorial | 193 | 8.7 |
Python Cookbook | 341 | 8.6 |
Dive Into Python 3 | 175 | 8.6 |
Think Python | 218 | 8.3 |
2.5 数据分析
书名 | 评价人数 | 评分 |
---|---|---|
The Elements of Statistical Learning | 509 | 9.5 |
概率论与数理统计 | 569 | 9.4 |
行为科学统计 | 454 | 9.4 |
2.6 算法
书名 | 评价人数 | 评分 |
---|---|---|
具体数学(英文版第2版) | 813 | 9.5 |
算法(第4版) | 846 | 9.4 |
计算机程序设计艺术(第1卷) | 449 | 9.4 |
算法导论(原书第2版) | 4788 | 9.3 |
数据结构 | 1235 | 7.1 |
3. 结论
其中产品,心理学 在评分前30,评价人数前30的交集为0,产品是调整为前50的数据,心理学是调整为前100的数据,说明偏主观的书的综合评分的可信度比技术类的书差一些。