Skill: AI data analyst
Purpose
Perform comprehensive data analysis, statistical modeling, and data visualization by writing and executing self-contained Python scripts. Generate publication-quality charts, statistical reports, and actionable insights from data files or databases.
When to use this skill
- You need to analyze datasets to understand patterns, trends, or relationships.
- You want to perform statistical tests or build predictive models.
- You need data visualizations (charts, graphs, dashboards) to communicate findings.
- You're doing exploratory data analysis (EDA) to understand data structure and quality.
- You need to clean, transform, or merge datasets for analysis.
- You want reproducible analysis with documented methodology and code.
- You are performing Convex Backend Engineering (schema design, query optimization, log analysis).
Key capabilities
Unlike point-solution data analysis tools:
- Convex Engineering Integration: Native support for Convex MCP tools (
mcp_convex) and CLI.
- Full Python ecosystem: Access to pandas, numpy, scikit-learn, statsmodels, matplotlib, seaborn, plotly, and more.
- Runs locally: Your data stays on your machine; no uploads to third-party services.
- Reproducible: All analysis is code-based and version controllable.
- Customizable: Extend with any Python library or custom analysis logic.
- Publication-quality output: Generate professional charts and reports.
- Statistical rigor: Access to comprehensive statistical and ML libraries.
Inputs
- Data sources: CSV files, Excel files, JSON, Parquet, or database connections.
- Analysis goals: Questions to answer or hypotheses to test.
- Variables of interest: Specific columns, metrics, or dimensions to focus on.
- Output preferences: Chart types, report format, statistical tests needed.
- Context: Business domain, data dictionary, or known data quality issues.
Out of scope
- Real-time streaming data analysis (use appropriate streaming tools).
- Extremely large datasets requiring distributed computing (use Spark/Dask instead).
- Production ML model deployment (use ML ops tools and infrastructure).
- Live dashboarding (use BI tools like Tableau/Looker for operational dashboards).
Conventions and best practices
Python environment
- Use virtual environments to isolate dependencies.
- Install only necessary packages for the specific analysis.
- Document all dependencies in
requirements.txt or environment.yml.
Code structure
- Write self-contained scripts that can be re-run by others.
- Use clear variable names and add comments for complex logic.
- Separate concerns: data loading, cleaning, analysis, visualization.
- Save intermediate results to files when analysis is multi-stage.
Data handling
- Never modify source data files – work on copies or in-memory dataframes.
- Document data transformations clearly in code comments.
- Handle missing values explicitly and document approach.
- Validate data quality before analysis (check for nulls, outliers, duplicates).
Visualization best practices
- Choose appropriate chart types for the data and question.
- Use clear labels, titles, and legends on all charts.
- Apply appropriate color schemes (colorblind-friendly when possible).
- Include sample sizes and confidence intervals where relevant.
- Save visualizations in high-resolution formats (PNG 300 DPI, SVG for vector graphics).
Statistical analysis
- State assumptions for statistical tests clearly.
- Check assumptions before applying tests (normality, homoscedasticity, etc.).
- Report effect sizes not just p-values.
- Use appropriate corrections for multiple comparisons.
- Explain practical significance in addition to statistical significance.
Required behavior
- Understand the question: Clarify what insights or decisions the analysis should support.
- Explore the data: Check structure, types, missing values, distributions, outliers.
- Clean and prepare: Handle missing data, outliers, and transformations appropriately.
- Analyze systematically: Apply appropriate statistical methods or ML techniques.
- Visualize effectively: Create clear, informative charts that answer the question.
- Generate insights: Translate statistical findings into actionable business insights.
- Document thoroughly: Explain methodology, assumptions, limitations, and conclusions.
- Make reproducible: Ensure others can re-run the analysis and get the same results.
Required artifacts
- Analysis script(s): Well-documented Python code performing the analysis.
- Visualizations: Charts saved as high-quality image files (PNG/SVG).
- Analysis report: Markdown or text document summarizing:
- Research question and methodology
- Data description and quality assessment
- Key findings with supporting statistics
- Visualizations with interpretations
- Limitations and caveats
- Recommendations or next steps
- Requirements file:
requirements.txt with all dependencies.
- Sample data (if appropriate and non-sensitive): Small sample for reproducibility.
Implementation checklist
1. Data exploration and preparation
2. Data cleaning and transformation
3. Analysis execution
4. Visualization
5. Reporting
6. Reproducibility
Convex Engineering Workflow
When working with Convex (backend, database, schemas), you MUST follow this specialized workflow:
1. Protocols & Rules
- READ FIRST: Always read
resources/convex_rules.md before writing any Convex code.
- Command:
view_file(AbsolutePath=".../resources/convex_rules.md")
- MCP Integration: Use
mcp_convex tools to inspect CURRENT state before proposing changes.
mcp_convex_tables: Check table schemas.
mcp_convex_functionSpec: Check existing functions.
mcp_convex_logs: Analyze recent failures.
2. Implementation & fix
- CLI First: Use
bunx convex for all operations.
- DO NOT use generic SQL or other DB commands.
- Example:
bunx convex run serena/actions:doSomething
- Log Analysis:
- When debugging, pull logs via
bunx convex logs --prod --failure OR mcp_convex_logs.
- Analyze stack traces using Python scripts if text analysis is insufficient.
3. Code Generation
- Schema: Define in
convex/schema.ts using defineSchema and defineTable.
- Functions: Use
query, mutation, action from _generated/server.
- Validation: Ensure
args and returns validators (e.g., v.string(), v.id()) are strictly typed.
Verification
Run the following to verify the analysis:
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows
# Install dependencies
pip install -r requirements.txt
# Run analysis script
python analysis.py
# Check outputs generated
ls -lh outputs/
The skill is complete when:
- Analysis script runs without errors from clean environment.
- All required visualizations are generated in high quality.
- Report clearly explains methodology, findings, and limitations.
- Results are interpretable and actionable.
- Code is well-documented and reproducible.
Common analysis patterns
Exploratory Data Analysis (EDA)
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Load and inspect data
df = pd.read_csv('data.csv')
print(df.info())
print(df.describe())
# Check for missing values
print(df.isnull().sum())
# Visualize distributions
df.hist(figsize=(12, 10), bins=30)
plt.tight_layout()
plt.savefig('distributions.png', dpi=300)
# Check correlations
corr = df.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.savefig('correlations.png', dpi=300)
Time series analysis
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.seasonal import seasonal_decompose
# Load time series data
df = pd.read_csv('timeseries.csv', parse_dates=['date'])
df.set_index('date', inplace=True)
# Decompose time series
decomposition = seasonal_decompose(df['value'], model='additive', period=30)
fig = decomposition.plot()
fig.set_size_inches(12, 8)
plt.savefig('decomposition.png', dpi=300)
# Calculate rolling statistics
df['rolling_mean'] = df['value'].rolling(window=7).mean()
df['rolling_std'] = df['value'].rolling(window=7).std()
# Plot with trends
plt.figure(figsize=(12, 6))
plt.plot(df['value'], label='Original')
plt.plot(df['rolling_mean'], label='7-day Moving Avg', linewidth=2)
plt.fill_between(df.index,
df['rolling_mean'] - df['rolling_std'],
df['rolling_mean'] + df['rolling_std'],
alpha=0.3)
plt.legend()
plt.savefig('trends.png', dpi=300)
Statistical hypothesis testing
from scipy import stats
import numpy as np
# Compare two groups
group_a = df[df['group'] == 'A']['metric']
group_b = df[df['group'] == 'B']['metric']
# Check normality
_, p_norm_a = stats.shapiro(group_a)
_, p_norm_b = stats.shapiro(group_b)
# Choose appropriate test
if p_norm_a > 0.05 and p_norm_b > 0.05:
# Parametric test (t-test)
statistic, p_value = stats.ttest_ind(group_a, group_b)
test_used = "Independent t-test"
else:
# Non-parametric test (Mann-Whitney U)
statistic, p_value = stats.mannwhitneyu(group_a, group_b)
test_used = "Mann-Whitney U test"
# Calculate effect size (Cohen's d)
pooled_std = np.sqrt((group_a.std()**2 + group_b.std()**2) / 2)
cohens_d = (group_a.mean() - group_b.mean()) / pooled_std
print(f"Test used: {test_used}")
print(f"Test statistic: {statistic:.4f}")
print(f"P-value: {p_value:.4f}")
print(f"Effect size (Cohen's d): {cohens_d:.4f}")
Predictive modeling
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
# Prepare data
X = df.drop('target', axis=1)
y = df['target']
# Split data
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# Train model
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# Evaluate
y_pred = model.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
r2 = r2_score(y_test, y_pred)
print(f"RMSE: {rmse:.4f}")
print(f"R² Score: {r2:.4f}")
# Feature importance
importance = pd.DataFrame({
'feature': X.columns,
'importance': model.feature_importances_
}).sort_values('importance', ascending=False)
plt.figure(figsize=(10, 6))
plt.barh(importance['feature'][:10], importance['importance'][:10])
plt.xlabel('Feature Importance')
plt.title('Top 10 Most Important Features')
plt.tight_layout()
plt.savefig('feature_importance.png', dpi=300)
Recommended Python libraries
Data manipulation
- pandas: Data manipulation and analysis
- numpy: Numerical computing
- polars: High-performance DataFrame library (alternative to pandas)
Visualization
- matplotlib: Foundational plotting library
- seaborn: Statistical visualizations
- plotly: Interactive charts
- altair: Declarative statistical visualization
Statistical analysis
- scipy.stats: Statistical functions and tests
- statsmodels: Statistical modeling
- pingouin: Statistical tests with clear output
Machine learning
- scikit-learn: ML algorithms and tools
- xgboost: Gradient boosting
- lightgbm: Fast gradient boosting
Time series
- statsmodels.tsa: Time series analysis
- prophet: Forecasting tool
- pmdarima: Auto ARIMA
Specialized
- networkx: Network analysis
- geopandas: Geospatial data analysis
- textblob / spacy: Natural language processing
Safety and escalation
- Data privacy: Never analyze or share data containing PII without proper authorization.
- Statistical validity: If sample sizes are too small for reliable inference, call this out explicitly.
- Causal claims: Avoid implying causation from correlational analysis; be explicit about limitations.
- Model limitations: Document when models may not generalize or when predictions should not be trusted.
- Data quality: If data quality issues could materially affect conclusions, flag this prominently.
Integration with other skills
This skill can be combined with:
- Internal data querying: To fetch data from warehouses or databases for analysis.
- Web app builder: To create interactive dashboards displaying analysis results.
- Internal tools: To build analysis tools for non-technical stakeholders.
1---2name: ai-data-analyst3description: Perform comprehensive data analysis, statistical modeling, and data visualization by writing and executing self-contained Python scripts. Use when you need to analyze datasets, perform statistical tests, create visualizations, or build predictive models with reproducible, code-based workflows.4---5
6# Skill: AI data analyst
7
8## Purpose
9
10Perform comprehensive data analysis, statistical modeling, and data visualization by writing and executing self-contained Python scripts. Generate publication-quality charts, statistical reports, and actionable insights from data files or databases.
11
12## When to use this skill
13
14- You need to **analyze datasets** to understand patterns, trends, or relationships.
15- You want to perform **statistical tests** or build predictive models.
16- You need **data visualizations** (charts, graphs, dashboards) to communicate findings.
17- You're doing **exploratory data analysis** (EDA) to understand data structure and quality.
18- You need to **clean, transform, or merge** datasets for analysis.
19- You want **reproducible analysis** with documented methodology and code.
20- You are performing **Convex Backend Engineering** (schema design, query optimization, log analysis).
21
22## Key capabilities
23
24Unlike point-solution data analysis tools:
25
26- **Convex Engineering Integration**: Native support for Convex MCP tools (`mcp_convex`) and CLI.
27- **Full Python ecosystem**: Access to pandas, numpy, scikit-learn, statsmodels, matplotlib, seaborn, plotly, and more.
28- **Runs locally**: Your data stays on your machine; no uploads to third-party services.
29- **Reproducible**: All analysis is code-based and version controllable.
30- **Customizable**: Extend with any Python library or custom analysis logic.
31- **Publication-quality output**: Generate professional charts and reports.
32- **Statistical rigor**: Access to comprehensive statistical and ML libraries.
33
34## Inputs
35
36- **Data sources**: CSV files, Excel files, JSON, Parquet, or database connections.
37- **Analysis goals**: Questions to answer or hypotheses to test.
38- **Variables of interest**: Specific columns, metrics, or dimensions to focus on.
39- **Output preferences**: Chart types, report format, statistical tests needed.
40- **Context**: Business domain, data dictionary, or known data quality issues.
41
42## Out of scope
43
44- Real-time streaming data analysis (use appropriate streaming tools).
45- Extremely large datasets requiring distributed computing (use Spark/Dask instead).
46- Production ML model deployment (use ML ops tools and infrastructure).
47- Live dashboarding (use BI tools like Tableau/Looker for operational dashboards).
48
49## Conventions and best practices
50
51### Python environment
52
53- Use **virtual environments** to isolate dependencies.
54- Install only necessary packages for the specific analysis.
55- Document all dependencies in `requirements.txt` or `environment.yml`.
56
57### Code structure
58
59- Write **self-contained scripts** that can be re-run by others.
60- Use **clear variable names** and add comments for complex logic.
61- **Separate concerns**: data loading, cleaning, analysis, visualization.
62- Save **intermediate results** to files when analysis is multi-stage.
63
64### Data handling
65
66- **Never modify source data files** – work on copies or in-memory dataframes.
67- **Document data transformations** clearly in code comments.
68- **Handle missing values** explicitly and document approach.
69- **Validate data quality** before analysis (check for nulls, outliers, duplicates).
70
71### Visualization best practices
72
73- Choose **appropriate chart types** for the data and question.
74- Use **clear labels, titles, and legends** on all charts.
75- Apply **appropriate color schemes** (colorblind-friendly when possible).
76- Include **sample sizes and confidence intervals** where relevant.
77- Save visualizations in **high-resolution formats** (PNG 300 DPI, SVG for vector graphics).
78
79### Statistical analysis
80
81- **State assumptions** for statistical tests clearly.
82- **Check assumptions** before applying tests (normality, homoscedasticity, etc.).
83- **Report effect sizes** not just p-values.
84- **Use appropriate corrections** for multiple comparisons.
85- **Explain practical significance** in addition to statistical significance.
86
87## Required behavior
88
891. **Understand the question**: Clarify what insights or decisions the analysis should support.
902. **Explore the data**: Check structure, types, missing values, distributions, outliers.
913. **Clean and prepare**: Handle missing data, outliers, and transformations appropriately.
924. **Analyze systematically**: Apply appropriate statistical methods or ML techniques.
935. **Visualize effectively**: Create clear, informative charts that answer the question.
946. **Generate insights**: Translate statistical findings into actionable business insights.
957. **Document thoroughly**: Explain methodology, assumptions, limitations, and conclusions.
968. **Make reproducible**: Ensure others can re-run the analysis and get the same results.
97
98## Required artifacts
99
100- **Analysis script(s)**: Well-documented Python code performing the analysis.
101- **Visualizations**: Charts saved as high-quality image files (PNG/SVG).
102- **Analysis report**: Markdown or text document summarizing:
103 - Research question and methodology
104 - Data description and quality assessment
105 - Key findings with supporting statistics
106 - Visualizations with interpretations
107 - Limitations and caveats
108 - Recommendations or next steps
109- **Requirements file**: `requirements.txt` with all dependencies.
110- **Sample data** (if appropriate and non-sensitive): Small sample for reproducibility.
111
112## Implementation checklist
113
114### 1. Data exploration and preparation
115
116- [ ] Load data and inspect structure (shape, columns, types)
117- [ ] Check for missing values, duplicates, outliers
118- [ ] Generate summary statistics (mean, median, std, min, max)
119- [ ] Visualize distributions of key variables
120- [ ] Document data quality issues found
121
122### 2. Data cleaning and transformation
123
124- [ ] Handle missing values (impute, drop, or flag)
125- [ ] Address outliers if needed (cap, transform, or document)
126- [ ] Create derived variables if needed
127- [ ] Normalize or scale variables for modeling
128- [ ] Split data if doing train/test analysis
129
130### 3. Analysis execution
131
132- [ ] Choose appropriate analytical methods
133- [ ] Check statistical assumptions
134- [ ] Execute analysis with proper parameters
135- [ ] Calculate confidence intervals and effect sizes
136- [ ] Perform sensitivity analyses if appropriate
137
138### 4. Visualization
139
140- [ ] Create exploratory visualizations
141- [ ] Generate publication-quality final charts
142- [ ] Ensure all charts have clear labels and titles
143- [ ] Use appropriate color schemes and styling
144- [ ] Save in high-resolution formats
145
146### 5. Reporting
147
148- [ ] Write clear summary of methods used
149- [ ] Present key findings with supporting evidence
150- [ ] Explain practical significance of results
151- [ ] Document limitations and assumptions
152- [ ] Provide actionable recommendations
153
154### 6. Reproducibility
155
156- [ ] Test that script runs from clean environment
157- [ ] Document all dependencies
158- [ ] Add comments explaining non-obvious code
159- [ ] Include instructions for running analysis
160
161## Convex Engineering Workflow
162
163When working with Convex (backend, database, schemas), you **MUST** follow this specialized workflow:
164
165### 1. Protocols & Rules
166
167- **READ FIRST**: Always read `resources/convex_rules.md` before writing any Convex code.
168 - Command: `view_file(AbsolutePath=".../resources/convex_rules.md")`
169- **MCP Integration**: Use `mcp_convex` tools to inspect CURRENT state before proposing changes.
170 - `mcp_convex_tables`: Check table schemas.
171 - `mcp_convex_functionSpec`: Check existing functions.
172 - `mcp_convex_logs`: Analyze recent failures.
173
174### 2. Implementation & fix
175
176- **CLI First**: Use `bunx convex` for all operations.
177 - DO NOT use generic SQL or other DB commands.
178 - Example: `bunx convex run serena/actions:doSomething`
179- **Log Analysis**:
180 - When debugging, pull logs via `bunx convex logs --prod --failure` OR `mcp_convex_logs`.
181 - Analyze stack traces using Python scripts if text analysis is insufficient.
182
183### 3. Code Generation
184
185- **Schema**: Define in `convex/schema.ts` using `defineSchema` and `defineTable`.
186- **Functions**: Use `query`, `mutation`, `action` from `_generated/server`.
187- **Validation**: Ensure `args` and `returns` validators (e.g., `v.string()`, `v.id()`) are strictly typed.
188
189## Verification
190
191Run the following to verify the analysis:
192
193```bash
194# Create virtual environment
195python3 -m venv venv
196source venv/bin/activate # or `venv\Scripts\activate` on Windows
197
198# Install dependencies
199pip install -r requirements.txt
200
201# Run analysis script
202python analysis.py
203
204# Check outputs generated
205ls -lh outputs/
206```
207
208The skill is complete when:
209
210- Analysis script runs without errors from clean environment.
211- All required visualizations are generated in high quality.
212- Report clearly explains methodology, findings, and limitations.
213- Results are interpretable and actionable.
214- Code is well-documented and reproducible.
215
216## Common analysis patterns
217
218### Exploratory Data Analysis (EDA)
219
220```python
221import pandas as pd
222import matplotlib.pyplot as plt
223import seaborn as sns
224
225# Load and inspect data
226df = pd.read_csv('data.csv')
227print(df.info())
228print(df.describe())
229
230# Check for missing values
231print(df.isnull().sum())
232
233# Visualize distributions
234df.hist(figsize=(12, 10), bins=30)
235plt.tight_layout()
236plt.savefig('distributions.png', dpi=300)
237
238# Check correlations
239corr = df.corr()
240sns.heatmap(corr, annot=True, cmap='coolwarm')
241plt.savefig('correlations.png', dpi=300)
242```
243
244### Time series analysis
245
246```python
247import pandas as pd
248import matplotlib.pyplot as plt
249from statsmodels.tsa.seasonal import seasonal_decompose
250
251# Load time series data
252df = pd.read_csv('timeseries.csv', parse_dates=['date'])
253df.set_index('date', inplace=True)
254
255# Decompose time series
256decomposition = seasonal_decompose(df['value'], model='additive', period=30)
257fig = decomposition.plot()
258fig.set_size_inches(12, 8)
259plt.savefig('decomposition.png', dpi=300)
260
261# Calculate rolling statistics
262df['rolling_mean'] = df['value'].rolling(window=7).mean()
263df['rolling_std'] = df['value'].rolling(window=7).std()
264
265# Plot with trends
266plt.figure(figsize=(12, 6))
267plt.plot(df['value'], label='Original')
268plt.plot(df['rolling_mean'], label='7-day Moving Avg', linewidth=2)
269plt.fill_between(df.index,
270 df['rolling_mean'] - df['rolling_std'],
271 df['rolling_mean'] + df['rolling_std'],
272 alpha=0.3)
273plt.legend()
274plt.savefig('trends.png', dpi=300)
275```
276
277### Statistical hypothesis testing
278
279```python
280from scipy import stats
281import numpy as np
282
283# Compare two groups
284group_a = df[df['group'] == 'A']['metric']
285group_b = df[df['group'] == 'B']['metric']
286
287# Check normality
288_, p_norm_a = stats.shapiro(group_a)
289_, p_norm_b = stats.shapiro(group_b)
290
291# Choose appropriate test
292if p_norm_a > 0.05 and p_norm_b > 0.05:
293 # Parametric test (t-test)
294 statistic, p_value = stats.ttest_ind(group_a, group_b)
295 test_used = "Independent t-test"
296else:
297 # Non-parametric test (Mann-Whitney U)
298 statistic, p_value = stats.mannwhitneyu(group_a, group_b)
299 test_used = "Mann-Whitney U test"
300
301# Calculate effect size (Cohen's d)
302pooled_std = np.sqrt((group_a.std()**2 + group_b.std()**2) / 2)
303cohens_d = (group_a.mean() - group_b.mean()) / pooled_std
304
305print(f"Test used: {test_used}")
306print(f"Test statistic: {statistic:.4f}")
307print(f"P-value: {p_value:.4f}")
308print(f"Effect size (Cohen's d): {cohens_d:.4f}")
309```
310
311### Predictive modeling
312
313```python
314from sklearn.model_selection import train_test_split
315from sklearn.ensemble import RandomForestRegressor
316from sklearn.metrics import mean_squared_error, r2_score
317import matplotlib.pyplot as plt
318
319# Prepare data
320X = df.drop('target', axis=1)
321y = df['target']
322
323# Split data
324X_train, X_test, y_train, y_test = train_test_split(
325 X, y, test_size=0.2, random_state=42
326)
327
328# Train model
329model = RandomForestRegressor(n_estimators=100, random_state=42)
330model.fit(X_train, y_train)
331
332# Evaluate
333y_pred = model.predict(X_test)
334rmse = np.sqrt(mean_squared_error(y_test, y_pred))
335r2 = r2_score(y_test, y_pred)
336
337print(f"RMSE: {rmse:.4f}")
338print(f"R² Score: {r2:.4f}")
339
340# Feature importance
341importance = pd.DataFrame({
342 'feature': X.columns,
343 'importance': model.feature_importances_
344}).sort_values('importance', ascending=False)
345
346plt.figure(figsize=(10, 6))
347plt.barh(importance['feature'][:10], importance['importance'][:10])
348plt.xlabel('Feature Importance')
349plt.title('Top 10 Most Important Features')
350plt.tight_layout()
351plt.savefig('feature_importance.png', dpi=300)
352```
353
354## Recommended Python libraries
355
356### Data manipulation
357
358- **pandas**: Data manipulation and analysis
359- **numpy**: Numerical computing
360- **polars**: High-performance DataFrame library (alternative to pandas)
361
362### Visualization
363
364- **matplotlib**: Foundational plotting library
365- **seaborn**: Statistical visualizations
366- **plotly**: Interactive charts
367- **altair**: Declarative statistical visualization
368
369### Statistical analysis
370
371- **scipy.stats**: Statistical functions and tests
372- **statsmodels**: Statistical modeling
373- **pingouin**: Statistical tests with clear output
374
375### Machine learning
376
377- **scikit-learn**: ML algorithms and tools
378- **xgboost**: Gradient boosting
379- **lightgbm**: Fast gradient boosting
380
381### Time series
382
383- **statsmodels.tsa**: Time series analysis
384- **prophet**: Forecasting tool
385- **pmdarima**: Auto ARIMA
386
387### Specialized
388
389- **networkx**: Network analysis
390- **geopandas**: Geospatial data analysis
391- **textblob** / **spacy**: Natural language processing
392
393## Safety and escalation
394
395- **Data privacy**: Never analyze or share data containing PII without proper authorization.
396- **Statistical validity**: If sample sizes are too small for reliable inference, call this out explicitly.
397- **Causal claims**: Avoid implying causation from correlational analysis; be explicit about limitations.
398- **Model limitations**: Document when models may not generalize or when predictions should not be trusted.
399- **Data quality**: If data quality issues could materially affect conclusions, flag this prominently.
400
401## Integration with other skills
402
403This skill can be combined with:
404
405- **Internal data querying**: To fetch data from warehouses or databases for analysis.
406- **Web app builder**: To create interactive dashboards displaying analysis results.
407- **Internal tools**: To build analysis tools for non-technical stakeholders.