美文网首页
3-2homework

3-2homework

作者: OldSix1987 | 来源:发表于2016-08-19 16:37 被阅读28次

结果


结果统计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

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

相关文章

  • 3-2homework

    结果 代码 总结 1. 思路 由于原始代码的爬取逻辑问题,爬取到cates并不是大分类中的cates。 所以只能根...

网友评论

      本文标题:3-2homework

      本文链接:https://www.haomeiwen.com/subject/bopbsttx.html