3-2homework

结果


结果统计1.png
结果统计2.png

代码



# coding: utf-8


import pymongo
import charts

client = pymongo.MongoClient('localhost', 27017)
ganji = client['ganji']
item_info = ganji['item_info']

for i in item_info.find().limit(300):
    # print(i['cate'][0])
    pass

cates = []
for i in item_info.find():
    cates.append(i['cate'][0])
cates_sets = list(set(cates))
# print(cates_sets)


post_times = []
for index in cates_sets:
    post_times.append(cates.count(index))
# print(post_times)

def data_gen(type):
    for cate, times in zip(cates_sets, post_times):
        data = {
            'name': cate,
            'data':[times],
            'type':type
        }
        yield data

series = [data for data in data_gen('column')]
charts.plot(series, show='inline', options=dict(title=dict(text='各分类发帖量对比汇总')))

总结

1. 思路

由于原始代码的爬取逻辑问题,爬取到cates并不是大分类中的cates。

cates.png

所以只能根据item_info中的cates,取出第一个元素(主分类),来大致看出分类发帖量情况。

2. set 、count 进阶用法

cates_sets = list(set(cates)) // 重复数组 变成 无重复数组
// 查看各cate在重复数组中的重复次数

for index in cates_sets:
    print( cates.count(index) )

3. yield

先看一个简单的例子:

def count(n): 
    print ("cunting" )
    while n > 0: 
        # print ('before yield') 
        yield n   #生成值:n 
        n -= 1 
        # print ('after yield' )

for x in count(5):
    print(x)

这算是py语言中, 比较诡异的一种.
for in 中可以 直接取 count(5)中的值, 说明函数返回值是一个list, 否则无法取值.
其实可以先想想在oc中是如何实现的, 肯定是在定义count函数最后, return一个数组.
但是py中追求极简的语法表达方式, 使用 yield 语法会生成一个迭代对象, 可以理解为就是存到了一个list中,
并且循环会接着往下进行.

// 本例中的使用
def data_gen(type):
    for cate, times in zip(cates_sets, post_times):
        data = {
            'name': cate,
            'data':[times],
            'type':type
        }
        yield data

// 这里的意思就是,调用这个函数后,会return一个含有多个格式化好的data数组
// 所以下面才可以这样调用:

series = [data for data in data_gen('column')]

4. 结果数据分析

  • 数据分析表
分类 帖子数量
QQ号码 2878
笔记本电脑 1485
手表 1709
电脑包 955
家畜/家禽 1262
钢琴 1184
虚拟物品 1099
农用机械 1074
家具转让 1550
手机 1881
苗木 1644

有了大数据作支撑,二手卖家该卖什么就知道了吧~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容