分析数据:深入篇

本次主要目的是将数据分析展示出来,分析的数据是['北京二手手机', '北京二手笔记本', '北京二手电脑']三项在连续七天内的发帖量。

成果:


取三种商品在过去7天内的发帖量

代码:
这里有几个步骤

  • 处理数据

1.自己的数据有些问题,首先这个cate类自己是['北京二手','北京二手手机','北京二手手机详情'],这样的话在以后find()的时候会有困难,所以就净化了数据,提取索引为1的替换掉整个list

# 将cate中的数据切片出去,原先的数据有3个,取第2个,来代替所有的
for i in item_info.find({}, {'cate': {'$slice': [2,1]}}):
    cate = i['cate']
    item_info.update_one({'_id':i['_id']}, {'$set': {'cate': cate}})
# 注意这个update更改数据库的操作
# 个人觉得这个'_id': i['_id']很巧妙地把所有的数据都选中了

2.日期有点问题,我的是[month-day],但是如果不是[year-month-day]格式,在之后用date函数的时候会多些处理,所以就通过更改数据库变成标配:

# 日期原先是[month, day]格式,现在转为[年,月,日]格式,便于之后的套路
for i in item_info.find({}, {'time': 1}):
    time = '2016-'+ i['time']
    item_info.update_one({'_id':i['_id']}, {'$set': {'time': time}})

期间发现少量数据没有日期,就删除掉了,如下:

for i in item_info.find({},{'time': 1}):
    if len(i['time']) <= 1:
        item_info.delete_one(i)

其实觉得这个操作有风险,后来想了想,其实无所谓啊,如果日期没有那就选不到啊,删除没什么用

  • 构造生成器函数

1.日期输出的生成器

# 函数大概的意思就是输出str日期(计算机只知道它是字符串),经过转化输出日期(依旧是字符串)
# 但是不同的是,输入的str经过data一系列的处理,计算机知道这是日期了
# 对于之后的日期操作就方便多了
def get_all_dates(date1, date2):
    the_date = date(int(date1.split('-')[0]), int(date1.split('-')[1]), int(date1.split('-')[2]))
    end_date = date(int(date2.split('-')[0]), int(date2.split('-')[1]), int(date2.split('-')[2]))
    days = timedelta(days=1)
    
    while the_date <= end_date:
        # strftime是格式化输出函数
        yield (the_date.strftime('%Y-%m-%d'))
        the_date = the_date + days

2.构造指定商品的生成器

def get_data_within(date1, date2, cates):
    for cate in cates:
        cate_day_posts = []
        for date in get_all_dates(date1, date2):
            a = list(item_info.find({'time': date, 'cate': cate}))
            each_day_post = len(a)
            # 统计所有cate类的特定日期下的发帖数量
            cate_day_posts.append(each_day_post)
        # 这里的data组装为了highcharts的使用
        data = {
            'name': cate,
            'data': cate_day_posts,
            'type': 'line'
        }
        yield data

3.输出数据

options = {
    'chart': {'zoomType': 'xy'},
    'title': {'text': '发帖量统计'},
    'subtitle': {'text': '可视化统计图标'},
    # 这里列表是坐标横轴的名称,就用生成器给个日期轴
    'xAxis': {'categories': [i for i in get_all_dates('2016-08-08', '2016-08-15')]},
    'yAxis': {'title': {'text': '数量'}}
}

series = [i for i in get_data_within('2016-08-08', '2016-08-15', ['北京二手手机','北京二手笔记本','北京二手电脑'])]

charts.plot(series, options=options, show='inline')

发现生成器真是个好东西!

新技能GET:

1.collection.find({}, {})
第一个{}中填写匹配的项目如{’name‘: 'long'},然后通过迭代就出现所有匹配的document,第二个{}是填写需要显示的项目,通过布尔值来告诉软件是显示还是不显示,0代表不显示,1代表显示,缺省默认是1,如:
item_info.find({'cate': '北京二手笔记本'},{'_id': 0, 'url': 0, 'state': 0, 'time': 0}),
这些操作不会对数据库造成影响。
2.from datetime import date
中,date(2016,2,3)会生成2016.2.3,这个是系统能识别的时间
3.切片使用
数据库item_info有个元素是'cate': ['0','1','2','3'],只是想显示'2'怎么办呢?
item_info.find({},{'cate': {$slice: [index1,index2]}})
这样,index1表示从哪个索引开始,index2表示从开始的地方选取几个,包括开始的元素。如选取'2',就是[2,1],如果选取'1','2',就是[1,2]
这种形式的切片是很多数据库用的,跟Python切片还不大一样

天坑:

本次没有,基本就是数据库格式的不对劲而引起的,以后注意就行

总结:

还是套路,
唯一要掌握并多多练习的东西就是:数据都有了,怎么去构造自己想要的信息?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,123评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,031评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,723评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,357评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,412评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,760评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,904评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,672评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,118评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,456评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,599评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,264评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,857评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,731评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,956评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,286评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,465评论 2 348

推荐阅读更多精彩内容