楽天のレビューを分析しよう!Pythonで始める初心者向けデータ分析入門Part2
Pythonで作る!ECサイトレビュー分析ツール
こんにちは!今回は、Pythonを使ってECサイトのレビューを自動で収集し、分析するツールを作る方法をご紹介します。このツールを使えば、大量のレビューデータを簡単に収集し、視覚化することができます。
1. ツールの概要
このツールは主に2つの部分から構成されています:
Webスクレイピングでレビューを収集する部分
収集したデータを可視化する部分
それでは、順番に見ていきましょう!
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サイトのレビューデータを簡単に収集し、可視化することができます。これにより、商品の評価傾向や顧客の声をデータに基づいて分析することが可能になります。
ぜひ、このツールを自分のビジネスに合わせてカスタマイズしてみてください。レビュー分析を通じて、商品改善や顧客満足度向上につなげていきましょう!
質問やコメントがあれば、ぜひ下のコメント欄でお聞かせください!