【データアナリスト向け】Cursor×Clineで実現するデータ分析の自動化
概要
これまでRstudioをメインに分析していましたが、AIエディタのcursorが想像以上に使いやすかったので、基本的なセットアップから分析を自動化する方法をまとめてみました。
この記事においては、データアナリストの基本的な業務プロセスである、
- 分析設計・課題定義
- データ抽出(DWHからSQLで抽出・csvの読み込み)
- 前処理
- 集計・可視化・モデリング
- レポーティング
のステップの一部をCursorとClineを用いて自動化・効率化します。
R言語で実行していますが、pythonでも同様のことが可能です。
cursorのセットアップ
cursorをインストールしていない場合、まずPCにインストールしてください
cursorは以下からダウンロードできます
ログインしたら、以下の設定を完了してください
日本語表示の機能拡張をインストール
左上でのパネルにある□の拡張機能検索窓でJapaneseを検索し、日本語拡張機能をインストールしてください。cursorに拡張機能をインストールする際は、このパネルから探します
- Cursorを開いたら、メニューバーから「View」を選択し「Command Palette (Ctrl+Shift+P)」をクリック
- 言語の選択肢の中から「日本語(ja)」を選択し、再起動すればOK
Rの拡張機能インストール・R.exeのPathの設定
- Rの拡張機能を検索しインストールしてください
- インストールできたら、「ファイル → ユーザー設定 → 設定」で設定画面を開き、検索窓にRpathと入力
- R.exeのディレクトリを入力してください
Clineのインストール
- 拡張機能の検索窓に「Cline」を入力し、Cline拡張機能をインストール
- インストールが完了したら、Clineのアイコンが左サイドバーに追加されます。隠れている場合、▼を押下すると表示されると思います
API keyの設定
- ClineのAPI Key設定(必須)
- Clineで動作するAPIは選択可能です、好きなモデルのAPI Keyを入力すればOKです
- API利用料金が気になるかもしれませんが、例えばAnthrpicでやる場合最低デポジットの5ドルチャージしておくと、5ドル以上の課金はされないので、利用量が高額になることは避けられます。
- cursorのAPI Key設定(任意)
- cursorはフリープランで無料枠があるので、Pro契約は必須ではありません。もしcursorをメインで使用する場合は、Pro契約するか、好きなモデルAPI Keyを設定しておくとcursorの利用上限を気にしないでよいので快適です
以上で基本的なセットアップは完了です
分析設計・課題定義
分析フォルダの作成
- cursorではフォルダやファイルをメンション(@hogehoge)して作業するケースが多いため、分析フォルダやファイルをわけておいた方が便利です
- フォルダの構成の一例として、今回は以下のような構成を作成します
- data_analysis
- document:分析設計書や分析レポーティングのフォーマット(IMRAD等)を格納する
- inputs:分析に使用するcsvファイルやsqlクエリのテキストファイルを格納する
- outputs:分析で作成した画像や集計表を格納する
- scripts:Rやpythonの分析スクリプトを格納する
- data_analysis
- フォルダの作成はGUIでも可能です
フォルダの右上のアイコンからフォルダ作成やファイル作成ができます
- Rであれば以下のコードを実行するでもOKです
dir.create("./inputs")
dir.create("./outputs")
dir.create("./scripts")
dir.create("./documents")
分析設計書の作成
以下のような分析設計書をマークダウンで作成し、documentsフォルダ配下にanalysis_design.mdで保存しておきます。今回は公開データセットであるアイオワ州の酒の販売データのEDAとモデリングおよびインサイト抽出を分析目的とします
# 分析設計書
## 1. 分析目的
- 酒類の販売データをもとに、店舗や商品の特徴に基づいて売上(sale_dollars)を予測するモデルを構築し、売上を高める要因を特定する。
## 2. 分析対象
- データソース: iowa_liquor_sales.csv
- 対象期間:データソースの全期間
- 分析単位:個々の販売トランザクション(invoice_and_item_number)
## 3. 分析手法
### 3.1 データ抽出
- 使用するデータ:@data_analysis/inputs/iowa_liquor_sales.csv
- 抽出条件:欠損値を除去し、主要カラムを選択
- 必要なカラム:store_number, store_name, city, category_name, vendor_name
bottle_volume_ml, state_bottle_cost, bottles_sold, sale_dollars
### 3.2 前処理
- データクレンジング
- 欠損値の補完または除去
- 日付データ(date)を日時型に変換
- 特徴量エンジニアリング
- 地域ごとの特徴(city, county)をエンコード
- カテゴリデータ(category_name, vendor_name)をダミー変数化
- sale_dollars を目的変数として設定
- ボトル容量(bottle_volume_ml)や本数(bottles_sold)から販売パターンを抽出
### 3.3 分析手法
- 実施する分析:
- EDA(探索的データ分析)として以下の3つを実行する
- 1.分析に使用するカラムの基礎統計を確認する
- 2.sales_dollarsのヒストグラムを作成する
- 3.分析に使用するカラムの相関行列をggplot2で可視化する
- 機械学習モデル(線形回帰モデルまたは決定木モデル)による予測
- 使用する言語/ライブラリ:
- 言語:R
- ライブラリ:tidyverse, ggplot2, ranger(機械学習モデル)
## 4. 分析事項
- 売上に最も影響を与える特徴量を特定
- 特定の店舗やカテゴリにおける売上予測モデルの構築と精度評価
- 売上向上のための戦略的な示唆の提供
## 5. 注意事項
- データを可視化した場合、@outputディレクトリに画像形式で保存してください
- データの欠損や外れ値の取り扱いに注意する
- 地域特性や販売傾向を反映したモデル構築を意識する
- データの時系列的な影響を考慮する場合、期間による偏りを確認する
分析レポーティングのフォーマット作成
同様に、分析した後の分析レポートの形式を指示します。imrad_formatとして、同じ格納しておきます
1. Introduction (導入)
- 背景: (例: 酒類販売業界の現状やデータ分析の意義)
- 目的: (例: 販売データを基に売上を予測し、売上向上のための要因を特定する)
2. Methods (方法)
- データソース:
- 使用したデータセット(例: Iowa Liquor Sales Dataset)
- データの対象期間や単位
- 前処理:
- 欠損値や外れ値の処理方法
- 特徴量エンジニアリングの概要(例: ダミー変数化、数値変換など)
- 分析手法:
- 使用したモデルやアルゴリズム(例: 線形回帰、決定木)
- ツール/ライブラリ(例: pandas, scikit-learn)
3. Results (結果)
EDAの結果
- データの分布や相関関係(例: 売上とカテゴリの相関)
- 可視化(必要に応じて図表を挿入)
モデル評価
- 精度指標(例: R², MAE)
- 特徴量の重要度(例: 売上に影響を与える主な因子)
予測結果:
- 売上予測の具体例や改善の見込み
4. Discussion (考察)
主な発見
- 分析から得られた主要な示唆(例: 店舗規模やカテゴリが売上に与える影響)
結果の解釈:
- 分析結果をビジネス上のインサイトに結び付ける
制約:
- データの限界やモデルの精度に関する考察
次のステップ:
- 今後の分析やさらなる改善の可能性
5. Conclusion (結論)
- 本分析の要約と主な結論(例: 売上向上のために特定のカテゴリを拡充すべき)
- 業務や意思決定への活用方法
データの抽出
- BigQueryからデータをSQLで抽出することを想定します。本記事では、BigQueryの公開データセットを用いて抽出しますが、自社のGCPのプロジェクト、データセットを指定しても同様に可能です
inputsフォルダ配下に以下のようなSQLを記載したテキストファイルを作成し保存
SELECT
*
FROM
bigquery-public-data.iowa_liquor_sales.sales
WHERE
date between '2022-01-01' and '2022-01-07'
scriptsフォルダでBigQueryを読み込むRスクリプトを作成し、実行してデータを取得してください。CursorおよびClineでは、データフレームに対してメンションができないため、csv形式でinputsに保存してください
library(tidyverse)
library(bigrquery)
# bigqueryの認証
bq_auth()
# プロジェクトIDを設定
project_id <- "bigquery-public-data"
# SQLクエリを読み込む
sql_query <- readLines("data_analysis/inputs/sql_data_import") %>% paste(collapse = "\n")
# BigQueryからデータを取得
df_iowa_liquor_sales <- bq_project_query(project_id, sql_query) %>%
bq_table_download()
# CSVから読み込むパターン
df_iowa_liquor_sales <- read.csv("data_analysis/inputs/iowa_liquor_sales.csv")
集計・モデリング
さて、ここからはClineに頑張ってもらいます
左のサイドバーから、Clineのアイコン(🤖)をクリックして、Clineを表示してください
起動すると、clineに指示を入力することができる画面が表示されると思います
表示されたら、これまで作成した分析指示所や抽出データを利用して分析してもらいます。以下のような指示をClineにしてください
Clineへの指示
@analysis_design.mdの分析内容に沿って、@iowa_liquor_sales.csvを用いて分析を実施してください。分析実行した後に、@scriptsフォルダ配下に分析に使用したRスクリプトを保存してください。分析実施後に分析で得られたインサイトを@imrad_format.mdのフォーマット形式に沿って作成し、@outputsフォルダ配下に格納してください
うまく作動すれば、最終的に以下のマークダウンファイルがoutputsフォルダ配下に作成されます
# アイオワ州酒類販売データの分析レポート
## 1. Introduction (導入)
### 背景
アイオワ州の酒類販売データを活用し、売上に影響を与える要因を特定することは、在庫管理の最適化や売上向上戦略の立案において重要です。本分析では、各店舗における販売パターンや商品カテゴリの特徴を明らかにし、効果的な販売戦略の構築を目指します。
### 目的
- 酒類の販売データをもとに、売上(sale_dollars)を予測するモデルを構築
- 売上に影響を与える主要な要因の特定
- データに基づく売上向上のための示唆の提供
## 2. Methods (方法)
### データソース
- データセット:Iowa Liquor Sales Dataset
- 分析単位:個々の販売トランザクション(invoice_and_item_number)
- 主要変数:
- store_number, store_name:店舗情報
- city:地域情報
- category_name:商品カテゴリ
- bottle_volume_ml:ボトル容量
- state_bottle_cost:仕入れコスト
- bottles_sold:販売本数
- sale_dollars:売上金額
### 前処理
1. データクレンジング
- 欠損値の除去:数値データ(bottle_volume_ml, state_bottle_cost, bottles_sold, sale_dollars)および日付データの欠損値を除去
- 日付データの変換:文字列形式の日付をDate型に変換
- 数値データの型変換:文字列として読み込まれた数値データを適切な数値型に変換
2. 特徴量エンジニアリング
- 地域(city)の上位10カテゴリの抽出とダミー変数化
- 取引頻度の高い上位10都市を特定
- その他の都市は"OTHER"としてグループ化
- 商品カテゴリ(category_name)の上位10カテゴリの抽出とダミー変数化
- 販売頻度の高い上位10カテゴリを特定
- その他のカテゴリは"OTHER"としてグループ化
- カテゴリカル変数のファクター化:効率的なメモリ使用とモデリングのため
3. データ保存
- 前処理済みデータをRDSファイル形式で保存
- 後続の分析で再利用可能な形式での永続化
### 分析手法
1. 探索的データ分析(EDA)
- 基礎統計量の算出
- 売上分布の可視化
- 変数間の相関分析
- カテゴリ別売上の分析
2. 予測モデリング
- 線形回帰モデルによる売上予測
- モデル評価(RMSE, MAE, R²)
- 特徴量重要度の分析
## 3. Results (結果)
### 探索的データ分析の結果
#### 売上の分布
- 売上データの分布は右に歪んでおり、少数の高額取引が存在
- 大多数の取引は中小規模の売上額に集中
#### 変数間の相関関係
- 売上(sale_dollars)と販売本数(bottles_sold)の間に強い正の相関
- ボトル容量(bottle_volume_ml)と売上の間には弱い正の相関
- 仕入れコスト(state_bottle_cost)と売上の間に中程度の正の相関
#### カテゴリ分析
- 上位カテゴリの特徴と平均売上の関係を分析
- 特定のカテゴリで高い平均売上を記録
### モデリング結果
#### モデルの性能
- 決定係数(R²):[モデル結果から取得]
- 平均絶対誤差(MAE):[モデル結果から取得]
- 二乗平均平方根誤差(RMSE):[モデル結果から取得]
#### 重要な特徴量
1. 販売本数(bottles_sold)
2. 仕入れコスト(state_bottle_cost)
3. [その他の重要な特徴量]
## 4. Discussion (考察)
### 主な発見
1. 売上予測における重要な要因
- 販売本数が最も重要な予測因子
- 商品カテゴリと地域特性も売上に影響
2. ビジネスインサイト
- 高額商品と販売数量のバランスが重要
- 地域特性に応じた品揃えの最適化が効果的
### 制約と限界
- 時系列的な変動の考慮が限定的
- 外部要因(競合、経済状況等)の影響を考慮していない
### 今後の展望
1. 改善の可能性
- 時系列分析の導入
- 非線形モデルの検討
- 追加的な特徴量の作成
2. 実務への応用
- 在庫管理の最適化
- 地域別マーケティング戦略の立案
- 季節性を考慮した販売計画の策定
## 5. Conclusion (結論)
本分析により、アイオワ州の酒類販売における売上予測モデルを構築し、主要な影響要因を特定しました。特に以下の点が重要な知見として得られました:
1. 販売本数と仕入れコストが売上に大きな影響を与える
2. 商品カテゴリと地域特性に基づく戦略的な品揃えが重要
3. データに基づく在庫管理と販売戦略の最適化が可能
これらの知見を活用することで、より効果的な販売戦略の立案と実行が可能となります。
まとめ
CursorとClineを利用することで、データ集計~レポーティングの部分を効率化することができました。特に、ABテストや重要な特徴量を探索的に探す分析など、分析工程を型化しやすいテーマと相性がよいと感じました
BigQueryのスキーマをClineに理解させ、データ抽出のSQL作成の工程も自動化できると、より効率的になると思います、データカタログの整備などができているサービスではより威力を発揮するでしょう
今回は試せていませんが、作成したグラフを用いたレポーティング作成や、分析完了後のGitコミットの自動化等、より効率化する余地はありそうなので、積極的に試してみたいと思います
Discussion