Pandas Data Analysis について
Pandasでデータ分析を学ぶ人向けのスキルです。データの読み込み、クリーニング、探索、集計、可視化を扱い、顧客分析や時系列分析、データ品質評価の演習も含みます。
主な機能
- 01複数のソースからデータを読み込んで操作
- 02データセットのクリーニングと変換
- 03探索的データ分析の実施
- 04データのグループ化と集計
- 05プロットライブラリによる可視化
活用シーン
- 01顧客の購買行動を分析して分類
- 02売上の傾向と季節性を調査
- 03データ品質評価レポートの作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ midudev/ autoskills --skill pandas-data-analysisインストール後、Claude Code で/pandas-data-analysisを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/config.yamlreferences/GUIDE.mdscripts/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を使用できる
- 有益な可視化を作成できる
- 欠損データや不整合データを処理できる
- 大規模なデータセットでのパフォーマンスを最適化できる
- 分析をわかりやすく説明し、文書化できる
リソース
公式ドキュメント
- Pandas Docs - 公式ドキュメント
- NumPy Docs - NumPyのドキュメント
- Matplotlib Docs - プロット用ライブラリ
学習プラットフォーム
- Kaggle - 無料のPandasコース
- DataCamp - インタラクティブなコース
- Python for Data Analysis - Wes McKinneyの著書
ツール
- Jupyter Notebook - インタラクティブな開発環境
- Google Colab - クラウドノートブック
- Anaconda - データサイエンス向けディストリビューション
次のステップ
Pandasを習得したら、次の分野に取り組みましょう。
- Scikit-learn - 機械学習
- SQL - データベースへのクエリ
- Apache Spark - ビッグデータ処理
- Tableau/Power BI - ビジネスインテリジェンスツール
コメント
Markdown 対応