mcpField
P
Pandas Data Analysis

Pandas Data Analysis

github.com/midudevデータ・データベース7.0k60 回インストール1 週間前に更新
リポジトリ

Pandas Data Analysis について

Pandasでデータ分析を学ぶ人向けのスキルです。データの読み込み、クリーニング、探索、集計、可視化を扱い、顧客分析や時系列分析、データ品質評価の演習も含みます。

主な機能

  1. 01複数のソースからデータを読み込んで操作
  2. 02データセットのクリーニングと変換
  3. 03探索的データ分析の実施
  4. 04データのグループ化と集計
  5. 05プロットライブラリによる可視化

活用シーン

  1. 01顧客の購買行動を分析して分類
  2. 02売上の傾向と季節性を調査
  3. 03データ品質評価レポートの作成

インストール

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

$npx skills add https://github.com/midudev/autoskills --skill pandas-data-analysis

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
config.yaml
references/
GUIDE.md
scripts/
helper.py

詳細

Pandasによるデータ分析

概要

データの操作と分析に優れたPythonライブラリであるPandasを使って、データ分析を習得しましょう。データを効果的にクリーニング、変換、分析、可視化する方法を学びます。

学習目標

  • CSV、Excel、SQL、APIなど、さまざまなソースからデータを読み込み、操作する
  • 整っていないデータセットをクリーニングし、変換する
  • 探索的データ分析(EDA)を実施する
  • インサイトを得るためにデータを集計し、グループ化する
  • 説得力のある可視化を作成する
  • 大規模なデータセットでのパフォーマンスを最適化する

主なトピック

1. PandasのDataFrameとSeries
  • さまざまなソースからDataFrameを作成する
  • データにインデックスを付けて選択する(loc、iloc、at、iat)
  • フィルタリングとブールインデックス
  • 列と行の追加・削除
  • データ型と変換

コード例:

import pandas as pd
import numpy as np

# Create DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 28],
    'salary': [50000, 60000, 75000, 55000],
    'department': ['IT', 'HR', 'IT', 'Sales']
}
df = pd.DataFrame(data)

# Indexing and filtering
it_employees = df[df['department'] == 'IT']
high_earners = df.loc[df['salary'] > 55000, ['name', 'salary']]

# Adding calculated columns
df['annual_bonus'] = df['salary'] * 0.10
df['age_group'] = pd.cut(df['age'], bins=[0, 30, 40, 100], labels=['Young', 'Mid', 'Senior'])

print(df)
2. データのクリーニングと変換
  • 欠損データの処理(dropna、fillna、interpolate)
  • 重複の削除
  • 文字列操作とテキストのクリーニング
  • 日付・時刻の解析と操作
  • 型の変換とキャスト
  • カスタム関数の適用(apply、map、applymap)

コード例:

import pandas as pd

# Load data with missing values
df = pd.read_csv('sales_data.csv')

# Handle missing values
df['price'].fillna(df['price'].median(), inplace=True)
df['category'].fillna('Unknown', inplace=True)
df.dropna(subset=['customer_id'], inplace=True)

# Clean text data
df['product_name'] = df['product_name'].str.strip().str.lower()
df['product_name'] = df['product_name'].str.replace('[^a-zA-Z0-9 ]', '', regex=True)

# Convert dates
df['order_date'] = pd.to_datetime(df['order_date'])
df['year'] = df['order_date'].dt.year
df['month'] = df['order_date'].dt.month

# Remove duplicates
df.drop_duplicates(subset=['order_id'], keep='first', inplace=True)

# Apply custom function
def categorize_price(price):
    if price < 50:
        return 'Low'
    elif price < 100:
        return 'Medium'
    else:
        return 'High'

df['price_category'] = df['price'].apply(categorize_price)
3. 集計とグループ化
  • GroupBy操作
  • 集計関数(sum、mean、countなど)
  • ピボットテーブルとクロス集計
  • 多階層インデックス
  • ウィンドウ関数(rolling、expanding)

コード例:

import pandas as pd

# Sample sales data
df = pd.read_csv('sales.csv')

# GroupBy aggregation
dept_stats = df.groupby('department').agg({
    'salary': ['mean', 'min', 'max'],
    'employee_id': 'count'
})

