pandas-pro
pandas DataFrameの操作、データ分析・加工・変換を実行するスキルです。DataFrameの結合やピボットテーブル、時系列のリサンプリング、NaN値の補間・前方埋め、groupby集計、型変換、大規模データセットのパフォーマンス最適化など、pandasを用いたデータ操作タスク全般に対して使用してください。
description の原文を見る
Performs pandas DataFrame operations for data analysis, manipulation, and transformation. Use when working with pandas DataFrames, data cleaning, aggregation, merging, or time series analysis. Invoke for data manipulation tasks such as joining DataFrames on multiple keys, pivoting tables, resampling time series, handling NaN values with interpolation or forward-fill, groupby aggregations, type conversion, or performance optimization of large datasets.
SKILL.md 本文
Pandas Pro
pandasのデータ操作、分析、変換ワークフローを専門とするエキスパート開発者。本番環境レベルのパフォーマンスパターンを実装します。
コアワークフロー
- データ構造の評価 — dtypes、メモリ使用量、欠損値、データ品質を確認します:
print(df.dtypes) print(df.memory_usage(deep=True).sum() / 1e6, "MB") print(df.isna().sum()) print(df.describe(include="all")) - 変換の設計 — ベクトル化された操作を計画し、ループを回避し、インデックス戦略を特定します
- 効率的に実装 — ベクトル化されたメソッド、メソッドチェーン、適切なインデックスを使用します
- 結果の検証 — dtypes、形状、null数、行数をチェックします:
assert result.shape[0] == expected_rows, f"Row count mismatch: {result.shape[0]}" assert result.isna().sum().sum() == 0, "Unexpected nulls after transform" assert set(result.columns) == expected_cols - 最適化 — メモリをプロファイルし、カテゴリカル型を適用し、必要に応じてチャンキングを使用します
リファレンスガイド
コンテキストに基づいた詳細なガイダンスを読み込みます:
| トピック | リファレンス | 読み込む場面 |
|---|---|---|
| DataFrame操作 | references/dataframe-operations.md | インデックス、選択、フィルタリング、ソート |
| データクリーニング | references/data-cleaning.md | 欠損値、重複、型変換 |
| 集計 & GroupBy | references/aggregation-groupby.md | GroupBy、pivot、crosstab、集計 |
| マージ & ジョイン | references/merging-joining.md | Merge、join、concat、結合戦略 |
| パフォーマンス最適化 | references/performance-optimization.md | メモリ使用量、ベクトル化、チャンキング |
コードパターン
ベクトル化された操作(改善前後)
# ❌ 避けるべき: 行ごとの反復処理
for i, row in df.iterrows():
df.at[i, 'tax'] = row['price'] * 0.2
# ✅ 推奨: ベクトル化された代入
df['tax'] = df['price'] * 0.2
.copy() を使用した安全なサブセット処理
# ❌ 避けるべき: チェーン化されたインデックス処理は SettingWithCopyWarning を引き起こす
df['A']['B'] = 1
# ✅ 推奨: .loc[] を使用し、サブセット変更時に明示的にコピーします
subset = df.loc[df['status'] == 'active', :].copy()
subset['score'] = subset['score'].fillna(0)
GroupBy集計
summary = (
df.groupby(['region', 'category'], observed=True)
.agg(
total_sales=('revenue', 'sum'),
avg_price=('price', 'mean'),
order_count=('order_id', 'nunique'),
)
.reset_index()
)
検証を含むマージ
merged = pd.merge(
left_df, right_df,
on=['customer_id', 'date'],
how='left',
validate='m:1', # 右側のキーが一意であることをアサート
indicator=True,
)
unmatched = merged[merged['_merge'] != 'both']
print(f"Unmatched rows: {len(unmatched)}")
merged.drop(columns=['_merge'], inplace=True)
欠損値の処理
# 前方埋め込みしてから数値ギャップを補間
df['price'] = df['price'].ffill().interpolate(method='linear')
# カテゴリカル値は最頻値で、数値はメジアンで埋める
for col in df.select_dtypes(include='object'):
df[col] = df[col].fillna(df[col].mode()[0])
for col in df.select_dtypes(include='number'):
df[col] = df[col].fillna(df[col].median())
時系列リサンプリング
daily = (
df.set_index('timestamp')
.resample('D')
.agg({'revenue': 'sum', 'sessions': 'count'})
.fillna(0)
)
ピボットテーブル
pivot = df.pivot_table(
values='revenue',
index='region',
columns='product_line',
aggfunc='sum',
fill_value=0,
margins=True,
)
メモリ最適化
# 数値をダウンキャストし、低カーディナリティの文字列をカテゴリカル型に変換
df['category'] = df['category'].astype('category')
df['count'] = pd.to_numeric(df['count'], downcast='integer')
df['score'] = pd.to_numeric(df['score'], downcast='float')
print(df.memory_usage(deep=True).sum() / 1e6, "MB after optimization")
制約
必ず実行すること
- ループの代わりにベクトル化された操作を使用する
- 適切なdtype(低カーディナリティの文字列はカテゴリカル型)を設定する
.memory_usage(deep=True)でメモリ使用量をチェックする- 欠損値を明示的に処理する(黙ってドロップしない)
- メソッドチェーンを使用して可読性を向上させる
- 操作全体でインデックスの整合性を保持する
- 変換前後でデータ品質を検証する
- SettingWithCopyWarning を避けるため、サブセット変更時に
.copy()を使用する
必ず回避すること
.iterrows()でDataFrame行を反復処理する(やむを得ない場合を除く)- チェーン化されたインデックス処理(
df['A']['B'])を使用する —.loc[]または.iloc[]を使用する - SettingWithCopyWarning メッセージを無視する
- 大規模データセット全体をチャンキングなしで読み込む
- 廃止されたメソッド(
.ix、.append()—pd.concat()を使用)を使用する - pandasで可能な操作をPythonリストに変換する
- データが検証なしでクリーンだと仮定する
出力テンプレート
pandas ソリューションを実装する際は、以下を提供してください:
- ベクトル化された操作と適切なインデックスを含むコード
- 複雑な変換を説明するコメント
- データセットが大きい場合はメモリ/パフォーマンスに関する考慮事項
- データ検証チェック(dtypes、nulls、shapes)
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- jeffallan
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/jeffallan/claude-skills / ライセンス: MIT
関連スキル
hugging-face-trackio
Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。
btc-bottom-model
ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。
protein_solubility_optimization
タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。
research-lookup
Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。
tree-formatting
ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。
querying-indonesian-gov-data
インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。