メインコンテンツまでスキップ

Cursor での Python データサイエンス:包括的ガイド

Cursor での Python データサイエンス

データサイエンスには、迅速な実験、強力な可視化、再現可能なワークフローが求められます。Cursor は、世界最高峰のコードエディタと AI 支援分析、ネイティブ Jupyter サポート、Python データサイエンススタックとのシームレスな統合を組み合わせることで、これらを一つにまとめます。このガイドでは、環境のセットアップと、Cursor のユニークな機能を pandas、NumPy、Matplotlib などで活用する方法を説明します。


データサイエンス環境のセットアップ​

信頼性の高い Python 環境は、あらゆるデータサイエンスプロジェクトの基盤です。Cursor は、統合ターミナルサポートと仮想環境検出を通じて、環境管理をシンプルにします。

Python のインストールと仮想環境​

Cursor のターミナルで Python のインストールを確認します:

python --version

プロジェクト専用の仮想環境を作成します:

python -m venv .venv
source .venv/bin/activate # Windows の場合: .venv\Scripts\activate
ヒント

Cursor はワークスペースのルートにある .venv を自動的に検出し、アクティブなインタープリタとして選択するよう提案します。ステータスバーの Python バージョンインジケーターを確認してください。

コアデータサイエンスライブラリのインストール​

pip を使用して必須スタックをインストールします:

pip install pandas numpy matplotlib seaborn scikit-learn jupyterlab

ディープラーニングワークフローの場合は、PyTorch または TensorFlow を追加します:

pip install torch torchvision torchaudio

再現性のために依存関係をロックします:

pip freeze > requirements.txt
警告

依存関係解決の影響を理解していない限り、同じ環境で conda と pip を混在させないでください。プロジェクトごとに一つのパッケージマネージャーに統一して、競合を防ぎましょう。

Python 向けの Cursor 設定​

Cursor に公式 Python 拡張機能をインストールして、IntelliSense、リント、フォーマットを取得します。データサイエンス向けの推奨設定:

{
"python.analysis.typeCheckingMode": "basic",
"python.formatting.provider": "black",
"python.linting.enabled": true,
"python.linting.pylintEnabled": false,
"python.linting.ruffEnabled": true,
"jupyter.askForKernelRestart": false,
"jupyter.interactiveWindow.creationMode": "perFile"
}

Cursor での Jupyter ノートブック​

Jupyter ノートブックは探索的データ分析の中核です。Cursor は、AI 支援、変数検査、およびエクスポート機能を備えたファーストクラスのノートブックサポートを提供します。

ノートブックの作成と実行​

コマンドパレット(Ctrl+Shift+P)から「Jupyter: Create New Jupyter Notebook」を選択して新しいノートブックを作成します。Cursor は .ipynb ファイルをリッチインターフェースで開き、コードセル、Markdown、出力をインラインで表示します。

右上のドロップダウンからカーネルを選択します。Cursor は、利用可能なすべての Python インタープリターや conda 環境を自動的に一覧表示します。

ヒント

ノートブックワークフローを高速化するキーボードショートカット:Shift+Enter で現在のセルを実行、A で上にセルを挿入、B で下にセルを挿入(コマンドモード時)。

AI 支援によるセル生成​

Markdown セルで分析目標を記述し、Cursor の AI に対応する Python コードを生成させます。例えば:

## 目標:タイタニックデータセットを読み込み、欠損年齢を中央値で補完し、
## 乗客クラス別の生存率を可視化する

Cursor が生成:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.read_csv("titanic.csv")
df['Age'] = df['Age'].fillna(df['Age'].median())

plt.figure(figsize=(10, 6))
sns.barplot(data=df, x='Pclass', y='Survived', hue='Sex')
plt.title('Survival Rates by Passenger Class and Gender')
plt.ylabel('Survival Rate')
plt.show()

変数インスペクタとデータビューア​

セルを実行した後、変数ペインを使用して DataFrame、配列、モデルオブジェクトを検査します。DataFrame 変数をクリックすると、ソートやフィルタリングが可能なスプレッドシートのようなデータビューアが開きます。これにより、繰り返しの df.head() 呼び出しが不要になります。

警告

データビューアで大規模な DataFrame を開くと、大量のメモリを消費する可能性があります。数百万行を超えるデータセットの場合、可視的検査の前にサンプリングや集約を検討してください。

スクリプトとノートブック間の変換​

Cursor は .py スクリプトから .ipynb ノートブックへの変換、およびその逆をサポートしています。コマンドパレットから「Jupyter: Export Current Python File as Jupyter Notebook」を実行します。実験から本番対応のスクリプトへの移行時に便利です。


pandas によるデータ操作​

