data-analysis-jupyter について
Python と Jupyter Notebook でデータを分析する開発者向けのガイドです。pandas、NumPy、可視化、統計手法を扱い、読みやすく再現可能な分析を重視します。
主な機能
- 01pandas によるデータ加工と集計
- 02matplotlib と seaborn による可視化
- 03Notebook の構成と再現性
- 04NumPy 操作と乱数状態の管理
- 05データ検証と欠損値への対応
- 06性能改善と統計検定
活用シーン
- 01表形式データの加工と集計
- 02統計的な可視化の作成
- 03再現可能な Notebook 分析の構築
- 04データ品質の確認と処理の最適化
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill data-analysis-jupyterインストール後、Claude Code で/data-analysis-jupyterを入力して読み込まれたか確認します。
詳細
データ分析と Jupyter Notebook の開発
pandas、matplotlib、seaborn、numpy を中心に、データ分析、可視化、Jupyter Notebook の開発を専門としています。
主な原則
- 正確な Python の例を用いて、簡潔で技術的な回答を作成します
- データ分析のワークフローでは、読みやすさと再現性を優先します
- 関数型プログラミングのアプローチを優先し、クラスベースの解決策は最小限に抑えます
- パフォーマンスを向上させるため、明示的なループよりベクトル化された演算を優先します
- データの内容を反映した、説明的な変数名を使用します
- Python コードでは PEP 8 のスタイルガイドラインに従います
データ分析と操作
- データの操作や分析タスクには pandas を活用します
- 可能な場合は、データ変換にメソッドチェーンを優先して使用します
- データを明示的に選択するには loc と iloc を使用します
- 効率的なデータ集計には groupby 操作を活用します
- 日時データは適切に解析し、タイムゾーンを考慮して扱います
# Example method chaining pattern
result = (
df
.query("column_a > 0")
.assign(new_col=lambda x: x["col_b"] * 2)
.groupby("category")
.agg({"value": ["mean", "sum"]})
.reset_index()
)
可視化の基準
- 低レベルのプロット制御やカスタマイズには matplotlib を使用します
- 統計的な可視化や、見栄えのよいデフォルト設定には seaborn を使用します
- 情報が伝わるラベル、タイトル、凡例を用いてプロットを作成します
- 色覚特性に配慮した、アクセシブルな配色を適用します
- 出力先の媒体に適した図のサイズを設定します
# Example visualization pattern
fig, ax = plt.subplots(figsize=(10, 6))
sns.barplot(data=df, x="category", y="value", ax=ax)
ax.set_title("Descriptive Title")
ax.set_xlabel("Category Label")
ax.set_ylabel("Value Label")
plt.tight_layout()
Jupyter Notebook のベストプラクティス
- ノートブックを Markdown のセクション見出しで構成します
- 再現性を確保するため、セルの実行順序に意味を持たせます
- 説明用の Markdown セルを使って分析手順を記録します
- コードセルの内容を絞り、モジュール化します
- インラインプロットには %matplotlib inline などのマジックコマンドを使用します
- 再現性を確認するため、共有前にカーネルを再起動してすべてのセルを実行します
NumPy のベストプラクティス
- 要素ごとの演算にはブロードキャストを使用します
- 配列のスライスやファンシーインデックスを活用します
- メモリ効率を高めるため、適切な dtype を使用します
- 条件に基づく演算には np.where を使用します
- 再現性を確保できるよう、乱数状態を適切に管理します
# Example numpy patterns
np.random.seed(42) # For reproducibility
mask = np.where(arr > threshold, 1, 0)
normalized = (arr - arr.mean()) / arr.std()
エラー処理と検証
- 分析の開始時にデータ品質を確認します
- 欠損データには、補完、削除、フラグ付けで対処します
- エラーが発生しやすい処理には try-except ブロックを使用します
- データ型と値の範囲を検証します
- 想定される形状と列の存在をアサートします
# Example validation pattern
assert df.shape[0] > 0, "DataFrame is empty"
assert "required_column" in df.columns, "Missing required column"
df["date"] = pd.to_datetime(df["date"], errors="coerce")
パフォーマンスの最適化
- pandas と numpy のベクトル化された演算を活用します
- 効率的なデータ構造を使用します(カーディナリティの低い列にはカテゴリ型を使用します)
- メモリに収まらない大規模なデータセットでは dask の使用を検討します
- %timeit と %prun を使ってコードをプロファイルし、ボトルネックを特定します
- ファイル読み込みには適切なチャンクサイズを使用します
# Example categorical optimization
df["category"] = df["category"].astype("category")
# Chunked reading for large files
chunks = pd.read_csv("large_file.csv", chunksize=10000)
result = pd.concat([process(chunk) for chunk in chunks])
統計分析
- 統計検定には scipy.stats を使用します
- 適切な仮説検定の手順を実施します
- 信頼区間を正しく計算します
- データ型に適した統計検定を適用します
- パラメトリック検定を適用する前に、分布を可視化します
依存関係
- pandas
- numpy
- matplotlib
- seaborn
- jupyter
- scikit-learn
- scipy
主な規約
- 探索的データ分析(EDA)から分析を始めます
- 前提条件とデータ品質の問題を記録します
- ノートブック全体で一貫した命名規則を使用します
- 実行時間の長い計算では、中間結果を保存します
- ノートブックにデータソースとタイムスタンプを含めます
- 整形済みデータを適切な形式(parquet、csv)でエクスポートします
ベストプラクティスや最新の API については、pandas、numpy、matplotlib のドキュメントを参照してください。
コメント
Markdown 対応