<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          我用 Python 分析了一波熱賣年貨,原來大家都在買這些東西?

          共 5461字,需瀏覽 11分鐘

           ·

          2021-02-22 01:07


          源?/ 杰哥的IT之旅? ??/?Cherich_sun


          今年不知道有多少小伙伴留在原地過年,雖然今年過年不能回老家,但這個年也得過,也得買年貨,給家人長輩送禮。于是我出于好奇心的想法利用爬蟲獲取某寶數(shù)據(jù),并結(jié)合 Python 數(shù)據(jù)分析和第三方可視化平臺來分析一下大家過年都買了哪些東西,分析結(jié)果大屏如下:

          上面使用清洗好的數(shù)據(jù)后用 finebi 第三方可視化工具完成的。接下來是用 Python 的實現(xiàn)過程,對于本文的敘述,主要分為以下五步:

          • 分析思路

          • 爬蟲部分

          • 數(shù)據(jù)清洗

          • 數(shù)據(jù)可視化及分析

          • 結(jié)論與建議

          1. 分析思路

          其實就今天的數(shù)據(jù)來講,我們主要做的是探索性分析;首先梳理已有的字段,有標(biāo)題(提取出品類)、價格、銷量、店鋪名、發(fā)貨地。下面來做一下詳細(xì)的維度拆分以及可視化圖形選擇:

          品類:

          • 品類銷量的 TOP 10 有哪些?(表格或者橫向條形圖)

          • 熱門(出現(xiàn)次數(shù)最多)品類展示;(詞云)

          價格:年貨的價格區(qū)間分布情況;(圓環(huán)圖,觀察占比)

          銷量、店鋪名:

          • 店鋪銷量最高的 TOP 10 有哪些?(條形圖)

          • 結(jié)合品類做聯(lián)動,比如點堅果,對應(yīng)展示銷量排名的店鋪;(聯(lián)動,利用三方工具)

          發(fā)貨地:銷量最高的城市有哪些?(地圖)

          2. 爬取數(shù)據(jù)

          爬取主要利用 selenium 模擬點擊瀏覽器,前提是已經(jīng)安裝 selenium 和瀏覽器驅(qū)動,這里我是用的 Google 瀏覽器,找到對應(yīng)的版本號后并下載對應(yīng)的版本驅(qū)動,一定要對應(yīng)瀏覽器的版本號。

          pip?install?selenium

          安裝成功后,運行如下代碼,輸入關(guān)鍵字"年貨",進行掃碼就可以了,等著程序慢慢采集。

          #?coding=utf8
          import?re
          from?selenium.webdriver.chrome.options?import?Options
          from?selenium?import?webdriver
          import?time
          import?csv


          #?搜索商品,獲取商品頁碼
          def?search_product(key_word):
          ????#?定位輸入框
          ????browser.find_element_by_id("q").send_keys(key_word)
          ????#?定義點擊按鈕,并點擊
          ????browser.find_element_by_class_name('btn-search').click()
          ????#?最大化窗口:為了方便我們掃碼
          ????browser.maximize_window()
          ????#?等待15秒,給足時間我們掃碼
          ????time.sleep(15)
          ????#?定位這個“頁碼”,獲取“共100頁這個文本”
          ????page_info?=?browser.find_element_by_xpath('//div[@class="total"]').text
          ????#?需要注意的是:findall()返回的是一個列表,雖然此時只有一個元素它也是一個列表。
          ????page?=?re.findall("(\d+)",?page_info)[0]
          ????return?page


          #?獲取數(shù)據(jù)
          def?get_data():
          ????#?通過頁面分析發(fā)現(xiàn):所有的信息都在items節(jié)點下
          ????items?=?browser.find_elements_by_xpath('//div[@class="items"]/div[@class="item?J_MouserOnverReq??"]')
          ????for?item?in?items:
          ????????#?參數(shù)信息
          ????????pro_desc?=?item.find_element_by_xpath('.//div[@class="row?row-2?title"]/a').text
          ????????#?價格
          ????????pro_price?=?item.find_element_by_xpath('.//strong').text
          ????????#?付款人數(shù)
          ????????buy_num?=?item.find_element_by_xpath('.//div[@class="deal-cnt"]').text
          ????????#?旗艦店
          ????????shop?=?item.find_element_by_xpath('.//div[@class="shop"]/a').text
          ????????#?發(fā)貨地
          ????????address?=?item.find_element_by_xpath('.//div[@class="location"]').text
          ????????#?print(pro_desc,?pro_price,?buy_num,?shop,?address)
          ????????with?open('{}.csv'.format(key_word),?mode='a',?newline='',?encoding='utf-8-sig')?as?f:
          ????????????csv_writer?=?csv.writer(f,?delimiter=',')
          ????????????csv_writer.writerow([pro_desc,?pro_price,?buy_num,?shop,?address])


          def?main():
          ????browser.get('https://www.taobao.com/')
          ????page?=?search_product(key_word)
          ????print(page)
          ????get_data()
          ????page_num?=?1
          ????while?int(page)?!=?page_num:
          ????????print("*"?*?100)
          ????????print("正在爬取第{}頁".format(page_num?+?1))
          ????????browser.get('https://s.taobao.com/search?q={}&s={}'.format(key_word,?page_num?*?44))
          ????????browser.implicitly_wait(25)
          ????????get_data()
          ????????page_num?+=?1
          ????print("數(shù)據(jù)爬取完畢!")


          if?__name__?==?'__main__':
          ????key_word?=?input("請輸入你要搜索的商品:")
          ????option?=?Options()
          ????browser?=?webdriver.Chrome(chrome_options=option,
          ???????????????????????????????executable_path=r"C:\Users\cherich\AppData\Local\Google\Chrome\Application\chromedriver.exe")
          ????main()

          采集結(jié)果如下:

          數(shù)據(jù)準(zhǔn)備完成,中間從標(biāo)題里提取類別過程比較耗時,建議大家直接用整理好的數(shù)據(jù)。

          大概思路是對標(biāo)題進行分詞,命名實體識別,標(biāo)記出名詞,找出類別名稱,比如堅果、茶葉等。

          3. 數(shù)據(jù)清洗

          這里的文件清洗幾乎用 Excel 搞定,數(shù)據(jù)集小,用 Excel 效率很高,比如這里做了一個價格區(qū)間。到現(xiàn)在數(shù)據(jù)清洗已經(jīng)完成(可以用三方工具做可視化了),如果大家愛折騰,可以接著往下看用 Python 如何進行分析。


          4. 可視化分析

          1、讀取文件

          import?pandas?as?pd
          import?matplotlib?as?mpl
          mpl.rcParams['font.family']?=?'SimHei'
          from?wordcloud?import?WordCloud
          from?ast?import?literal_eval
          import?matplotlib.pyplot?as?plt
          datas?=?pd.read_csv('./年貨.csv',encoding='gbk')
          datas


          2、可視化:詞云圖

          li?=?[]
          for?each?in?datas['關(guān)鍵詞'].values:
          ????new_list?=?str(each).split(',')
          ????li.extend(new_list)
          def?func_pd(words):
          ????count_result?=?pd.Series(words).value_counts()
          ????return?count_result.to_dict()

          frequencies?=?func_pd(li)
          frequencies.pop('其他')

          plt.figure(figsize?=?(10,4),dpi=80)
          wordcloud?=?WordCloud(font_path="STSONG.TTF",background_color='white',?width=700,height=350).fit_words(frequencies)
          plt.imshow(wordcloud)
          plt.axis("off")
          plt.show()


          圖表說明:我們可以看到詞云圖,熱門(出現(xiàn)次數(shù)最多)品類字體最大,依次是:堅果、茶葉、糕點等。

          3、可視化:繪制圓環(huán)圖

          #?plt.pie(x,lables,autopct,shadow,startangle,colors,explode)
          food_type?=?datas.groupby('價格區(qū)間').size()
          plt.figure(figsize=(8,4),dpi=80)
          explodes=?[0,0,0,0,0.2,0.1]
          size?=?0.3
          plt.pie(food_type,?radius=1,labels=food_type.index,?autopct='%.2f%%',?colors=['#F4A460','#D2691E','#CDCD00','#FFD700','#EEE5DE'],
          ???????wedgeprops=dict(width=size,?edgecolor='w'))
          plt.title('年貨價格區(qū)間占比情況',fontsize=18)
          plt.legend(food_type.index,bbox_to_anchor=(1.5,?1.0))
          plt.show()


          圖表說明:圓環(huán)圖和餅圖類似,代表部分相對于整體的占比情況,可以看到0 ~ 200元的年貨大概33%左右,100 ~ 200元也是33%。說明大部分的年貨的價格趨于200以內(nèi)。

          4、可視化:繪制條形圖

          data?=?datas.groupby(by='店鋪名')['銷量'].sum().sort_values(ascending=False).head(10)
          plt.figure(figsize?=?(10,4),dpi=80)

          plt.ylabel('銷量')
          plt.title('年貨銷量前十名店鋪',fontsize=18)
          colors?=?['#F4A460','#D2691E','#CDCD00','#EEE5DE',?'#EEB4B4',?'#FFA07A',?'#FFD700']
          plt.bar(data.index,data.values,?color=colors)
          plt.xticks(rotation=45)
          plt.show()


          圖表說明:以上是店鋪按銷量排名情況,可以看到第一名是三只松鼠旗艦店,看來過年大家都喜歡吃干貨。

          5、可視化:繪制橫向條形圖

          foods?=?datas.groupby(by='類別')['銷量'].sum().sort_values(ascending=False).head(10)
          foods.sort_values(ascending=True,inplace=True)
          plt.figure(figsize?=?(10,4),dpi=80)
          plt.xlabel('銷量')
          plt.title('年貨推薦購買排行榜',fontsize=18)
          colors?=?['#F4A460','#D2691E','#CDCD00','#CD96CD','#EEE5DE',?'#EEB4B4',?'#FFA07A',?'#FFD700']
          plt.barh(foods.index,foods.values,?color=colors,height=1)
          plt.show()


          圖表說明:根據(jù)類別銷量排名,排名第一是堅果,驗證了上面的假設(shè),大家喜歡吃堅果。

          5.結(jié)論與建議

          淘寶熱賣年貨: 堅果,茶葉,糕點,餅干,糖果,白酒,核桃,羊肉,海參,枸杞;

          年貨推薦清單(按銷量):堅果、零食、糕點、餅干、茶葉、糖果、松子、紅棗、蛋糕、鹵味、瓜子、牛奶、核桃;

          年貨價格參考:66%以上的年貨價格在0~200元之間;

          熱門店鋪:三只老鼠、天貓超市、百草味、良品鋪子;

          —??—


          一鍵三連「分享」、「點贊」和「在看」

          技術(shù)干貨與你天天見~



          瀏覽 53
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  丁香激情国产色五月 | 伊人97 | 囯产精品久久久久 | 亚洲最大成人 | 免费看成人747474九号视频在线观看 |