Skip to content
Back to skills

Pandas

BSecurity

Analyze, transform, and clean DataFrames with efficient patterns for filtering, grouping, merging, and pivoting.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
datapythongosqldatabasesecurity

Security analysis

B85/100
  • highPerforms destructive filesystem operations

Pro scans all 4 files and shows the line behind each finding

Scanned November 11, 2026

npx -y skills add johnalbertini14-glitch/openclaw-skills --skill pandas --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pandas?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Pandas
[![Security: B β€” Skills Directory](https://www.skillsdirectory.com/api/skills/johnalbertini14-glitch-pandas/badge)](https://www.skillsdirectory.com/skills/johnalbertini14-glitch-pandas)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: Pandas
slug: pandas
version: 1.0.0
homepage: https://clawic.com/skills/pandas
description: Analyze, transform, and clean DataFrames with efficient patterns for filtering, grouping, merging, and pivoting.
metadata: {"clawdbot":{"emoji":"🐼","requires":{"bins":["python3"]},"os":["linux","darwin","win32"]}}
---

## Setup

On first use, create `~/pandas/` and read `setup.md` for initialization. User preferences are stored in `~/pandas/memory.md` β€” users can view or edit this file anytime.

## When to Use

User needs to work with tabular data in Python. Agent handles DataFrame operations, data cleaning, aggregations, merges, pivots, and exports.

## Architecture

Memory lives in `~/pandas/`. See `memory-template.md` for structure.

```
~/pandas/
β”œβ”€β”€ memory.md     # User preferences and common patterns
└── snippets/     # Saved code patterns (optional)
```

## Quick Reference

| Topic | File |
|-------|------|
| Setup process | `setup.md` |
| Memory template | `memory-template.md` |

## Core Rules

### 1. Use Vectorized Operations
- NEVER iterate with `for` loops over DataFrame rows
- Use `.apply()` only when vectorized alternatives don't exist
- Prefer `df['col'].str.method()` over `apply(lambda x: x.method())`

### 2. Chain Methods for Readability
```python
# Good: method chaining
result = (df
    .query('age > 30')
    .groupby('city')
    .agg({'salary': 'mean'})
    .reset_index())

# Bad: intermediate variables everywhere
filtered = df[df['age'] > 30]
grouped = filtered.groupby('city')
result = grouped.agg({'salary': 'mean'}).reset_index()
```

### 3. Handle Missing Data Explicitly
- Always check `df.isna().sum()` before analysis
- Choose strategy: `dropna()`, `fillna()`, or interpolation
- Document WHY missing values exist before removing them

### 4. Use Categorical for Repeated Strings
```python
# Memory savings for columns with few unique values
df['status'] = df['status'].astype('category')
df['country'] = df['country'].astype('category')
```

### 5. Merge with Validation
```python
# Always specify how and validate
result = pd.merge(
    df1, df2,
    on='id',
    how='left',
    validate='m:1'  # Many-to-one: catch unexpected duplicates
)
```

### 6. Prefer query() for Complex Filters
```python
# Readable
df.query('age > 30 and city == "NYC" and salary < 100000')

# Hard to read
df[(df['age'] > 30) & (df['city'] == 'NYC') & (df['salary'] < 100000)]
```

### 7. Set Index When Appropriate
```python
# Faster lookups, cleaner merges
df = df.set_index('user_id')
user_data = df.loc[12345]  # O(1) lookup
```

## Common Traps

- **SettingWithCopyWarning** β†’ Use `.loc[]` for assignment: `df.loc[mask, 'col'] = value`
- **Slow loops** β†’ Replace `iterrows()` with vectorized ops or `apply()`
- **Memory explosion** β†’ Use `dtype` in `read_csv()`: `pd.read_csv(f, dtype={'id': 'int32'})`
- **Silent data loss** β†’ Check shape before/after merge: `print(f"Before: {len(df1)}, After: {len(result)}")`
- **Index confusion** β†’ Use `reset_index()` after `groupby()` to get clean DataFrame
- **Chained indexing** β†’ `df['a']['b']` fails silently; use `df.loc[:, ['a', 'b']]`

## Security & Privacy

**Data storage:**
- User preferences stored in `~/pandas/memory.md`
- All DataFrame operations run locally
- No data is sent externally

**This skill does NOT:**
- Upload data to any service
- Access files outside `~/pandas/` and the working directory
- Modify source data files without explicit instruction

**User control:**
- View stored preferences: `cat ~/pandas/memory.md`
- Clear all data: `rm -rf ~/pandas/`

## Related Skills
Install with `clawhub install <slug>` if user confirms:
- `data-analysis` β€” general data analysis patterns
- `csv` β€” CSV file handling
- `sql` β€” database queries
- `excel-xlsx` β€” Excel file operations

## Feedback

- If useful: `clawhub star pandas`
- Stay updated: `clawhub sync`

Files in this skill

  • SKILL.md3.8 KB
  • _meta.json269 B
  • memory-template.md837 B
  • setup.md721 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in data β†’

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.