mcpField
P
pandas-best-practices

pandas-best-practices

github.com/mindrallyデータ・データベース287893 回インストール3 週間前に更新
リポジトリ

pandas-best-practices について

pandas でデータ操作や分析を行う開発者向けの実践ガイドです。再現可能な変換、データ検証、効率的な処理、よくある問題への対処を扱います。

主な機能

  1. 01DataFrame の読み込みと選択
  2. 02読みやすいメソッドチェーン
  3. 03欠損値と品質の確認
  4. 04グループ化と形状変換
  5. 05メモリーと処理速度の最適化

活用シーン

  1. 01データセットのクリーニングと検証
  2. 02テーブルの変換と集計
  3. 03時系列データの処理
  4. 04DataFrame の処理性能向上

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mindrally/skills --skill pandas-best-practices

インストール後、Claude Code で/pandas-best-practicesを入力して読み込まれたか確認します。

詳細

Pandas のベストプラクティス

データ操作、分析、効率的な DataFrame 操作に重点を置いた、Pandas 開発のための専門的なガイドラインです。

コードのスタイルと構成

  • 正確な Python の例を用いて、簡潔で技術的な回答を作成します
  • データ分析のワークフローでは、再現性を優先します
  • 関数型プログラミングを使用し、不要なクラスは避けます
  • 明示的なループより、ベクトル化された操作を優先します
  • データの内容を反映した、説明的な変数名を使用します
  • PEP 8 のスタイルガイドラインに従います

DataFrame の作成と入出力

  • 適切なパラメーターを指定して、pd.read_csv()、pd.read_excel()、pd.read_json() を使用します
  • 読み込み時に正しいデータ型を確保するため、dtype パラメーターを指定します
  • 日時を自動的に解析するには、parse_dates を使用します
  • データに自然なインデックス列がある場合は、index_col を設定します
  • 大きなファイルを少しずつ読み込むには、chunksize を使用します

データの選択

  • ラベルに基づくインデックス指定には、.loc[] を使用します
  • 整数位置に基づくインデックス指定には、.iloc[] を使用します
  • 連鎖インデックス指定(例:df['col'][0])は避け、代わりに .loc または .iloc を使用します
  • 条件に基づく選択には、ブールインデックス指定を使用します:df[df['col'] > value]
  • 複雑なフィルター条件には、.query() メソッドを使用します

メソッドチェーン

  • 可能な場合は、データ変換にメソッドチェーンを優先します
  • チェーン内でカスタム関数を適用するには、.pipe() を使用します
  • .assign()、.query()、.groupby()、.agg() などの操作をチェーンします
  • 複数行に分けて、読みやすいチェーンを保ちます

データのクリーニングと検証

欠損データ
  • .isna() と .info() で欠損データを確認します
  • .fillna()、.dropna()、または補完を用いて、欠損データを適切に処理します
  • 欠損値を許容する整数型とブール型には、pd.NA を使用します
  • 欠損データの処理方針を記録します
データ品質チェック
  • 分析の開始時に、データ品質チェックを実施します
  • .dtypes でデータ型を検証し、必要に応じて変換します
  • .duplicated() で重複を確認し、適切に処理します
  • すばやく統計的な概要を把握するには、.describe() を使用します
型変換
  • 明示的な型変換には、.astype() を使用します
  • 日付の解析には、pd.to_datetime() を使用します
  • 安全に数値へ変換するには、errors='coerce' を指定して pd.to_numeric() を使用します
  • カーディナリティの低い文字列列には、カテゴリ型を使用します

グループ化と集計

GroupBy 操作
  • 効率的な集計操作には、.groupby() を使用します
  • 複数の操作を行うには、.agg() で集計関数を指定します
  • 出力列名を明確にするには、名前付き集計を使用します
  • 結果を元の形状にブロードキャストするには、.transform() の使用を検討します
ピボットテーブルと形状変更
  • 多次元の集計には、.pivot_table() を使用します
  • 横長形式を縦長形式に変換するには、.melt() を使用します
  • 縦長形式を横長形式に変換するには、.pivot() を使用します
  • 階層インデックスを操作するには、.stack() と .unstack() を使用します

パフォーマンスの最適化

メモリ効率
  • カーディナリティの低い文字列には、カテゴリ型を使用します
  • 適切な場合は、数値型をダウンキャストします
  • 大きな式の評価には、pd.eval() と .eval() を使用します
計算速度
  • 行単位の関数を使う .apply() より、ベクトル化された操作を使用します
  • カスタム関数より、組み込みの集計関数を優先します
  • NumPy 操作が高速になる場合は、.values または .to_numpy() を使用します
よくある落とし穴の回避
  • .iterrows() による反復は避け、ベクトル化された操作を使用します
  • 反復処理中に DataFrame を変更しないでください
  • SettingWithCopyWarning に注意し、必要に応じて .copy() を使用します
  • DataFrame を行ごとに拡張するのは避け、リストに集めて一度に作成します

時系列操作

  • 時系列データには、DatetimeIndex を使用します
  • 時間ベースの集計には、.resample() を活用します
  • ラグ操作には、.shift() と .diff() を使用します
  • ウィンドウ計算には、.rolling() と .expanding() を使用します

マージと結合

  • SQL 形式の結合には、.merge() を使用します
  • how パラメーターに 'inner'、'outer'、'left'、'right' を指定します
  • 結合のカーディナリティを確認するには、validate パラメーターを使用します
  • DataFrame を積み重ねるには、.concat() を使用します

主な規約

  • import pandas as pd としてインポートします
  • 可能な場合は、列名に snake_case を使用します
  • データソースと変換内容を記録します
  • セルの実行順序を明確にし、ノートブックを再現可能な状態に保ちます

コメント