分析數(shù)據(jù):深入篇

本次主要目的是將數(shù)據(jù)分析展示出來,分析的數(shù)據(jù)是['北京二手手機(jī)', '北京二手筆記本', '北京二手電腦']三項(xiàng)在連續(xù)七天內(nèi)的發(fā)帖量移迫。

成果:


取三種商品在過去7天內(nèi)的發(fā)帖量

代碼:
這里有幾個(gè)步驟

  • 處理數(shù)據(jù)

1.自己的數(shù)據(jù)有些問題旺嬉,首先這個(gè)cate類自己是['北京二手','北京二手手機(jī)'起意,'北京二手手機(jī)詳情']鹰服,這樣的話在以后find()的時(shí)候會有困難,所以就凈化了數(shù)據(jù)揽咕,提取索引為1的替換掉整個(gè)list

# 將cate中的數(shù)據(jù)切片出去,原先的數(shù)據(jù)有3個(gè),取第2個(gè)套菜,來代替所有的
for i in item_info.find({}, {'cate': {'$slice': [2,1]}}):
    cate = i['cate']
    item_info.update_one({'_id':i['_id']}, {'$set': {'cate': cate}})
# 注意這個(gè)update更改數(shù)據(jù)庫的操作
# 個(gè)人覺得這個(gè)'_id': i['_id']很巧妙地把所有的數(shù)據(jù)都選中了

2.日期有點(diǎn)問題亲善,我的是[month-day],但是如果不是[year-month-day]格式,在之后用date函數(shù)的時(shí)候會多些處理逗柴,所以就通過更改數(shù)據(jù)庫變成標(biāo)配:

# 日期原先是[month, day]格式蛹头,現(xiàn)在轉(zhuǎn)為[年,月戏溺,日]格式渣蜗,便于之后的套路
for i in item_info.find({}, {'time': 1}):
    time = '2016-'+ i['time']
    item_info.update_one({'_id':i['_id']}, {'$set': {'time': time}})

期間發(fā)現(xiàn)少量數(shù)據(jù)沒有日期,就刪除掉了旷祸,如下:

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

其實(shí)覺得這個(gè)操作有風(fēng)險(xiǎn)耕拷,后來想了想,其實(shí)無所謂啊托享,如果日期沒有那就選不到啊骚烧,刪除沒什么用

  • 構(gòu)造生成器函數(shù)

1.日期輸出的生成器

# 函數(shù)大概的意思就是輸出str日期(計(jì)算機(jī)只知道它是字符串),經(jīng)過轉(zhuǎn)化輸出日期(依舊是字符串)
# 但是不同的是闰围,輸入的str經(jīng)過data一系列的處理赃绊,計(jì)算機(jī)知道這是日期了
# 對于之后的日期操作就方便多了
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是格式化輸出函數(shù)
        yield (the_date.strftime('%Y-%m-%d'))
        the_date = the_date + days

2.構(gòu)造指定商品的生成器

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)
            # 統(tǒng)計(jì)所有cate類的特定日期下的發(fā)帖數(shù)量
            cate_day_posts.append(each_day_post)
        # 這里的data組裝為了highcharts的使用
        data = {
            'name': cate,
            'data': cate_day_posts,
            'type': 'line'
        }
        yield data

3.輸出數(shù)據(jù)

options = {
    'chart': {'zoomType': 'xy'},
    'title': {'text': '發(fā)帖量統(tǒng)計(jì)'},
    'subtitle': {'text': '可視化統(tǒng)計(jì)圖標(biāo)'},
    # 這里列表是坐標(biāo)橫軸的名稱,就用生成器給個(gè)日期軸
    'xAxis': {'categories': [i for i in get_all_dates('2016-08-08', '2016-08-15')]},
    'yAxis': {'title': {'text': '數(shù)量'}}
}

series = [i for i in get_data_within('2016-08-08', '2016-08-15', ['北京二手手機(jī)','北京二手筆記本','北京二手電腦'])]

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

發(fā)現(xiàn)生成器真是個(gè)好東西羡榴!

新技能GET:

1.collection.find({}, {})
第一個(gè){}中填寫匹配的項(xiàng)目如{’name‘: 'long'}碧查,然后通過迭代就出現(xiàn)所有匹配的document,第二個(gè){}是填寫需要顯示的項(xiàng)目校仑,通過布爾值來告訴軟件是顯示還是不顯示忠售,0代表不顯示者冤,1代表顯示,缺省默認(rèn)是1档痪,如:
item_info.find({'cate': '北京二手筆記本'},{'_id': 0, 'url': 0, 'state': 0, 'time': 0}),
這些操作不會對數(shù)據(jù)庫造成影響涉枫。
2.from datetime import date
中,date(2016,2,3)會生成2016.2.3腐螟,這個(gè)是系統(tǒng)能識別的時(shí)間
3.切片使用
數(shù)據(jù)庫item_info有個(gè)元素是'cate': ['0','1','2','3']愿汰,只是想顯示'2'怎么辦呢?
item_info.find({},{'cate': {$slice: [index1,index2]}})
這樣乐纸,index1表示從哪個(gè)索引開始衬廷,index2表示從開始的地方選取幾個(gè),包括開始的元素汽绢。如選取'2'吗跋,就是[2,1],如果選取'1','2'宁昭,就是[1,2]
這種形式的切片是很多數(shù)據(jù)庫用的跌宛,跟Python切片還不大一樣

天坑:

本次沒有,基本就是數(shù)據(jù)庫格式的不對勁而引起的积仗,以后注意就行

總結(jié):

還是套路疆拘,
唯一要掌握并多多練習(xí)的東西就是:數(shù)據(jù)都有了,怎么去構(gòu)造自己想要的信息寂曹?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哎迄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子隆圆,更是在濱河造成了極大的恐慌漱挚,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渺氧,死亡現(xiàn)場離奇詭異旨涝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)阶女,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門颊糜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人秃踩,你說我怎么就攤上這事衬鱼。” “怎么了憔杨?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵鸟赫,是天一觀的道長。 經(jīng)常有香客問我,道長抛蚤,這世上最難降的妖魔是什么台谢? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮岁经,結(jié)果婚禮上朋沮,老公的妹妹穿的比我還像新娘。我一直安慰自己缀壤,他們只是感情好樊拓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著塘慕,像睡著了一般筋夏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上图呢,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天条篷,我揣著相機(jī)與錄音,去河邊找鬼蛤织。 笑死赴叹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瞳筏。 我是一名探鬼主播稚瘾,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼姚炕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起丢烘,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤柱宦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后播瞳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掸刊,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年赢乓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了忧侧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡牌芋,死狀恐怖蚓炬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情躺屁,我是刑警寧澤肯夏,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響驯击,放射性物質(zhì)發(fā)生泄漏烁兰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一徊都、第九天 我趴在偏房一處隱蔽的房頂上張望沪斟。 院中可真熱鬧,春花似錦暇矫、人聲如沸主之。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杀餐。三九已至,卻和暖如春朱巨,著一層夾襖步出監(jiān)牢的瞬間史翘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工冀续, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留琼讽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓洪唐,卻偏偏與公主長得像钻蹬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子凭需,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容