Python入门买哪本书?分析6000本Python书籍告诉你答案!_数据分析

(图片来源于网络)

大家好,我是辰哥~

上面这张图是今年9月TIOBE 统计编程语言排行榜,

可以看到Python已经跃居第二,

一旦超越c语言排名第一,将会成为编程语言发展史的一个重要时刻

现在也越来越多的人在开始学习Python

相信大家在学习Pythond的时候都会面临一个这样的问题

应该买哪本python书?

辰哥通过采集6000本网上在售的Python书籍

包括(书名-价格-出版社-出版时间-销量)

Python入门买哪本书?分析6000本Python书籍告诉你答案!_数据可视化_02

通过可视化分析看看哪本书籍是适合你的?是销量?还是书名?还是值得信赖的出版社?还是价格区间?

采集数据

Python入门买哪本书?分析6000本Python书籍告诉你答案!_数据分析_03

Python入门买哪本书?分析6000本Python书籍告诉你答案!_python_04

共有100页,每页60条

一共6000条数据(本书)

分析网页

Python入门买哪本书?分析6000本Python书籍告诉你答案!_数据挖掘_05

每一页的60本书籍信息都在一个个的li标签中

Python入门买哪本书?分析6000本Python书籍告诉你答案!_数据挖掘_06

比如这里本书籍,查看网页源代码可以对应的书名存在哪个网页标签等

大图

Python入门买哪本书?分析6000本Python书籍告诉你答案!_人工智能_07

url="http://search.dangdang.com/?key=python&act=input&page_index="+str(page)
res = requests.get(url,headers=headers)
text = res.text
selector = etree.HTML(text)
li_list = selector.xpath('//*[@id="component_59"]/li')
print("page="+str(page),len(li_list))
for i in li_list:
title = i.xpath('.//p[@class="name"]/a/@title')[0]
price = i.xpath('.//p[@class="price"]/span/text()')[0].replace("¥","")
date = i.xpath('.//p[@class="search_book_author"]/span[2]/text()')
out = i.xpath('.//p[@class="search_book_author"]/span[3]/a/text()')
sale = i.xpath('.//p[@class="search_star_line"]/a/text()')

其中page分别1,2,3,4...,表示第几页

最终采集了6000本书

Python入门买哪本书?分析6000本Python书籍告诉你答案!_数据挖掘_08

可视化分析

Python入门买哪本书?分析6000本Python书籍告诉你答案!_数据分析_09

A.书名词云图

从csv中提取出书名一列,进行绘制词云图

Python入门买哪本书?分析6000本Python书籍告诉你答案!_数据挖掘_10

可以看到大部分书名都含有入门以及编程这两个关键词

辰哥猜测是这类命名对于小白来说可能更加有吸引力

此外,目前python在机器学习(人工智能)领域非常热门,相关书籍也随之增加

接着是爬虫、书籍分析、自动化办公等

B.每年出版python书籍数量

从csv中读取出出版时间一列

统计每一本书的出版年份

绘制折线图

time = df["出版时间"].tolist()
dict = {}
for j in [str(i)[0:4] for i in time]:
if(j!="nan"):
try:
dict[str(j)] = dict[str(j)] + 1
except:
dict[str(j)] = 1
dict = sorted(Counter(dict).items(), key=lambda x: x[0], reverse=False)
key = [i[0] for i in dict]
value = [i[1] for i in dict]
c = (
Line()
.add_xaxis(key)
.add_yaxis("每年出版Python书籍数量", value, is_smooth=True)
.set_global_opts(title_opts=opts.TitleOpts(title="数量(Python研究者)"))
.render("line_smooth.html")
)

Python入门买哪本书?分析6000本Python书籍告诉你答案!_人工智能_11

可以看到在09年之前,每年出版的Python书籍只有十几到几十本只有

在2010年突发猛增到311本。

辰哥查了一下原因:

2010是python第二次火遍全球,是因为OpenStack是一以Python编程语言编写的项目,Python在2010再次火了起来

(OpenStack具体是什么,大家都搜索了解一下)

随后有开始沉默了下去,到2016年至现在,Python的热度就一直不下,迅速猛增~~~

可以看到通过每年出版的Python书籍数量来看,python一直以来的火热程度及增长趋势

C.出版社出版python书籍数量排名

从csv中读取出出版社一列

统计每一本书的属于哪家出版社并累计

out = df["出版社"].tolist()
dict = {}
for j in [str(i) for i in out]:
if(j!="nan"):
try:
dict[str(j)] = dict[str(j)] + 1
except:
dict[str(j)] = 1
dict = sorted(Counter(dict).items(), key=lambda x: x[1], reverse=True)

Python入门买哪本书?分析6000本Python书籍告诉你答案!_人工智能_12

出版Python书籍的出版社太多了

这里辰哥只取前10名的出版进行绘制柱状图

Python入门买哪本书?分析6000本Python书籍告诉你答案!_人工智能_13

D.Python书籍售价区间

从csv中读取出价格一列

统计价格区间

30以下/[30-50)/[50-70)

[70-100)/[100-120)/[120-150)

[150以上)

out = df["价格"].tolist()
dict = {"30以下":0,"[30-50)":0,"[50-70)":0,
"[70-100)":0,"[100-120)":0,"[120-150)":0,
"[150以上":0}
for j in out:
if(j!="nan"):
if(int(j)<30):
dict['30以下'] = dict['30以下']+1
elif((int(j)<50)):
dict['[30-50)'] = dict['[30-50)'] + 1
elif ((int(j) < 70)):
dict['[50-70)'] = dict['[50-70)'] + 1
elif ((int(j) < 100)):
dict['[70-100)'] = dict['[70-100)'] + 1
elif ((int(j) < 120)):
dict['[100-120)'] = dict['[100-120)'] + 1
elif ((int(j) < 150)):
dict['[120-150)'] = dict['[120-150)'] + 1
else:
dict['[150以上'] = dict['[150以上'] + 1
dict = sorted(Counter(dict).items(), key=lambda x: x[1], reverse=True)
key = [i[0] for i in dict]
value = [i[1] for i in dict]

Python入门买哪本书?分析6000本Python书籍告诉你答案!_数据挖掘_14

从图上也可以看到,价格区间越往后,销量也低(30元以下除外)

价格在50-70左右正合适,因此销量相对较佳

最后

1.本文分享了如何进行采集数据,以及对采集的数据进行可视化分析

2.针对6000本Python书籍销量等情况进行分析,分析结果仅出自个人观点,仅供参考

3. 本文仅供学习参考,不做它用。



​8个很少用,但却很好用的 Python 库,一起来看看吧​

​2021-09-28​

Python入门买哪本书?分析6000本Python书籍告诉你答案!_数据挖掘_15



​JupyterLab 出 Windows 桌面版了!​

​2021-09-27​

Python入门买哪本书?分析6000本Python书籍告诉你答案!_数据分析_16



​10个超级实用的Python小技巧,可直接套用,省时又省力!​

​2021-09-26​

Python入门买哪本书?分析6000本Python书籍告诉你答案!_人工智能_17