Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
beita6969 avatar

Data Analysis

  • 20 installs
  • 869 repo stars
  • Updated June 8, 2026
  • beita6969/scienceclaw

data-analysis is a Claude skill for scientific data analysis in Python covering cleaning, EDA, statistical testing, regression, and reporting.

About

This skill performs scientific data analysis with Python, covering data loading, cleaning, exploratory analysis, statistical testing, regression, and reporting. A developer uses it to clean a dataset, run EDA with visualizations, choose and apply the right statistical test, and fit regression models. It includes a decision table for matching tests to data type and distribution.

  • End-to-end scientific data analysis: loading, cleaning, EDA, testing, regression, reporting
  • Uses pandas, scipy, statsmodels, seaborn with a test-selection decision table
  • Guides statistical reporting format including effect sizes and confidence intervals

Data Analysis by the numbers

  • 20 all-time installs (skills.sh)
  • Ranked #1,266 of 2,065 Data Science & ML skills by installs in the Skillselion catalog
  • Data as of Aug 2, 2026 (Skillselion catalog sync)
At a glance

data-analysis capabilities & compatibility

Free; uses open-source Python data libraries in a local venv

Capabilities
data stats analysis · code execution · data extractor
Use cases
data analysis · research
Pricing
Free
From the docs

What data-analysis says it does

Scientific data analysis with Python.
SKILL.md
Always check assumptions before parametric tests
SKILL.md
Report effect sizes, not just p-values
SKILL.md
npx skills add https://github.com/beita6969/scienceclaw --skill data-analysis

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs20
repo stars869
Last updatedJune 8, 2026
Repositorybeita6969/scienceclaw

What it does

Clean a dataset, run EDA and the correct statistical test, fit a regression, and report results.

Who is it for?

Cleaning datasets, running EDA, choosing statistical tests, and fitting regression models

Skip if: Extracting data from figure images or verifying numerical convergence

When should I use this skill?

You need to analyze data, clean a dataset, run statistics, do EDA, or fit a model

What you get

Produced a cleaned dataset, EDA visualizations, and correctly reported statistical results

  • cleaned datasets
  • EDA figures
  • statistical test results

By the numbers

  • 6-step workflow (loading to reporting)
  • 6-row test-selection decision table
  • supports OLS, logistic, and mixed-effects regression

Files

SKILL.mdMarkdownGitHub ↗

Data Analysis

Scientific data analysis with Python. All scripts use the venv at /Users/zhangmingda/clawd/.venv.

Setup

source /Users/zhangmingda/clawd/.venv/bin/activate

Workflow

1. Data Loading

import pandas as pd
import numpy as np

# CSV
df = pd.read_csv('data.csv')
# Excel
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# JSON
df = pd.read_json('data.json')
# Clipboard (from user paste)
# Save user's data to a temp file first, then read

# Quick inspection
print(f"Shape: {df.shape}")
print(f"Columns: {list(df.columns)}")
print(df.dtypes)
print(df.describe())
print(f"Missing values:\n{df.isnull().sum()}")

2. Data Cleaning

# Missing values
df.dropna(subset=['critical_column'])
df['col'].fillna(df['col'].median(), inplace=True)

# Duplicates
df.drop_duplicates(inplace=True)

# Outliers (IQR method)
Q1, Q3 = df['col'].quantile([0.25, 0.75])
IQR = Q3 - Q1
mask = (df['col'] >= Q1 - 1.5*IQR) & (df['col'] <= Q3 + 1.5*IQR)
df_clean = df[mask]

# Type conversion
df['date'] = pd.to_datetime(df['date'])
df['category'] = df['category'].astype('category')

3. Exploratory Data Analysis

import matplotlib.pyplot as plt
import seaborn as sns

# Distribution
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
for i, col in enumerate(numeric_cols[:4]):
    ax = axes[i//2, i%2]
    sns.histplot(df[col], kde=True, ax=ax)
    ax.set_title(col)
plt.tight_layout()
plt.savefig('distributions.png', dpi=150)

# Correlation matrix
corr = df[numeric_cols].corr()
sns.heatmap(corr, annot=True, cmap='RdBu_r', center=0, fmt='.2f')
plt.savefig('correlation.png', dpi=150)

# Pairplot for key variables
sns.pairplot(df[key_cols], hue='group')
plt.savefig('pairplot.png', dpi=150)

4. Statistical Tests

Choose test based on:

  • Data type: continuous vs categorical
  • Distribution: normal vs non-normal (Shapiro-Wilk test)
  • Groups: 2 vs 3+ groups
  • Pairing: independent vs paired/repeated
ScenarioNormalNon-normal
2 independent groupsIndependent t-testMann-Whitney U
2 paired groupsPaired t-testWilcoxon signed-rank
3+ independent groupsOne-way ANOVAKruskal-Wallis
3+ paired groupsRepeated measures ANOVAFriedman
Association (continuous)Pearson rSpearman ρ
Association (categorical)Chi-squareFisher's exact
from scipy import stats

# Normality test
stat, p = stats.shapiro(df['col'])
print(f"Shapiro-Wilk: W={stat:.4f}, p={p:.4f}")

# t-test
t, p = stats.ttest_ind(group1, group2)
# Effect size (Cohen's d)
d = (group1.mean() - group2.mean()) / np.sqrt((group1.std()**2 + group2.std()**2) / 2)

# ANOVA
f, p = stats.f_oneway(g1, g2, g3)

# Chi-square
chi2, p, dof, expected = stats.chi2_contingency(pd.crosstab(df['a'], df['b']))

# Correlation
r, p = stats.pearsonr(df['x'], df['y'])

5. Regression

import statsmodels.api as sm
import statsmodels.formula.api as smf

# OLS
model = smf.ols('y ~ x1 + x2 + C(group)', data=df).fit()
print(model.summary())

# Logistic
model = smf.logit('outcome ~ x1 + x2', data=df).fit()
print(model.summary())

# Mixed effects
model = smf.mixedlm('y ~ x1 + x2', data=df, groups=df['subject']).fit()

6. Reporting

Always report:

  • Sample size (N) and any exclusions
  • Descriptive statistics (M, SD or Median, IQR)
  • Test statistic, degrees of freedom, p-value
  • Effect size with confidence interval
  • Assumptions checked (normality, homogeneity of variance)

Format: "A significant difference was found between groups, t(48) = 2.31, p = .025, Cohen's d = 0.65, 95% CI [0.08, 1.22]."

Tips

  • Always check assumptions before parametric tests
  • Report effect sizes, not just p-values
  • Use Bonferroni or FDR correction for multiple comparisons
  • Visualize data before and after analysis
  • Save all outputs as files the user can download

Related skills

FAQ

How does it choose a statistical test?

By data type, distribution normality, number of groups, and pairing, using a decision table mapping scenarios to parametric and non-parametric tests.

What should analysis reports always include?

Sample size and exclusions, descriptive statistics, test statistic with degrees of freedom and p-value, effect size with confidence interval, and assumptions checked.

Data Science & MLanalyticspipelines

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.