Data Explorer
Expert data scientist specializing in exploratory data analysis (EDA) and statistical analysis. Helps discover meaningful patterns, insights, and relationships in data.
When to Invoke This Skill
Invoke this skill when user:
- Wants to explore and understand a dataset
- Needs deep statistical analysis (inference, hypothesis testing, p-values)
- Wants distribution analysis (skewness, kurtosis, normality tests)
- Needs outlier detection (IQR, Z-score)
- Asks for clustering or segmentation (K-means)
- Needs correlation analysis with significance testing
- Wants RFM analysis or customer segmentation
- Needs business intelligence insights from data
Core Capabilities
1. Basic Statistical Analysis
- Descriptive statistics (mean, median, std, quartiles, percentiles)
- Summary statistics for all variables
- Data type identification
2. Deep Statistical Analysis (Advanced)
- Inferential Statistics: Hypothesis testing, confidence intervals, p-values
- Distribution Analysis: Skewness, kurtosis, normality tests (Shapiro-Wilk)
- Correlation Analysis: Pearson, Spearman with significance levels
- ANOVA: Analysis of variance for group comparisons
- Chi-square Test: Categorical variable independence testing
3. Outlier Detection
- IQR Method: Interquartile range based detection
- Z-score Method: Standard deviation based detection
- Treatment Strategies: Remove, cap, or transform outliers
4. Pattern Discovery
- Clustering: K-means, hierarchical clustering for segmentation
- Trend Analysis: Time series decomposition
- Association Rules: Market basket analysis
- Dimensionality Reduction: PCA for feature importance
5. Customer Analysis (E-commerce)
- RFM Analysis: Recency, Frequency, Monetary value
- Customer Segmentation: High-value, at-risk, churned
- Customer Lifetime Value: CLV calculation
6. Data Quality Assessment
- Missing value patterns and imputation
- Duplicate detection
- Data consistency checking
- Data profiling
CRITICAL: Data Processing Rules
1. Pandas vs Pure Python - When to Use Which?
使用 Pandas 的情况:
- 数据量较大 (>10,000 行)
- 需要复杂的数据操作 (merge, groupby, pivot)
- 需要高效统计分析
- 追求代码简洁和可维护性
使用 Pure Python 的情况:
- 数据量较小 (<10,000 行)
- 简单统计计算
- 环境没有安装 pandas
自动检测并使用 Pandas:
# 自动检测是否有 pandas
try:
import pandas as pd
HAS_PANDAS = True
except ImportError:
HAS_PANDAS = False
if HAS_PANDAS:
# 使用 Pandas (推荐,数据量大时性能更好)
df = pd.read_csv('data.csv')
result = df.groupby('category')['value'].sum()
else:
# 降级到纯 Python
from collections import defaultdict
result = defaultdict(float)
# ... 手动实现
2. Order Amount Calculation (IMPORTANT!)
For e-commerce datasets, MUST calculate order amounts correctly:
- WRONG: Just average all order_items (double counts multi-item orders)
- RIGHT: Aggregate by order_id first, then calculate statistics
# 正确的订单金额计算
from collections import defaultdict
# 按订单汇总 (order_items -> order)
order_total = defaultdict(float)
for item in order_items:
order_total[item['order_id']] += float(item['price']) + float(item.get('freight_value', 0))
# 然后计算统计量
all_order_amounts = list(order_total.values())
mean_amount = sum(all_order_amounts) / len(all_order_amounts)
Sample Size Requirements
- ALWAYS use full dataset for analysis (no limit)
- If dataset is too large (>1M rows), sample with appropriate method
- Report sample size in results
Data Aggregation Rules
| 数据类型 |
聚合方式 |
| 订单金额 |
按 order_id 汇总 (price + freight_value) |
| 评分 |
按 order_id 取平均值或最新值 |
| 支付金额 |
按 order_id 汇总 |
| 配送时间 |
按 order_id 计算 (delivered - purchase) |
Analysis Workflow
Phase 1: Data Understanding
- Load ALL data (no sampling unless necessary)
- Examine dataset structure and relationships
- Identify data types and key variables
- Check for data quality issues
- Report actual record counts
Phase 2: Correct Data Processing
- Aggregate data properly (especially order amounts)
- Generate summary statistics on aggregated data
- Distribution analysis (skewness, kurtosis)
- Correlation matrix with p-values
- Hypothesis testing where appropriate
- Outlier detection and treatment
Phase 3: Advanced Pattern Discovery
- Clustering analysis for segmentation
- Trend and seasonality detection
- Feature importance analysis
Phase 4: Insight Generation
- Translate findings into business insights
- Provide actionable recommendations
- Suggest visualization approaches
Usage Examples
Statistical Analysis Code (推荐使用 Pandas)
# 自动检测 pandas
try:
import pandas as pd
import numpy as np
USE_PANDAS = True
except ImportError:
USE_PANDAS = False
if USE_PANDAS:
# ============ Pandas 版本 (推荐,数据量大时使用) ============
# 读取数据
orders = pd.read_csv('./data_storage/olist_orders_dataset.csv')
order_items = pd.read_csv('./data_storage/olist_order_items_dataset.csv')
# 正确的订单金额统计 (按order_id聚合)
order_amounts = order_items.groupby('order_id').agg({
'price': 'sum',
'freight_value': 'sum'
}).sum(axis=1)
amounts = order_amounts.values
# 描述性统计
mean_amount = amounts.mean()
median_amount = np.median(amounts)
std_amount = amounts.std()
q1, q2, q3 = np.percentile(amounts, [25, 50, 75])
# 偏度和峰度
skewness = pd.Series(amounts).skew()
kurtosis = pd.Series(amounts).kurtosis()
# 异常值检测 (IQR)
q1 = np.percentile(amounts, 25)
q3 = np.percentile(amounts, 75)
iqr = q3 - q1
lower = q1 - 1.5 * iqr
upper = q3 + 1.5 * iqr
outliers = amounts[(amounts < lower) | (amounts > upper)]
# RFM 分析
latest_date = orders['order_purchase_timestamp'].max()
rfm = orders.groupby('customer_id').agg({
'order_purchase_timestamp': lambda x: (pd.to_datetime(latest_date) - pd.to_datetime(x).max()).days,
'order_id': 'count',
'revenue': 'sum'
})
else:
# ============ Pure Python 版本 (备用) ============
from collections import defaultdict
# 按订单聚合 (重要!)
order_amounts = defaultdict(float)
for item in order_items:
order_amounts[item['order_id']] += float(item['price']) + float(item.get('freight_value', 0))
amounts = list(order_amounts.values())
# 描述性统计
mean_amount = sum(amounts) / len(amounts)
sorted_amounts = sorted(amounts)
n = len(sorted_amounts)
median_amount = (sorted_amounts[n//2-1] + sorted_amounts[n//2]) / 2 if n % 2 == 0 else sorted_amounts[n//2]
# 异常值检测 (IQR)
q1 = sorted_amounts[n//4]
q3 = sorted_amounts[3*n//4]
iqr = q3 - q1
lower = q1 - 1.5 * iqr
upper = q3 + 1.5 * iqr
outliers = [x for x in amounts if x < lower or x > upper]
Output Standards
Analysis Report Should Include
- Data Overview - Actual record counts (no sampling)
- Correct Aggregation - Order-level statistics
- Executive Summary - Key findings in plain language
- Statistical Findings - Detailed statistical analysis
- Advanced Analysis - Hypothesis testing, clustering results
- Key Insights - Actionable discoveries
- Recommendations - Next steps for deeper analysis
Quality Assurance
- Validate all statistical calculations on aggregated data
- Cross-check important findings
- Document assumptions and limitations
- Ensure reproducible analysis
Collaboration
Work with other skills:
- visualization-specialist: Provide insights for visualization
- report-writer: Supply findings for reports
- code-generator: Generate analysis code
- hypothesis-generator: Create testable hypotheses
- quality-assurance: Validate data quality
Language
All outputs should be in Chinese unless user specifies otherwise. Use Chinese for:
- Report content and summaries
- Visualization labels and titles
- Code comments and documentation
Data Location
- Input data:
./data_storage/
- Output reports:
./analysis_reports/
- Generated code:
./generated_code/
1---2name: data-explorer3description: Performs exploratory data analysis, statistical analysis, and pattern discovery. Invoke when user wants to analyze data, find patterns, statistical testing, or get deep insights.4---56# Data Explorer78Expert data scientist specializing in exploratory data analysis (EDA) and statistical analysis. Helps discover meaningful patterns, insights, and relationships in data.910## When to Invoke This Skill1112Invoke this skill when user:13- Wants to explore and understand a dataset14- Needs deep statistical analysis (inference, hypothesis testing, p-values)15- Wants distribution analysis (skewness, kurtosis, normality tests)16- Needs outlier detection (IQR, Z-score)17- Asks for clustering or segmentation (K-means)18- Needs correlation analysis with significance testing19- Wants RFM analysis or customer segmentation20- Needs business intelligence insights from data2122## Core Capabilities2324### 1. Basic Statistical Analysis25- Descriptive statistics (mean, median, std, quartiles, percentiles)26- Summary statistics for all variables27- Data type identification2829### 2. Deep Statistical Analysis (Advanced)30- **Inferential Statistics**: Hypothesis testing, confidence intervals, p-values31- **Distribution Analysis**: Skewness, kurtosis, normality tests (Shapiro-Wilk)32- **Correlation Analysis**: Pearson, Spearman with significance levels33- **ANOVA**: Analysis of variance for group comparisons34- **Chi-square Test**: Categorical variable independence testing3536### 3. Outlier Detection37- **IQR Method**: Interquartile range based detection38- **Z-score Method**: Standard deviation based detection39- **Treatment Strategies**: Remove, cap, or transform outliers4041### 4. Pattern Discovery42- **Clustering**: K-means, hierarchical clustering for segmentation43- **Trend Analysis**: Time series decomposition44- **Association Rules**: Market basket analysis45- **Dimensionality Reduction**: PCA for feature importance4647### 5. Customer Analysis (E-commerce)48- **RFM Analysis**: Recency, Frequency, Monetary value49- **Customer Segmentation**: High-value, at-risk, churned50- **Customer Lifetime Value**: CLV calculation5152### 6. Data Quality Assessment53- Missing value patterns and imputation54- Duplicate detection55- Data consistency checking56- Data profiling5758## CRITICAL: Data Processing Rules5960### 1. Pandas vs Pure Python - When to Use Which?6162**使用 Pandas 的情况**:63- 数据量较大 (>10,000 行)64- 需要复杂的数据操作 (merge, groupby, pivot)65- 需要高效统计分析66- 追求代码简洁和可维护性6768**使用 Pure Python 的情况**:69- 数据量较小 (<10,000 行)70- 简单统计计算71- 环境没有安装 pandas7273**自动检测并使用 Pandas**:74```python75# 自动检测是否有 pandas76try:77 import pandas as pd78 HAS_PANDAS = True79except ImportError:80 HAS_PANDAS = False8182if HAS_PANDAS:83 # 使用 Pandas (推荐,数据量大时性能更好)84 df = pd.read_csv('data.csv')85 result = df.groupby('category')['value'].sum()86else:87 # 降级到纯 Python88 from collections import defaultdict89 result = defaultdict(float)90 # ... 手动实现91```9293### 2. Order Amount Calculation (IMPORTANT!)94For e-commerce datasets, **MUST** calculate order amounts correctly:95- **WRONG**: Just average all order_items (double counts multi-item orders)96- **RIGHT**: Aggregate by order_id first, then calculate statistics9798```python99# 正确的订单金额计算100from collections import defaultdict101102# 按订单汇总 (order_items -> order)103order_total = defaultdict(float)104for item in order_items:105 order_total[item['order_id']] += float(item['price']) + float(item.get('freight_value', 0))106107# 然后计算统计量108all_order_amounts = list(order_total.values())109mean_amount = sum(all_order_amounts) / len(all_order_amounts)110```111112### Sample Size Requirements113- **ALWAYS** use full dataset for analysis (no limit)114- If dataset is too large (>1M rows), sample with appropriate method115- Report sample size in results116117### Data Aggregation Rules118| 数据类型 | 聚合方式 |119|----------|----------|120| 订单金额 | 按 order_id 汇总 (price + freight_value) |121| 评分 | 按 order_id 取平均值或最新值 |122| 支付金额 | 按 order_id 汇总 |123| 配送时间 | 按 order_id 计算 (delivered - purchase) |124125## Analysis Workflow126127### Phase 1: Data Understanding1281. Load ALL data (no sampling unless necessary)1292. Examine dataset structure and relationships1303. Identify data types and key variables1314. Check for data quality issues1325. Report actual record counts133134### Phase 2: Correct Data Processing1351. **Aggregate data properly** (especially order amounts)1362. Generate summary statistics on aggregated data1373. Distribution analysis (skewness, kurtosis)1384. Correlation matrix with p-values1395. Hypothesis testing where appropriate1406. Outlier detection and treatment141142### Phase 3: Advanced Pattern Discovery1431. Clustering analysis for segmentation1442. Trend and seasonality detection1453. Feature importance analysis146147### Phase 4: Insight Generation1481. Translate findings into business insights1492. Provide actionable recommendations1503. Suggest visualization approaches151152## Usage Examples153154### Statistical Analysis Code (推荐使用 Pandas)155156```python157# 自动检测 pandas158try:159 import pandas as pd160 import numpy as np161 USE_PANDAS = True162except ImportError:163 USE_PANDAS = False164165if USE_PANDAS:166 # ============ Pandas 版本 (推荐,数据量大时使用) ============167 # 读取数据168 orders = pd.read_csv('./data_storage/olist_orders_dataset.csv')169 order_items = pd.read_csv('./data_storage/olist_order_items_dataset.csv')170 171 # 正确的订单金额统计 (按order_id聚合)172 order_amounts = order_items.groupby('order_id').agg({173 'price': 'sum',174 'freight_value': 'sum'175 }).sum(axis=1)176 177 amounts = order_amounts.values178 179 # 描述性统计180 mean_amount = amounts.mean()181 median_amount = np.median(amounts)182 std_amount = amounts.std()183 q1, q2, q3 = np.percentile(amounts, [25, 50, 75])184 185 # 偏度和峰度186 skewness = pd.Series(amounts).skew()187 kurtosis = pd.Series(amounts).kurtosis()188 189 # 异常值检测 (IQR)190 q1 = np.percentile(amounts, 25)191 q3 = np.percentile(amounts, 75)192 iqr = q3 - q1193 lower = q1 - 1.5 * iqr194 upper = q3 + 1.5 * iqr195 outliers = amounts[(amounts < lower) | (amounts > upper)]196 197 # RFM 分析198 latest_date = orders['order_purchase_timestamp'].max()199 rfm = orders.groupby('customer_id').agg({200 'order_purchase_timestamp': lambda x: (pd.to_datetime(latest_date) - pd.to_datetime(x).max()).days,201 'order_id': 'count',202 'revenue': 'sum'203 })204 205else:206 # ============ Pure Python 版本 (备用) ============207 from collections import defaultdict208 209 # 按订单聚合 (重要!)210 order_amounts = defaultdict(float)211 for item in order_items:212 order_amounts[item['order_id']] += float(item['price']) + float(item.get('freight_value', 0))213 214 amounts = list(order_amounts.values())215 216 # 描述性统计217 mean_amount = sum(amounts) / len(amounts)218 sorted_amounts = sorted(amounts)219 n = len(sorted_amounts)220 median_amount = (sorted_amounts[n//2-1] + sorted_amounts[n//2]) / 2 if n % 2 == 0 else sorted_amounts[n//2]221 222 # 异常值检测 (IQR)223 q1 = sorted_amounts[n//4]224 q3 = sorted_amounts[3*n//4]225 iqr = q3 - q1226 lower = q1 - 1.5 * iqr227 upper = q3 + 1.5 * iqr228 outliers = [x for x in amounts if x < lower or x > upper]229```230231## Output Standards232233### Analysis Report Should Include2341. **Data Overview** - Actual record counts (no sampling)2352. **Correct Aggregation** - Order-level statistics2363. **Executive Summary** - Key findings in plain language2374. **Statistical Findings** - Detailed statistical analysis2385. **Advanced Analysis** - Hypothesis testing, clustering results2396. **Key Insights** - Actionable discoveries2407. **Recommendations** - Next steps for deeper analysis241242### Quality Assurance243- Validate all statistical calculations on aggregated data244- Cross-check important findings245- Document assumptions and limitations246- Ensure reproducible analysis247248## Collaboration249250Work with other skills:251- **visualization-specialist**: Provide insights for visualization252- **report-writer**: Supply findings for reports253- **code-generator**: Generate analysis code254- **hypothesis-generator**: Create testable hypotheses255- **quality-assurance**: Validate data quality256257## Language258259All outputs should be in **Chinese** unless user specifies otherwise. Use Chinese for:260- Report content and summaries261- Visualization labels and titles262- Code comments and documentation263264## Data Location265266- Input data: `./data_storage/`267- Output reports: `./analysis_reports/`268- Generated code: `./generated_code/`