Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

pandas-pro — Claude Code skill: DataFrame operations

Skill for efficient pandas work: data cleaning, aggregation, table joins, time series. Useful if you manipulate DataFrames often and want to skip indexing errors and row loops.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add Jeffallan/claude-skills --skill pandas-pro -a claude-code
Open on GitHub

What pandas-pro does

pandas-pro teaches the AI coder vectorized operations instead of row-by-row loops. The skill contains patterns for safe subsetting via .copy(), grouped aggregations with validation, merging tables with key uniqueness checks, handling missing values through interpolation or forward-fill, and memory optimization.

Inside are ready-to-use examples: how to avoid SettingWithCopyWarning, proper groupby with multiple keys, time series resampling, pivot tables, and converting strings to categories to save memory. The skill requires Python and pandas; version depends on your environment.

Good for analysts and backend developers working with data in notebooks or scripts. For small DataFrames and simple tasks, the skill is optional; for large data or complex logic, it saves debugging time on indexing and performance.

What it helps with

  • clean data: fill gaps, remove duplicates, convert types
  • join multiple tables on keys with correctness checks
  • group data and compute metrics by category
  • resample a time series and interpolate missing values
  • optimize memory of a large DataFrame without data loss

Example prompts for the agent

  • I have a CSV with 5M rows. Help me write it efficiently: fill price gaps, group by city and category, sum revenue and average price.
  • Need to merge two tables on customer_id and date. Check that the right key is unique, show which left rows have no match.
  • My time series has daily data with gaps. Resample to weekly with sum of revenue and session count.

How to install pandas-pro

1Skills CLI (Vercel)

npx skills add Jeffallan/claude-skills --skill pandas-pro -a claude-code

2Manually: put the files in place

~/.claude/skills/pandas-pro/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/pandas-pro/

From the same set61

The whole set →
laravel-specialist https://github.com/Jeffallan Configures the agent for Laravel 10+ and PHP 8.2+ development. It guides Eloquent modeling, Horizon queues, API resources, and Pest testing. Claude Code CX Codex Cursor +1 23,300installs golang-pro https://github.com/Jeffallan A Go skill for concurrent code, microservices, performance profiling, and idiomatic interfaces. Use it for goroutines, gRPC, benchmarks, and table-driven tests. Claude Code CX Codex Cursor +1 18,900installs php-pro https://github.com/Jeffallan Enforces PHP 8.3+ standards across Laravel and Symfony projects with strict typing, PHPStan level 9 checks, and automated Pest tests. Claude Code CX Codex Cursor +1 15,500installs flutter-expert https://github.com/Jeffallan Skill for building cross-platform apps with Flutter 3+ and Dart. Covers widgets, state management via Riverpod or Bloc, GoRouter navigation, and performance optimization. Claude Code CX Codex Cursor +1 14,300installs typescript-pro https://github.com/Jeffallan Implements advanced TypeScript type systems, branded types, and tRPC configurations. Use it when building type-first APIs or complex discriminated unions. Claude Code CX Codex Cursor +1 14,200installs kubernetes-specialist https://github.com/Jeffallan This skill helps create and validate Kubernetes manifests, set workload security, and troubleshoot failing pods. Use it for deployment and cluster operations. Claude Code CX Codex Cursor +1 14,100installs devops-engineer https://github.com/Jeffallan This skill creates Dockerfiles, CI/CD configs, Kubernetes manifests, and IaC templates. Use it for deployments, platform work, and incident response. Claude Code CX Codex Cursor +1 11,200installs wordpress-pro https://github.com/Jeffallan This skill builds WordPress themes, plugins, Gutenberg blocks, and WooCommerce features. Use it for REST API work, hooks, security checks, and performance tuning. Claude Code CX Codex Cursor +1 9,700installs

Similar

creating-oracle-to-postgres-migration-integration-tests official github Creates Oracle integration tests for .NET data access artifacts before a PostgreSQL migration, preserving expected database behavior as the test baseline. GitHub Copilot 1,800installs creating-oracle-to-postgres-migration-bug-report official github Creates structured bug reports for Oracle-to-PostgreSQL migration defects. Use it when a database behaviour difference needs a reproducible report with a cause and validation plan. GitHub Copilot 1,800installs creating-oracle-to-postgres-master-migration-plan official github This skill scans a .NET solution, finds Oracle dependencies, and builds a PostgreSQL migration plan. Use it before coordinating a migration across several projects. GitHub Copilot 1,800installs statistical-analysis K-Dense-AI Runs hypothesis tests with assumption checking, effect sizes, and APA-formatted reports. Covers t-tests, ANOVA, correlation, regression, non-parametric and Bayesian methods. Claude Code CX Codex Cursor +1 2,300installs prisma-8 prisma Guides coding agents through data contracts, migrations, and queries in Prisma 8. Use it in projects running @prisma/orm-postgres, @prisma/orm-sqlite, or @prisma/orm-mongo. Claude Code CX Codex Cursor +1 305installs airtable community Ready-made curl calls for Airtable's REST API: read records, filter with formulas, write in batches, upsert on a merge field. Claude Code CX Codex Cursor +1 375installs xlsx official anthropics Creates, reads, edits, and converts spreadsheet files. Use it when the requested deliverable is an Excel workbook or another tabular file. Claude Code Claude.ai 187,223installs google-agents-cli-observability official Google This skill guides you through tracing and monitoring AI agents, including ADK agents. Use it when you need to inspect agent execution or monitor a deployed agent. Claude Code CX Codex Cursor +1 509,900installs

Questions about pandas-pro

How do I install pandas-pro in Claude Code?