pandas は Python データ操作の主力です。Cursor の自動補完と AI 支援により、DataFrame 操作がより高速かつエラーが少なくなります。

AI 生成のデータクリーニングパイプライン​

データクリーニングは多くの場合反復的です。自然言語の説明から Cursor にパイプライン全体を生成させましょう:

# 売上データセットをクリーニング:重複を削除、日付を解析、
# 列名を snake_case に標準化し、負の収益を除外

Cursor が生成:

import pandas as pd

df = pd.read_csv("sales.csv")
df = df.drop_duplicates()
df['OrderDate'] = pd.to_datetime(df['OrderDate'], errors='coerce')
df.columns = df.columns.str.lower().str.replace(' ', '_')
df = df[df['revenue'] >= 0]

複雑な変換とグループ化​

多レベルのグループ化やウィンドウ関数などの高度な操作では、Cursor のインライン提案が光ります:

monthly_stats = (
df.groupby([df['order_date'].dt.to_period('M'), 'region'])
.agg(
total_revenue=('revenue', 'sum'),
avg_order_value=('revenue', 'mean'),
order_count=('order_id', 'nunique')
)
.reset_index()
)
ヒント

複雑な pandas チェーンを書くときは、括弧を使って複数行に分割してください。Cursor はこれらを美しくフォーマットし、各ステップでより良い自動補完を提供します。

戦略的な欠損データの処理​

欠損データにはドメイン知識が必要です。データセットに特化した戦略を Cursor に尋ねてください:

# 数値列:中央値補完
# カテゴリ列:最頻値補完
# 日時列:前方向補完

numeric_cols = df.select_dtypes(include=['number']).columns
categorical_cols = df.select_dtypes(include=['object']).columns
datetime_cols = df.select_dtypes(include=['datetime64']).columns

df[numeric_cols] = df[numeric_cols].fillna(df[numeric_cols].median())
df[categorical_cols] = df[categorical_cols].fillna(df[categorical_cols].mode().iloc[0])
df[datetime_cols] = df[datetime_cols].ffill()

NumPy による数値計算​

NumPy は Python データサイエンスの数値的基盤を提供します。Cursor は、ベクトル化された効率的な配列操作を書くのに役立ちます。

配列の作成と操作​

Cursor の NumPy 自動補完は広範囲に及びます。配列を生成して変換を実行します:

import numpy as np

# 画像バッチを表す 3D 配列を作成
images = np.random.rand(32, 224, 224, 3) # バッチ、高さ、幅、チャネル

# ピクセル値を [0, 1] に正規化
normalized = (images - images.min()) / (images.max() - images.min())

# 別のライブラリが期待するフォーマットに転置
transposed = normalized.transpose(0, 3, 1, 2) # NCHW フォーマット

ブロードキャストとベクトル化​

NumPy のブロードキャストを活用して Python のループを回避します。操作をベクトル化する方法がわからない場合は、Cursor に説明してください:

# セントロイドからのユークリッド距離のベクトル化計算
centroid = np.array([5.0, 3.0])
points = np.random.rand(1000, 2)

distances = np.sqrt(np.sum((points - centroid) ** 2, axis=1))
警告

NumPy の暗黙的なブロードキャストは予期しない形状を生じさせる可能性があります。複雑な操作後は常に、出力配列の次元を .shape で確認してください。

pandas との統合​

NumPy 関数は、pandas の Series や DataFrame とシームレスに連携します:

# NumPy ユニバーサル関数を DataFrame 列に適用
df['log_revenue'] = np.log1p(df['revenue'])

# 複合条件によるブールインデックス
high_value = df[
(np.abs(df['revenue'] - df['revenue'].mean()) > 2 * df['revenue'].std()) |
(df['quantity'] > 100)
]

Matplotlib と Seaborn による可視化​

効果的な可視化は、データを洞察に変えます。Cursor のインラインプロットレンダリングと AI 提案は、可視化ワークフローを加速します。

出版品質のプロットの作成​

Cursor は、ノートブック内でコードセルのすぐ下に Matplotlib 図をレンダリングします。複雑なマルチパネル図を生成します:

import matplotlib.pyplot as plt
import seaborn as sns

fig, axes = plt.subplots(2, 2, figsize=(14, 10))

# 分布プロット
sns.histplot(data=df, x='revenue', kde=True, ax=axes[0, 0])
axes[0, 0].set_title('Revenue Distribution')

# 相関ヒートマップ
corr = df[['revenue', 'quantity', 'discount']].corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', ax=axes[0, 1])
axes[0, 1].set_title('Feature Correlations')

# カテゴリ別箱ひげ図
sns.boxplot(data=df, x='category', y='revenue', ax=axes[1, 0])
axes[1, 0].set_title('Revenue by Category')

