【爬虫】-007-Jupyter notebook简单上手-1
2019-01-19 本文已影响6人
9756a8680596
案例
统计赶集网 北京地区 全部分类的发帖量,并在Jupyter notebook中绘制分类发帖量的柱状图
思路
在数据爬取之后,如果需要对数据进行分析,一般需要进行如下步骤:
- 一般来说就是对数据进行整理和清洗
- 然后,更新到数据库中
- 最后,将数据进行可视化操作
本文使用Jupyter notebook来进行数据可视化展示
示例代码
首先链接数据库,访问之前抓取好的赶集网北京地区二手物品类目数据
client = pymongo.MongoClient('localhost', 27017)
ceshi = client['ceshi']
item_info = ceshi['intem_info']
然后,查看类目数据,找到需要的信息,并备份数据到新的数据表中
部分二手物品类目数据
我们可以看到,前两列的数据基本没用,所以用切片处理一下,排除掉前两列数据之后存入备份好的数据表中
如下在Mongo DB中进行操作:
db.createCollection(item_info_backup)
db.item_info.copyTo('item_info_backup')
以下在Jupyter notebook中操作,查看备份数据表
item_info = ceshi['intem_info']
for i in item_info_backup.find():
print(i['cates'])
数据,分析处理好之后,在绘制图表前,先来看看一个示例代码
series = [{
'name': 'Mac',
'data': [10],
'type': 'column'
},{
'name': 'Win',
'data': [20],
'type': 'column'
},{
'name': 'Unix',
'data': [1],
'type': 'column'
}]
charts.plot(series, show='inline', options=dict(title=dict(text='Operating systems')))
操作系统统计示例
我们需要做的便是寻找series中的数据便可以绘制二手物品类目的柱状图统计。
通过观察类目数据,发现一级类目信息是列表的第一个元素,后面的是二级级三级类目。因为需要统计一级类目有多少个吗可以用到集合set()来进行去重
cates_index_temp = []
for i in item_info_backup.find():
cates_index_temp.append(i['cates'][0])
cates_index = list(set(cates_index_temp))
print(cates_index)
这样操作后,去重后的一级类目信息存储在列表cates_list中
然后,需要根据统计不同一级类目的发帖量,这里可以根据一级出现的次数来完成操作。
cates_index_counts = []
for i in cates_index:
cates_index_counts.append(cates_index_temp.count(i))
print(cates_index_counts)
在所有类目信息中,统计符合一级类目的个数即可。
接下来需要构建seris的数据,可以使用yield来进行
def data_gen(types):
length = 0
if length <= len(cates_index):
for index, counts in zip(cates_index, cates_list_temp):
data = {
'name': index,
'data': [counts],
'type': types,
}
yield data
length = length + 1
函数返回的是可迭代对象,需要把每个元素取出来放到绘图函数中使用
series = [i for i in data_gen('column')]
charts.plot(series, show='inline', options=dict(title=dict(text='Catelogs for pre-owned items')))
最后结果如图所示
分类统计结果图.png