Run npx skills add Jeffallan/claude-skills --skill pandas-pro -a claude-code in the terminal, then repeat npx skills add Jeffallan/claude-skills --skill pandas-pro -a claude-code, and the skill file will appear at ~/.claude/skills/pandas-pro/SKILL.md.

What does pandas-pro do?

It teaches the AI coder to write pandas code without errors: vectorized operations instead of loops, correct indexing via .loc[], safe table merging with validation, missing value handling, and memory optimization.

What dependencies does the skill need?

The skill requires Python and the pandas library. Version depends on your project; the skill works with current pandas versions.

Source text

SKILL.md · MIT
---
name: pandas-pro
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.
license: MIT
metadata:
  author: https://github.com/Jeffallan
  company: https://synergetic.solutions
  version: "1.1.0"
  domain: data-ml
  triggers: pandas, DataFrame, data manipulation, data cleaning, aggregation, groupby, merge, join, time series, data wrangling, pivot table, data transformation
  role: expert
  scope: implementation
  output-format: code
  related-skills: python-pro
---

# Pandas Pro

Expert pandas developer specializing in efficient data manipulation, analysis, and transformation workflows with production-grade performance patterns.

## Core Workflow

1. **Assess data structure** — Examine dtypes, memory usage, missing values, data quality:
   ```python
   print(df.dtypes)
   print(df.memory_usage(deep=True).sum() / 1e6, "MB")
   print(df.isna().sum())
   print(df.describe(include="all"))
   ```
2. **Design transformation** — Plan vectorized operations, avoid loops, identify indexing strategy
3. **Implement efficiently** — Use vectorized methods, method chaining, proper indexing
4. **Validate results** — Check dtypes, shapes, null counts, and row counts:
   ```python
   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
   ```
5. **Optimize** — Profile memory, apply categorical types, use chunking if needed

## Reference Guide

Load detailed guidance based on context:

| Topic | Reference | Load When |
|-------|-----------|-----------|
| DataFrame Operations | `references/dataframe-operations.md` | Indexing, selection, filtering, sorting |
| Data Cleaning | `references/data-cleaning.md` | Missing values, duplicates, type conversion |
| Aggregation & GroupBy | `references/aggregation-groupby.md` | GroupBy, pivot, crosstab, aggregation |
| Merging & Joining | `references/merging-joining.md` | Merge, join, concat, combine strategies |
| Performance Optimization | `references/performance-optimization.md` | Memory usage, vectorization, chunking |

## Code Patterns

### Vectorized Operations (before/after)

```python
# ❌ AVOID: row-by-row iteration
for i, row in df.iterrows():
    df.at[i, 'tax'] = row['price'] * 0.2

# ✅ USE: vectorized assignment
df['tax'] = df['price'] * 0.2
```

### Safe Subsetting with `.copy()`

```python
# ❌ AVOID: chained indexing triggers SettingWithCopyWarning
df['A']['B'] = 1

# ✅ USE: .loc[] with explicit copy when mutating a subset
subset = df.loc[df['status'] == 'active', :].copy()
subset['score'] = subset['score'].fillna(0)
```

### GroupBy Aggregation

```python
summary = (
    df.groupby(['region', 'category'], observed=True)
    .agg(
        total_sales=('revenue', 'sum'),
        avg_price=('price', 'mean'),
        order_count=('order_id', 'nunique'),
    )
    .reset_index()
)
```

### Merge with Validation

```python
merged = pd.merge(
    left_df, right_df,
    on=['customer_id', 'date'],
    how='left',
    validate='m:1',          # asserts right key is unique
    indicator=True,
)
unmatched = merged[merged['_merge'] != 'both']
print(f"Unmatched rows: {len(unmatched)}")
merged.drop(columns=['_merge'], inplace=True)
```

### Missing Value Handling

```python
# Forward-fill then interpolate numeric gaps
df['price'] = df['price'].ffill().interpolate(method='linear')

# Fill categoricals with mode, numerics with median
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())
```

### Time Series Resampling

```python
daily = (
    df.set_index('timestamp')
    .resample('D')
    .agg({'revenue': 'sum', 'sessions': 'count'})
    .fillna(0)
)
```

### Pivot Table

```python
pivot = df.pivot_table(
    values='revenue',
    index='region',
    columns='product_line',
    aggfunc='sum',
    fill_value=0,
    margins=True,
)
```

### Memory Optimization

```python
# Downcast numerics and convert low-cardinality strings to categorical
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")
```

## Constraints

### MUST DO
- Use vectorized operations instead of loops
- Set appropriate dtypes (categorical for low-cardinality strings)
- Check memory usage with `.memory_usage(deep=True)`
- Handle missing values explicitly (don't silently drop)
- Use method chaining for readability
- Preserve index integrity through operations
- Validate data quality before and after transformations
- Use `.copy()` when modifying subsets to avoid SettingWithCopyWarning

### MUST NOT DO
- Iterate over DataFrame rows with `.iterrows()` unless absolutely necessary
- Use chained indexing (`df['A']['B']`) — use `.loc[]` or `.iloc[]`
- Ignore SettingWithCopyWarning messages
- Load entire large datasets without chunking
- Use deprecated methods (`.ix`, `.append()` — use `pd.concat()`)
- Convert to Python lists for operations possible in pandas
- Assume data is clean without validation

## Output Templates

When implementing pandas solutions, provide:
1. Code with vectorized operations and proper indexing
2. Comments explaining complex transformations
3. Memory/performance considerations if dataset is large
4. Data validation checks (dtypes, nulls, shapes)

Maintained by [@jeffallan](https://github.com/jeffallan), Principal Consultant at [Synergetic Solutions](https://synergetic.solutions)

[Documentation](https://jeffallan.github.io/claude-skills/skills/data-ml/pandas-pro/)

© https://github.com/Jeffallan · MIT · Jeffallan/claude-skills

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor