NexusCoder / nexus /skills /data_analysis.py
AdminReal's picture
Import NexusCoder from github.com/mhieuhonda/NexusCoder
eca5751 verified
Raw History Blame Contribute Delete
2.24 kB
"""Data Analysis Skill - Phân tích dữ liệu."""
from __future__ import annotations
from typing import List
from .base import Skill, SkillResult, SkillContext, SkillCategory, SkillPriority
class DataAnalysisSkill(Skill):
"""Phân tích dữ liệu: EDA, statistics, visualization, insights."""
category = SkillCategory.DATA
priority = SkillPriority.MEDIUM
keywords: List[str] = [
"analyze", "phân tích", "data", "dữ liệu", "dataset",
"statistics", "thống kê", "eda", "exploratory",
"pandas", "numpy", "visualization", "biểu đồ",
"insights", "pattern", "mẫu", "trend", "xu hướng",
]
@property
def name(self) -> str:
return "data_analysis"
@property
def description(self) -> str:
return (
"Phân tích dữ liệu: EDA, descriptive/inferential statistics, "
"data cleaning, visualization, pattern detection, insight extraction."
)
def execute(self, context: SkillContext) -> SkillResult:
analysis_steps = [
"1. Data loading & schema inspection",
"2. Missing value analysis & imputation",
"3. Descriptive statistics (mean, median, std, quartiles)",
"4. Distribution analysis (histograms, KDE)",
"5. Correlation analysis (Pearson, Spearman)",
"6. Outlier detection (IQR, Z-score, Isolation Forest)",
"7. Group-by analysis & aggregations",
"8. Time series decomposition (trend, seasonality, residual)",
"9. Visualization (matplotlib, seaborn, plotly)",
"10. Insight extraction & recommendations",
]
return SkillResult(
success=True,
output=f"[DataAnalysis] {len(analysis_steps)}-step analysis pipeline.",
metadata={
"skill": self.name,
"analysis_steps": analysis_steps,
"libraries": ["pandas", "numpy", "scipy", "matplotlib", "seaborn", "plotly"],
},
suggestions=[
"Always check data quality first",
"Visualize before modeling",
"Document assumptions",
],
)