端午の節句が近づいてきます。Pythonで粽のデータを取って可視化します。ネット友達が好きな粽を見てみてください。


はじめに
本文はデータから登り、データ洗浄、データ可視化の三つの方面から始めます。しかし、簡単に小さいデータ分析項目を完成して、知識に対して総合的な運用ができます。
全体の考えは以下の通りです。
  • ウェブページを登る:https://www.jd.com/
  • 登山説明: 京東ウェブサイトに基づいて、私達はウェブサイトの“ちまき”のデータを探して、大体100ページあります。私達が取得したフィールドには、一級ページの関連情報と二級ページの一部情報があります。
  • 登りの考え方: まず、あるページのデータに対して一級ページを解析してから、二級ページを解析して、最後にページをめくる作業を行います。
  • フィニッシュフィールド: それぞれちまきの名称(タイトル)、価格、ブランド(店舗)、種類(味)です。
  • 使用ツール: requests+lxml+pandas+time+re+pyecharts
  • ウェブサイト解析方式: xpath
  • 最終的な効果は以下の通りです。
    Image
    二、データ取得
    京東ウェブサイトは、一般的に動的にロードされています。つまり、一般的には、あるページのトップ30のデータ(一つのページに全部で60のデータ)を得ることができます。
    本文に基づいて、基本的な方法だけを使って、各ページのトップ30のデータを取得しました。
    さて、本論文ではどのようなフィールドを取得しましたか?私はみんなに展示をします。興味があります。もっと多くのフィールドを登って、もっと詳しい分析をします。
    Image
    以下は爬虫類コードを示します。
    
    import pandas as pd
    import requests
    from lxml import etree
    import chardet
    import time
    import re
     
    def get_CI(url):
        headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; X64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36'}
        rqg = requests.get(url,headers=headers)
        rqg.encoding = chardet.detect(rqg.content)['encoding']
        html = etree.HTML(rqg.text)
        
        #   
        p_price = html.xpath('//div/div[@class="p-price"]/strong/i/text()')
        
        #   
        p_name = html.xpath('//div/div[@class="p-name p-name-type-2"]/a/em')
        p_name = [str(p_name[i].xpath('string(.)')) for i in range(len(p_name))]
        
        #   url
        deep_ur1 = html.xpath('//div/div[@class="p-name p-name-type-2"]/a/@href')
        deep_url = ["http:" + i for i in deep_ur1]
        
        #      ,    “    ”              
        brands_list = []
        kinds_list = []
        for i in deep_url:
            rqg = requests.get(i,headers=headers)
            rqg.encoding = chardet.detect(rqg.content)['encoding']
            html = etree.HTML(rqg.text)
                              
            #   
            brands = html.xpath('//div/div[@class="ETab"]//ul[@id="parameter-brand"]/li/@title')
            brands_list.append(brands)
                            
            #   
            kinds = re.findall('>  :(.*?)</li>',rqg.text)
            kinds_list.append(kinds)
                               
        data = pd.DataFrame({'  ':p_name,'  ':p_price,'  ':brands_list,'  ':kinds_list})
        return(data)
                               
    x = "https://search.jd.com/Search?keyword=%E7%B2%BD%E5%AD%90&qrst=1&wq=%E7%B2%BD%E5%AD%90&stock=1&page="
    url_list = [x + str(i) for i in range(1,200,2)]
    res = pd.DataFrame(columns=['  ','  ','  ','  '])
     
    #     “  ”  
    for url in url_list:
        res0 = get_CI(url)
        res = pd.concat([res,res0])
        time.sleep(3)
     
    #     
    res.to_csv('aliang.csv',encoding='utf_8_sig')
    
    最終的に取得したデータ:
    Image
    三、データ洗浄
    上の図から見れば、全体のデータはとても整然としていて、特に乱れていません。簡単な操作だけすればいいです。
    まずパンダスライブラリを使って、データを読みます。
    
    import pandas as pd
     
    df = pd.read_excel("  .xlsx",index_col=False)
    df.head()
    結果は以下の通りです
    Image
    私たちはそれぞれ対応します “ブランド 二つのフィールドの中かっこを削除します。
    
    df["  "] = df["  "].apply(lambda x: x[1:-1])
    df["  "] = df["  "].apply(lambda x: x[1:-1])
    df.head()
    結果は以下の通りです
    Image
    ① ちまきブランドランキング上位10店舗
    
    df["  "].value_counts()[:10]
    結果は以下の通りです
    Image
    ②ちまき味ランキング上位5の味
    
    def func1(x):
        if x.find(" ") > 0:
            return "   "
        else:
            return x
    df["  "] = df["  "].apply(func1)
    df["  "].value_counts()[1:6]
    
    結果は以下の通りです
    Image
    ③ちまきの販売価格区分
    
    def price_range(x): #         ,    
        if x <= 50:
            return '<50 '
        elif x <= 100:
            return '50-100 '
        elif x <= 300:
            return '100-300 '
        elif x <= 500:
            return '300-500 '
        elif x <= 1000:
            return '500-1000 '
        else:
            return '>1000 '
     
    df["    "] = df["  "].apply(price_range)
    df["    "].value_counts()
    
    結果は以下の通りです
    Image
    データが多くないため、多くのフィールドがなく、多くの乱数がありません。そのため、ここではデータの消去、欠損値の充填などの操作もしていません。したがって、データ解析のために、より多くのフィールド、より多くのデータを取得することができます。
    四、データの可視化
    字は表に及ばず、表は図に及ばないという諺があります。可視化分析によって,データを背後に置くことができます。 “隠します のメッセージを表示します。
    展開: もちろん、ここはただの “れんがを投げて玉を引く」というデータを多く取っていません。フィールドも多く取っていません。ここで勉強している友達に宿題の問題をして、自分でもっと多いデータ、もっと多いフィールドを使って、もっと透徹した分析をします。
    ここでは、次のいくつかの問題に基づいて、可視化展示を行います。
  • ①ちまき販売店Top 10柱図。
  • ②ちまきの味ランキングトップ5縦棒図。
  • ③ちまきの販売価格区間は円グラフを分けます。
  • ④ちまきの商品名词の云図。
  • ①ちまき販売店Top 10柱図
    Image
    結論分析:昨年、月餅のデータを分析しました。「五芳斎」、「北京稲香村」 このいくつかのブランドは記憶に新しいです。月餅やちまきを作る老舗です。イメージ “三全 和 “懐かしい」というイメージがありますが、水餃子と団子だけを作っていると思います。粽は試してみる価値がありますか?もちろん、ここに新しいブランドがあります。 “諸親分、「稲香の私房」 いくつかのブランドを待ってください。みんな行って検索してみてください。買い物というのは、細かく選ぶことです。ブランドも重要です。
    ②ちまき味ランキングTOP 5縦棒図
    Image
    結論分析:子供の頃ずっと食べていたのが一番多かったのは “甘いちまき」は中学生になってから知ったのです。粽に肉がありますか?もちろん、絵から見れば、売っています。 “生肉粽」 やはりこのお店が多いです。やはりこの贈り物は高級で雰囲気があります。ここはまだいくつか味があります。 “ナツメ粽、小豆粽はほとんど食べたことがありません。プレゼントするとどんな味をあげますか?
    ③ちまきの販売価格区間は円グラフを区分する
    Image
    結論分析:ここでは、わざと価格区間を細分化しています。この餅図も実際に合っています。毎年一回の端午の節句を過ごしますか?それとも薄利多売を主として、80%近くの粽です。価格は全部100元以下です。もちろん、中ぐらいの粽もあります。価格は100元から300元です。300元より大きいです。食べる必要もないと思います。どうせこんなに多くのお金を使って粽を買うことはないです。
    ④ちまき商品名詞雲図
    Image
    結論分析:図の中から、商店のセールスポイントが大体分かります。祝日ですから、「贈り物」と「贈り物」です。 祭りの雰囲気を表しています。豚肉、あんこ ちまきの味を体現しています。もちろんです。 “朝食」 いい選択ですか?購入するなら、まだサポートしています。 “共同購入 はい。これらの言葉は、多かれ少なかれ、それぞれの一部の人の目を引くものです。
    ⑤図を大画面に組み合わせる
    Image
    ここで端午の节句について、Pythonでちまきのデータを可視化します。この記事を紹介します。Pythonのデータの可視化については、以前の記事を検索してください。または次の関連記事を引き続きご覧ください。今後ともよろしくお願いします。