data_analysis について
Polars を使ったデータ分析スキルで、分析担当者や開発者向けです。データセットの探索、変換、分析、可視化、出力に関する手順、資料、スクリプトを提供します。
主な機能
- 01一般的なデータ形式の読み込み
- 02テーブルのクリーニングと変換
- 03データの集計と分析
- 04時系列分析
- 05チャート作成と結果の出力
- 06探索・統計スクリプト
活用シーン
- 01未知のデータセットのプロファイリング
- 02データのクリーニングと結合
- 03グループ別または時系列データの集計
- 04チャートと出力ファイルの準備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ artificialanalysis/ stirrup --skill data_analysisインストール後、Claude Code で/data_analysisを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/transformations.mdstatistics.mdloading.mdvisualization.mdtime_series.mdaggregations.mdscripts/summary_stats.pyexplore_data.py詳細
データ分析スキル
Polars を使用した包括的なデータ分析ツールキットです。Polars は非常に高速な DataFrame ライブラリです。このスキルでは、一般的なデータ分析タスクの手順、リファレンスドキュメント、すぐに使えるスクリプトを提供します。
反復チェックポイント
| ステップ | 提示する内容 | ユーザー入力の種類 |
|---|---|---|
| データの読み込み | 形状、列、サンプル行 | 「このデータで合っていますか?」 |
| データの探索 | 要約統計量、データ品質の問題 | 「注目したい列はありますか?」 |
| 変換 | 変換前後の比較 | 「この変換で問題ありませんか?」 |
| 分析 | 主な調査結果、グラフ | 「さらに詳しく調べたい点はありますか?」 |
| エクスポート | 出力のプレビュー | 「保存してよいですか?それとも変更しますか?」 |
クイックスタート
import polars as pl
from polars import col
# Load data
df = pl.read_csv("data.csv")
# Explore
print(df.shape, df.schema)
df.describe()
# Transform and analyze
result = (
df.filter(col("value") > 0)
.group_by("category")
.agg(col("value").sum().alias("total"))
.sort("total", descending=True)
)
# Export
result.write_csv("output.csv")
このスキルを使用する場面
- データセットの読み込み(CSV、JSON、Parquet、Excel、データベース)
- データのクリーニング、フィルタリング、変換
- 集計、グループ化、ピボットテーブル
- 統計分析と要約統計量の算出
- 時系列分析とリサンプリング
- 複数のデータセットの結合とマージ
- 可視化とグラフの作成
- さまざまな形式への結果のエクスポート
スキルの内容
リファレンスドキュメント
特定の操作に関する詳細な API リファレンスとパターンです。
reference/loading.md- サポートされているすべての形式からのデータ読み込みreference/transformations.md- 列の操作、フィルタリング、並べ替え、型変換reference/aggregations.md- グループ化、ウィンドウ関数、累積合計reference/time_series.md- 日付の解析、リサンプリング、ラグ特徴量reference/statistics.md- 相関、分布、仮説検定の設定reference/visualization.md- matplotlib/plotly を使ったグラフの作成
すぐに使えるスクリプト
一般的なタスク向けの実行可能な Python スクリプトです。
scripts/explore_data.py- データセットのすばやい探索とプロファイリングscripts/summary_stats.py- 包括的な統計レポートの生成
基本パターン
データの読み込み
# CSV (most common)
df = pl.read_csv("data.csv")
# Lazy loading for large files
df = pl.scan_csv("large.csv").filter(col("x") > 0).collect()
# Parquet (recommended for large datasets)
df = pl.read_parquet("data.parquet")
# JSON
df = pl.read_json("data.json")
df = pl.read_ndjson("data.ndjson") # Newline-delimited
フィルタリングと選択
# Select columns
df.select("col1", "col2")
df.select(col("name"), col("value") * 2)
# Filter rows
df.filter(col("age") > 25)
df.filter((col("status") == "active") & (col("value") > 100))
df.filter(col("name").str.contains("Smith"))
変換
# Add/modify columns
df = df.with_columns(
(col("price") * col("qty")).alias("total"),
col("date_str").str.to_date("%Y-%m-%d").alias("date"),
)
# Conditional values
df = df.with_columns(
pl.when(col("score") >= 90).then(pl.lit("A"))
.when(col("score") >= 80).then(pl.lit("B"))
.otherwise(pl.lit("C"))
.alias("grade")
)
集計
# Group by
df.group_by("category").agg(
col("value").sum().alias("total"),
col("value").mean().alias("avg"),
pl.len().alias("count"),
)
# Window functions
df.with_columns(
col("value").sum().over("group").alias("group_total"),
col("value").rank().over("group").alias("rank_in_group"),
)
エクスポート
df.write_csv("output.csv")
df.write_parquet("output.parquet")
df.write_json("output.json", row_oriented=True)
ベストプラクティス
- 大規模なデータセットには遅延評価を使用します。
pl.scan_csv()と.collect()を組み合わせます。 - コストの高い処理を行う前に早めにフィルタリングして、データ量を減らします。
- メモリ使用量を最小限に抑えるため、必要な列だけを選択します。
- 保存にはParquet を優先します。I/O が高速で、圧縮効率も優れています。
- クエリプランを理解して最適化するには、
.explain()を使用します。
コメント
Markdown 対応