pandas-best-practices
PythonにおけるPandasを使ったデータ操作・分析・DataFrame処理のベストプラクティスを提供します。効率的なデータ変換やパフォーマンスを意識した実装方法が必要な場面で活躍します。
description の原文を見る
Best practices for Pandas data manipulation, analysis, and DataFrame operations in Python
SKILL.md 本文
Pandas ベストプラクティス
Pandas開発の専門家向けガイドラインです。データ操作、分析、効率的なDataFrame操作に焦点を当てています。
コードスタイルと構造
- 正確なPythonの例を含む、簡潔で技術的な記述を心がける
- データ分析ワークフローの再現性を優先する
- 関数型プログラミングを使用し、不要なクラスは避ける
- 明示的なループより、ベクトル化操作を優先する
- データ内容を反映した説明的な変数名を使用する
- PEP 8 スタイルガイドラインに従う
DataFrame の作成と I/O
pd.read_csv()、pd.read_excel()、pd.read_json()を適切なパラメータで使用するdtypeパラメータを指定して、読み込み時に正しいデータ型を確保するparse_datesを使用して自動的に datetime を解析する- データが自然なインデックス列を持つ場合、
index_colを設定する - 大きなファイルの読み込みには
chunksizeを使用してインクリメンタルに処理する
データ選択
- ラベルベースのインデックスには
.loc[]を使用する - 整数位置ベースのインデックスには
.iloc[]を使用する - チェーンされたインデックスは避ける (例:
df['col'][0]) - 代わりに.locまたは.ilocを使用する - 条件付き選択には boolean インデックスを使用する:
df[df['col'] > value] - 複雑なフィルタリング条件には
.query()メソッドを使用する
メソッドチェーン
- 可能な限り、データ変換にはメソッドチェーンを優先する
- カスタム関数をチェーンで適用するには
.pipe()を使用する .assign()、.query()、.groupby()、.agg()などの操作をチェーンする- 複数行に分割してチェーンを読みやすく保つ
データクリーニングと検証
欠損データ
.isna()と.info()で欠損データをチェックする- 欠損データを適切に処理する:
.fillna()、.dropna()、または補完 - nullable な整数型と boolean 型には
pd.NAを使用する - 欠損データの処理方法について決定を文書化する
データ品質チェック
- 分析の開始時にデータ品質チェックを実装する
.dtypesでデータ型を検証し、必要に応じて変換する.duplicated()で重複をチェックし、適切に処理する.describe()で統計的な概要をすばやく確認する
型変換
- 明示的な型変換には
.astype()を使用する - 日付解析には
pd.to_datetime()を使用する - 安全な数値変換には
pd.to_numeric()をerrors='coerce'で使用する - 低カーディナリティの文字列列にはカテゴリカルデータ型を活用する
グループ化と集約
GroupBy 操作
- 効率的な集約操作には
.groupby()を使用する - 複数の操作には
.agg()で集約関数を指定する - より明確な出力列名には名前付き集約を使用する
- 元の形状に結果をブロードキャストするには
.transform()の使用を検討する
ピボットテーブルと再形成
- 多次元集約には
.pivot_table()を使用する - ワイド形式からロング形式への変換には
.melt()を使用する - ロング形式からワイド形式への変換には
.pivot()を使用する - 階層インデックスの操作には
.stack()と.unstack()を使用する
パフォーマンス最適化
メモリ効率
- 低カーディナリティの文字列にはカテゴリカルデータ型を使用する
- 適切な場合、数値型をダウンキャストする
- 大きな式の評価には
pd.eval()と.eval()を使用する
計算速度
- 行ごとの関数では
.apply()よりベクトル化操作を使用する - カスタム関数より組み込み集約関数を優先する
- より高速な場合、NumPy 操作には
.valuesまたは.to_numpy()を使用する
よくある落とし穴を避ける
.iterrows()による反復を避ける - ベクトル化操作を使用する- 反復中に DataFrame を変更しない
- SettingWithCopyWarning に注意する - 必要に応じて
.copy()を使用する - DataFrames を行ごとに増加させることは避ける - リストに収集してから一度に作成する
時系列操作
- 時系列データには
DatetimeIndexを使用する - 時間ベースの集約には
.resample()を活用する - ラグ操作には
.shift()と.diff()を使用する - ウィンドウ計算には
.rolling()と.expanding()を使用する
マージと結合
- SQL スタイルの結合には
.merge()を使用する howパラメータを指定する: 'inner'、'outer'、'left'、'right'- 結合のカーディナリティをチェックするには
validateパラメータを使用する - DataFrames をスタックするには
.concat()を使用する
主要な規約
import pandas as pdとしてインポートする- 可能な限り列名に
snake_caseを使用する - データソースと変換を文書化する
- 明確なセル実行順序でノートブックを再現可能に保つ
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- mindrally
- リポジトリ
- mindrally/skills
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/mindrally/skills / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。