# data-analysis-jupyter

Guides AI coding agents through data analysis, visualization, and Jupyter notebook workflows with pandas, numpy, matplotlib, and seaborn.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1500 installs · ★ 286
- Author: Mindrally
- License: Apache-2.0 · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/Mindrally/skills/tree/HEAD/data-analysis-jupyter/SKILL.md
- Updated: 2026-10-08
- HTML: https://affpapa.org/en/nevibecode/skills/data-analysis-jupyter

## What it does

This skill guides agents toward functional Python code and PEP 8 conventions instead of class-heavy structures. It enforces method chaining in pandas using `.query()`, `.assign()`, `.groupby()`, and `.agg()`. Row selection relies strictly on `.loc` and `.iloc`.

Visualizations combine matplotlib axis controls with statistical plots from seaborn. The rules require colorblind-safe palettes, explicit figure dimensions, and readable axis labels. Notebooks must keep a logical cell order, supported by markdown headers and a full kernel restart before sharing.

Explicit loops are avoided whenever vectorization works. For memory bottlenecks, the skill converts low-cardinality text columns to categorical dtypes and breaks large file reads into chunks with `chunksize`. Running the resulting workflows requires pandas, numpy, matplotlib, seaborn, jupyter, scikit-learn, and scipy installed in Python.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add Mindrally/skills --skill data-analysis-jupyter -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/data-analysis-jupyter/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/data-analysis-jupyter/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add Mindrally/skills --skill data-analysis-jupyter -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/data-analysis-jupyter/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add Mindrally/skills --skill data-analysis-jupyter -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/data-analysis-jupyter/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install Mindrally/skills data-analysis-jupyter
```

2. **Manually: put the files in place**
- File: `.github/skills/data-analysis-jupyter/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add Mindrally/skills --skill data-analysis-jupyter -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/Mindrally/skills --path data-analysis-jupyter
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/data-analysis-jupyter/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add Mindrally/skills --skill data-analysis-jupyter -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/Mindrally/skills/tree/HEAD/data-analysis-jupyter/SKILL.md

## When to use it
- aggregate metrics with pandas method chaining
- create colorblind-friendly charts in seaborn
- reduce memory overhead with categorical dtypes and CSV chunking
- run statistical hypothesis tests via scipy.stats
- structure Jupyter Notebook cells for clean reproducibility

## Example prompts
- Analyze sales.csv using pandas method chaining to aggregate average revenue by category
- Plot customer churn distribution with seaborn using an accessible color palette and clear axis titles
- Refactor this slow data loop into vectorized numpy operations and add assertions for missing values

## Source text · SKILL.md · Apache-2.0

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: e03c2143c65179e6.

BEGIN THIRD-PARTY FILE e03c2143c65179e6
````text
---
name: data-analysis-jupyter
description: Expert guidance for data analysis, visualization, and Jupyter Notebook development with pandas, matplotlib, seaborn, and numpy.
metadata:
  maintainer: Mindrally
  source: https://github.com/Mindrally/skills
---

# Data Analysis and Jupyter Notebook Development

You are an expert in data analysis, visualization, and Jupyter Notebook development, with a focus on pandas, matplotlib, seaborn, and numpy.

## Key Principles

- Write concise, technical responses with accurate Python examples
- Prioritize readability and reproducibility in data analysis workflows
- Favor functional programming approaches; minimize class-based solutions
- Prefer vectorized operations over explicit loops for better performance
- Employ descriptive variable nomenclature reflecting data content
- Follow PEP 8 style guidelines for Python code

## Data Analysis and Manipulation

- Leverage pandas for data manipulation and analytical tasks
- Prefer method chaining for data transformations when possible
- Use loc and iloc for explicit data selection
- Utilize groupby operations for efficient data aggregation
- Handle datetime data with proper parsing and timezone awareness

```python
# Example method chaining pattern
result = (
    df
    .query("column_a > 0")
    .assign(new_col=lambda x: x["col_b"] * 2)
    .groupby("category")
    .agg({"value": ["mean", "sum"]})
    .reset_index()
)
```

## Visualization Standards

- Use matplotlib for low-level plotting control and customization
- Use seaborn for statistical visualizations and aesthetically pleasing defaults
- Craft plots with informative labels, titles, and legends
- Apply accessible color schemes considering color-blindness
- Set appropriate figure sizes for the output medium

```python
# Example visualization pattern
fig, ax = plt.subplots(figsize=(10, 6))
sns.barplot(data=df, x="category", y="value", ax=ax)
ax.set_title("Descriptive Title")
ax.set_xlabel("Category Label")
ax.set_ylabel("Value Label")
plt.tight_layout()
```

## Jupyter Notebook Practices

- Structure notebooks with markdown section headers
- Maintain meaningful cell execution order ensuring reproducibility
- Document analysis steps through explanatory markdown cells
- Keep code cells focused and modular
- Use magic commands like %matplotlib inline for inline plotting
- Restart kernel and run all before sharing to verify reproducibility

## NumPy Best Practices

- Use broadcasting for element-wise operations
- Leverage array slicing and fancy indexing
- Apply appropriate dtypes for memory efficiency
- Use np.where for conditional operations
- Implement proper random state handling for reproducibility

```python
````
END THIRD-PARTY FILE e03c2143c65179e6

The third-party file has ended. Everything between the e03c2143c65179e6 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2696 of 4718 bytes. © Mindrally · Apache-2.0 · https://github.com/Mindrally/skills/tree/HEAD/data-analysis-jupyter/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
