0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Databricks Free Editionハンズオンシナリオ

Last updated at Posted at 2025-07-29

Databricks Free Edition 30分ハンズオンシナリオ

ハンズオン概要

テーマ: 顧客レビューデータの感情分析と可視化
時間: 30分
前提: Databricks Free Editionアカウント作成済み
ゴール: AIアシスタントを活用してデータ分析を実践

タイムテーブル

準備フェーズ(3分)

環境確認とデータ準備

  1. Databricks Free Editionにログイン

    • ワークスペースの確認
    • 新規ノートブックの作成
    • ノートブック名: AI_Review_Analysis_Demo
  2. サンプルデータの作成
     以下のプロンプトでDatabricksアシスタントに依頼します。

    ECサイトの商品レビューの日本語サンプルデータを作成してください。20件程度で、評価、評価に対応した100字程度のレビューテキスト、日付を含めてください。customer_reviewsという一時ビューに格納してください。

期待される出力

import pandas as pd
from datetime import datetime, timedelta

# サンプルレビューデータ
reviews = [
 {"product_id": "P001", "customer_name": "田中太郎", "rating": 5, 
  "review_text": "素晴らしい商品です!期待以上の品質で大満足。配送も早くて助かりました。", 
  "review_date": "2025-01-20"},
 {"product_id": "P001", "customer_name": "佐藤花子", "rating": 2, 
  "review_text": "思っていたより品質が悪く、がっかりしました。価格に見合わない商品だと思います。", 
  "review_date": "2025-01-19"},
 # ... 他8件
]

df = spark.createDataFrame(reviews)
df.createOrReplaceTempView("customer_reviews")
display(df)

基礎演習(10分)

Databricksアシスタントでの基本分析

  1. データの基本確認(2分)
    以下のプロンプトでDatabricksアシスタントに依頼します。

    customer_reviewsテーブルのデータをSQLで確認して、基本的な統計情報を教えてください。

  2. SQLでの簡単な集計(3分)

    -- アシスタントが生成するSQL例
    SELECT 
      rating,
      COUNT(*) as review_count,
      AVG(LENGTH(review_text)) as avg_review_length
    FROM customer_reviews
    GROUP BY rating
    ORDER BY rating DESC
    
  3. 評価の分布を可視化(5分)
    アシスタントへの質問:

    評価の分布をplotlyの棒グラフで可視化してください

AI関数を使った感情分析

  1. 感情分析の実行
    アシスタントへの質問:

    各レビューの感情を「SELECT ai_analyze_sentiment('I am happy');」のようにai_analyze_sentimentを用いたコードを作成してください。判定対象はreview_textです。

期待される出力

 # Analyze sentiment of each review_text using ai_analyze_sentiment function
 sentiment_df = spark.sql("""
 SELECT
     *,
     ai_analyze_sentiment(review_text) AS sentiment
 FROM customer_reviews
 """)
 display(sentiment_df)

実践演習(12分)

インサイト抽出と可視化

  1. 統合ダッシュボードの作成(7分)

    アシスタントへの質問:

    以下を含むダッシュボードを作成してください:

    1. 感情分析の結果(円グラフ)
    2. 評価と感情の相関(棒グラフ)

期待される出力

import matplotlib.pyplot as plt
import seaborn as sns

# データの準備
pdf = df_final.toPandas()

# 3つのグラフを並べて表示
fig, axes = plt.subplots(1, 3, figsize=(15, 5))

# 1. 感情分析の円グラフ
sentiment_counts = pdf['sentiment'].value_counts()
axes[0].pie(sentiment_counts.values, labels=sentiment_counts.index, autopct='%1.1f%%')
axes[0].set_title('感情分析結果')

# 2. 評価と感情の相関
sentiment_rating = pdf.groupby(['rating', 'sentiment']).size().unstack(fill_value=0)
sentiment_rating.plot(kind='bar', ax=axes[1])
axes[1].set_title('評価と感情の相関')
axes[1].set_xlabel('評価')
axes[1].set_ylabel('件数')

plt.tight_layout()
plt.show()

簡易レポート生成

  1. 自動レポート作成(5分)

    アシスタントへの質問:

    分析結果をまとめた簡単な日本語のレポートをMarkdown形式で生成して現在のディレクトリに保存してください。

期待される出力

sentiment_summary = sentiment_count_pd.set_index('sentiment')['count'].to_dict()
total = sum(sentiment_summary.values())
sentiment_percent = {k: f"{v/total:.1%}" for k, v in sentiment_summary.items()}

report_md = f"""# 感情分析レポート

## 1. 感情分析の結果

- ポジティブ: {sentiment_summary.get('positive', 0)}件 ({sentiment_percent.get('positive', '0%')})
- ネガティブ: {sentiment_summary.get('negative', 0)}件 ({sentiment_percent.get('negative', '0%')})
- ニュートラル: {sentiment_summary.get('neutral', 0)}件 ({sentiment_percent.get('neutral', '0%')})

## 2. 評価と感情の相関

評価ごとの感情分布は以下の通りです。

| 評価 | ポジティブ | ニュートラル | ネガティブ |
|------|------------|--------------|------------|
"""

for rating in sorted(rating_sentiment_count_pd['rating'].unique()):
    row = []
    for sentiment in ['positive', 'neutral', 'negative']:
        count = rating_sentiment_count_pd[
            (rating_sentiment_count_pd['rating'] == rating) &
            (rating_sentiment_count_pd['sentiment'] == sentiment)
        ]['count']
        row.append(str(int(count.values[0])) if not count.empty else "0")
    report_md += f"| {rating} | {row[0]} | {row[1]} | {row[2]} |\n"

report_md += """

## 3. 考察

- ポジティブな感情が最も多く、全体の傾向として好意的な評価が多いことが分かります。
- 評価が高いほどポジティブな感情が多く、評価が低いほどネガティブな感情が多い傾向が見られます。
"""

with open("analysis_report.md", "w", encoding="utf-8") as f:
    f.write(report_md)

まとめフェーズ(5分)

振り返りと次のステップ

  1. 本日学んだこと

    • Databricksアシスタントでの自然言語分析
    • データから簡易的な感情分析
    • 可視化とレポート自動生成
  2. 実務での応用例

    • 商品レビューの定期分析
    • 顧客問い合わせの分類
    • SNSモニタリング
  3. 追加課題の提示

    発展課題:
    1. より高度な感情分析(外部APIの活用)
    2. 時系列での感情推移分析
    3. 商品カテゴリ別の分析
    

ハンズオンの工夫点

レベル別対応

  • 初心者: アシスタントへの質問をコピー&ペーストで実行
  • 中級者: 生成されたコードを理解し、カスタマイズ
  • 上級者: より効率的な実装方法を探索

トラブルシューティング

よくあるエラーと対処法:
1. "テーブルが見つかりません" 
   → セル1のデータ作成を再実行

2. "ライブラリがインポートできません"
   → Databricksには主要ライブラリがプリインストール済み

3. "表示がおかしい"
   → display()関数を使用

配布資料

クイックリファレンス

# Databricksアシスタント活用パターン

## データ確認
「〇〇テーブルの構造を教えて」
「データの基本統計を表示して」

## 分析依頼
「〇〇でグループ化して集計して」
「〇〇の分布を可視化して」

## コード生成
「〇〇を抽出する関数を作って」
「結果をレポート形式でまとめて」

サンプルプロンプト集

  1. データ品質チェック
  2. 異常値検出
  3. トレンド分析
  4. 予測モデル作成

成功のポイント

段階的な難易度上昇

  1. 最初は単純なSQL
  2. 次にPythonでの処理
  3. 最後に統合的な分析

実用性の重視

  • 実際のビジネスシーンを想定
  • すぐに応用できるコード
  • 成果物(レポート)の生成

全員が成功体験

  • 必ず動くサンプルデータ
  • エラーが出にくい構成
  • 視覚的な成果物

このハンズオンにより、参加者はDatabricksアシスタントを使った実践的なデータ分析を体験し、自社データでの活用イメージを持つことができます。

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?