# 時系列
monthly = df.groupby(df['order_date'].dt.to_period('M'))['revenue'].sum()
monthly.plot(ax=axes[1, 1], marker='o')
axes[1, 1].set_title('Monthly Revenue Trend')

plt.tight_layout()
plt.show()
ヒント

異なる用途に向けて複数の形式で図を保存します:plt.savefig('figure.png', dpi=300) はプレゼンテーション用、plt.savefig('figure.pdf') は出版物用です。

インタラクティブな可視化​

ダッシュボードやインタラクティブな探索には、Plotly を統合します:

import plotly.express as px

fig = px.scatter(
df, x='quantity', y='revenue', color='category',
size='discount', hover_data=['product_name'],
title='Revenue vs Quantity by Category'
)
fig.show()

Cursor は、ノートブックの出力領域で Plotly グラフをインタラクティブにレンダリングし、ズーム、パン、ツールチップを備えています。

AI 提案の可視化​

どのグラフを使用すべきかわからない場合は、Cursor に尋ねてください:

顧客離脱、在籍期間、月額料金のデータセットがあります。
離脱ドライバーを最も明確に示す可視化は何でしょうか?

分析コンテキストに応じて、Cursor は Kaplan-Meier 曲線、コホートテーブル、または SHAP サマリープロットなどを提案するかもしれません。


機械学習ワークフロー​

前処理からモデル評価まで、Cursor は scikit-learn などを使用して機械学習開発を合理化します。

前処理と特徴エンジニアリング​

Cursor を使用して、完全な前処理パイプラインを生成します:

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.impute import SimpleImputer

numeric_features = ['age', 'income', 'tenure']
categorical_features = ['gender', 'region', 'plan_type']

preprocessor = ColumnTransformer(
transformers=[
('num', StandardScaler(), numeric_features),
('cat', OneHotEncoder(handle_unknown='ignore'), categorical_features)
]
)

モデルのトレーニングと評価​

Cursor は、トレーニングループと評価メトリクスの足場を組むことができます:

from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, confusion_matrix

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)

y_pred = clf.predict(X_test)
print(classification_report(y_test, y_pred))
警告

前処理の前に常にトレーニングデータとテストデータを分離してください。変換器を完全なデータセットにフィットさせると、データリークageと過度に楽観的なパフォーマンス推定につながります。

ハイパーパラメータチューニング​

Cursor の支援を受けてハイパーパラメータ検索グリッドを生成します:

from sklearn.model_selection import GridSearchCV

param_grid = {
'n_estimators': [50, 100, 200],
'max_depth': [None, 10, 20, 30],
'min_samples_split': [2, 5, 10]
}

grid_search = GridSearchCV(
RandomForestClassifier(random_state=42),
param_grid,
cv=5,
scoring='f1_macro',
n_jobs=-1
)
grid_search.fit(X_train, y_train)
print(f"Best parameters: {grid_search.best_params_}")

AI 駆動のデータ分析​

Cursor の AI 機能は、コード生成を超えて、統計的推論や分析ガイダンスにも及びます。

自然言語による探索的データ分析​

データセットをアップロードし、Cursor に EDA を実行させます:

customer.csv ファイルを分析してください。顧客生涯価値の分布を表示し、
外れ値を特定し、ターゲットマーケティング用のセグメントを提案してください。

Cursor は、記述統計、可視化、およびクラスタリング提案を計算する一連のセルを生成します。

自動インサイト生成​

時系列データの場合、Cursor は分解、異常検知、および予測を提案できます:

from statsmodels.tsa.seasonal import seasonal_decompose

result = seasonal_decompose(df['sales'], model='multiplicative', period=12)
result.plot()
plt.show()

Markdown での分析ドキュメント化​

データサイエンスは協力的な作業です。Cursor を使用して、コードの横に発見をまとめた Markdown サマリーを生成します:

## 主要な発見

- **収益分布**:高価値トランザクションの長い尾部を持つ右に歪んだ分布
- **季節性**:Q4 に明確な販売ピークがあり、休日需要を示唆
- **離脱予測因子**:在籍期間 < 6 か月、月額料金 > $70 が最も強い指標

まとめ​

Cursor は、インタラクティブな計算、AI 支援、およびプロフェッショナルなコード編集を単一の環境に融合させることで、Python データサイエンスを再定義します。pandas で雑然としたデータセットをクリーニングしたり、scikit-learn でモデルをトレーニングしたり、Matplotlib で可視化を作成したりする際も、Cursor はあらゆるステップを加速します。Jupyter ノートブックの統合をマスターし、ボイラープレート生成のために AI を活用し、分析の仮定は常に検証してください。Cursor を使用すれば、データサイエンスワークフローはより高速で、より再現可能になり、インテリジェントな支援と深く統合されます。