見出し画像

楽天のレビューを分析しよう!Pythonで始める初心者向けデータ分析入門Part2

Pythonで作る!ECサイトレビュー分析ツール

こんにちは!今回は、Pythonを使ってECサイトのレビューを自動で収集し、分析するツールを作る方法をご紹介します。このツールを使えば、大量のレビューデータを簡単に収集し、視覚化することができます。

1. ツールの概要

このツールは主に2つの部分から構成されています:

  1. Webスクレイピングでレビューを収集する部分

  2. 収集したデータを可視化する部分

それでは、順番に見ていきましょう!

2. Webスクレイピング部分

まず、必要なライブラリをインポートします:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import re


次に、ユーザーから取得したいページ数を入力してもらいます:

num_pages = int(input("取得したいページ数を入力してください: "))


そして、レビューを取得するURLを設定します:

base_url = "URL"

データを格納するための辞書を準備します:

data = {'注文日': [], 'レビュー': [], 'コメント': []}


ここからが本題です。指定されたページ数分だけループを回し、各ページからレビューデータを取得します:

for page in range(1, num_pages + 1):
    url = f"{base_url}&p={page}#itemReviewList"
    
    response = requests.get(url)
    response.encoding = 'utf-8'
    
    soup = BeautifulSoup(response.text, 'html.parser')
    
    ratings = soup.find_all('span', class_='text-container--IAFCr size-body-1-low--3HTHO style-bold--1Rhly color-gray-dark--2ebP7')
    comments = soup.find_all('div', class_='review-body--1pESv')
    
    for rating, comment in zip(ratings, comments):
        date_info = comment.find_previous('div', class_='text-display--1Iony type-body--1W5uC size-small--sv6IW align-left--1hi1x color-gray-dark--2N4Oj layout-inline--1ajCj')
        order_date = date_info.text.strip() if date_info and re.match(r"\d{4}/\d{2}/\d{2}", date_info.text) else 'N/A'
        
        data['注文日'].append(order_date)
        data['レビュー'].append(rating.text)
        data['コメント'].append(comment.text)


最後に、取得したデータをDataFrameに変換し、CSVファイルとして保存します:

df = pd.DataFrame(data) df.to_csv('XXXX.csv', index=False)


結果はこんな感じ

3. データ可視化部分

次に、収集したデータを可視化する部分を見ていきましょう。

まず、必要なライブラリをインポートします:

import dash
from dash import html, dcc
import plotly.express as px
import pandas as pd


グラフを作成する関数を定義します:

def create_figure():
    df = pd.read_csv('/Users/tsuyoshis/b4u_Review.csv')
    df['注文日'] = pd.to_datetime(df['注文日'])
    df['注文月'] = df['注文日'].dt.to_period('M').dt.to_timestamp()
    review_counts = df.groupby(['注文月', 'レビュー']).size().unstack(fill_value=0)
    total_reviews = review_counts.sum(axis=1)
    review_long = review_counts.reset_index().melt(id_vars='注文月', value_vars=review_counts.columns, var_name='レビュー', value_name='レビュー数')
    color_map = {1: 'red', 2: 'orange', 3: 'yellow', 4: 'green', 5: 'blue'}
    
    fig = px.bar(review_long, x='注文月', y='レビュー数', color='レビュー', color_discrete_map=color_map)
    fig.update_layout(barmode='stack')
    
    for date, total in total_reviews.items():
        fig.add_annotation(x=date, y=total, text=str(total), showarrow=False, yshift=10)
    
    return fig

最後に、Dashアプリケーションを作成し、グラフを表示します:

app = dash.Dash(__name__)
app.layout = html.Div([
    html.H1("月ごとのレビュー評価数(積み上げグラフ)"),
    dcc.Graph(id='stacked-bar-chart', figure=create_figure())
])

if __name__ == '__main__':
    app.run_server(debug=True)


4. ツールの活用方法

このツールを使うことで、以下のような分析が可能になります:

  • 時系列でのレビュー傾向の把握

  • 評価の分布状況の確認

  • 特定の施策後のレビュー変化の観察

5. まとめ

今回紹介したツールを使えば、ECサイトのレビューデータを簡単に収集し、可視化することができます。これにより、商品の評価傾向や顧客の声をデータに基づいて分析することが可能になります。

ぜひ、このツールを自分のビジネスに合わせてカスタマイズしてみてください。レビュー分析を通じて、商品改善や顧客満足度向上につなげていきましょう!

質問やコメントがあれば、ぜひ下のコメント欄でお聞かせください!

いいなと思ったら応援しよう!

この記事が参加している募集