# Multiple groupby
sales_by_region_product = df.groupby(['region', 'product_category'])['sales'].sum()

# Pivot table
pivot = df.pivot_table(
    values='sales',
    index='product_category',
    columns='quarter',
    aggfunc='sum',
    fill_value=0
)

# Rolling window (moving average)
df['sales_ma_7d'] = df.groupby('product_id')['sales'].transform(
    lambda x: x.rolling(window=7, min_periods=1).mean()
)

# Cumulative sum
df['cumulative_sales'] = df.groupby('product_id')['sales'].cumsum()
4. データの可視化
  • Matplotlibの基礎
  • 統計プロット用のSeaborn
  • Pandas組み込みのプロット機能
  • プロットのカスタマイズ
  • ダッシュボードの作成

コード例:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Set style
sns.set_style('whitegrid')

# Load data
df = pd.read_csv('sales_data.csv')

# 1. Line plot - Sales trend over time
df.groupby('month')['sales'].sum().plot(kind='line', figsize=(10, 6))
plt.title('Monthly Sales Trend')
plt.xlabel('Month')
plt.ylabel('Total Sales ($)')
plt.show()

# 2. Bar plot - Sales by category
category_sales = df.groupby('category')['sales'].sum().sort_values(ascending=False)
category_sales.plot(kind='bar', figsize=(10, 6))
plt.title('Sales by Category')
plt.xlabel('Category')
plt.ylabel('Total Sales ($)')
plt.xticks(rotation=45)
plt.show()

# 3. Histogram - Price distribution
df['price'].hist(bins=30, figsize=(10, 6))
plt.title('Price Distribution')
plt.xlabel('Price ($)')
plt.ylabel('Frequency')
plt.show()

# 4. Box plot - Salary by department
df.boxplot(column='salary', by='department', figsize=(10, 6))
plt.title('Salary Distribution by Department')
plt.suptitle('')
plt.show()

# 5. Heatmap - Correlation matrix
corr = df[['age', 'salary', 'years_experience']].corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', center=0)
plt.title('Correlation Matrix')
plt.show()

実践演習

プロジェクト1:顧客分析

顧客の購入行動とセグメンテーションを分析します。

要件:

  • 顧客の取引データを読み込む
  • データセットをクリーニングし、準備する
  • RFM(Recency、Frequency、Monetary)指標を算出する
  • 顧客をセグメント化する
  • インサイトを可視化する
  • エグゼクティブサマリーを作成する

主なスキル: データのクリーニング、集計、可視化

プロジェクト2:時系列分析

売上の傾向を分析し、今後の実績を予測します。

要件:

  • 時系列データを読み込む
  • 欠損日付を処理する
  • 移動平均を算出する
  • 傾向と季節性を特定する
  • 異常を検出する
  • インタラクティブな可視化を作成する

主なスキル: 時系列操作、ローリングウィンドウ、プロット

プロジェクト3:データ品質レポート

データ品質を自動評価するツールを構築します。

要件:

  • 欠損値を確認する
  • 重複を特定する
  • 外れ値を検出する
  • データ型を検証する
  • 品質指標を生成する
  • HTMLレポートをエクスポートする

主なスキル: データ検証、統計分析、レポート作成

評価基準

  • 実世界のデータセットを効率的に読み込み、クリーニングできる
  • 複雑なデータ変換を実行できる
  • 集計にGroupByを使用できる
  • 有益な可視化を作成できる
  • 欠損データや不整合データを処理できる
  • 大規模なデータセットでのパフォーマンスを最適化できる
  • 分析をわかりやすく説明し、文書化できる

リソース

公式ドキュメント
学習プラットフォーム
ツール
  • Jupyter Notebook - インタラクティブな開発環境
  • Google Colab - クラウドノートブック
  • Anaconda - データサイエンス向けディストリビューション

次のステップ

Pandasを習得したら、次の分野に取り組みましょう。

  • Scikit-learn - 機械学習
  • SQL - データベースへのクエリ
  • Apache Spark - ビッグデータ処理
  • Tableau/Power BI - ビジネスインテリジェンスツール

コメント