data-analysis
51
总安装量
52
周安装量
#4194
全站排名
安装命令
npx skills add https://github.com/supercent-io/skills-template --skill data-analysis
Agent 安装分布
opencode
40
claude-code
36
gemini-cli
35
github-copilot
26
antigravity
25
Skill 文档
Data Analysis
When to use this skill
- ë°ì´í° íì: ìë¡ì´ ë°ì´í°ì ì´í´
- 리í¬í¸ ìì±: ë°ì´í° ê¸°ë° ì¸ì¬ì´í¸ ëì¶
- íì§ ê²ì¦: ë°ì´í° ì í©ì± íì¸
- ìì¬ê²°ì ì§ì: ë°ì´í° ê¸°ë° ì¶ì²
Instructions
Step 1: ë°ì´í° ë¡ë ë° íì
Python (Pandas):
import pandas as pd
import numpy as np
# CSV ë¡ë
df = pd.read_csv('data.csv')
# 기본 ì ë³´
print(df.info())
print(df.describe())
print(df.head(10))
# ê²°ì¸¡ì¹ íì¸
print(df.isnull().sum())
# ë°ì´í° íì
print(df.dtypes)
SQL:
-- í
ì´ë¸ 구조 íì¸
DESCRIBE table_name;
-- ìí ë°ì´í°
SELECT * FROM table_name LIMIT 10;
-- 기본 íµê³
SELECT
COUNT(*) as total_rows,
COUNT(DISTINCT column_name) as unique_values,
MIN(numeric_column) as min_val,
MAX(numeric_column) as max_val,
AVG(numeric_column) as avg_val
FROM table_name;
Step 2: ë°ì´í° ì ì
# ê²°ì¸¡ì¹ ì²ë¦¬
df['column'].fillna(df['column'].mean(), inplace=True)
df.dropna(subset=['required_column'], inplace=True)
# ì¤ë³µ ì ê±°
df.drop_duplicates(inplace=True)
# ë°ì´í° íì
ë³í
df['date'] = pd.to_datetime(df['date'])
df['category'] = df['category'].astype('category')
# ì´ìì¹ ì ê±° (IQR ë°©ì)
Q1 = df['value'].quantile(0.25)
Q3 = df['value'].quantile(0.75)
IQR = Q3 - Q1
df = df[(df['value'] >= Q1 - 1.5*IQR) & (df['value'] <= Q3 + 1.5*IQR)]
Step 3: íµê³ ë¶ì
# 기ì íµê³
print(df['numeric_column'].describe())
# ê·¸ë£¹ë³ ë¶ì
grouped = df.groupby('category').agg({
'value': ['mean', 'sum', 'count'],
'other': 'nunique'
})
print(grouped)
# ìê´ê´ê³
correlation = df[['col1', 'col2', 'col3']].corr()
print(correlation)
# í¼ë² í
ì´ë¸
pivot = pd.pivot_table(df,
values='sales',
index='region',
columns='month',
aggfunc='sum'
)
Step 4: ìê°í
import matplotlib.pyplot as plt
import seaborn as sns
# íì¤í ê·¸ë¨
plt.figure(figsize=(10, 6))
df['value'].hist(bins=30)
plt.title('Distribution of Values')
plt.savefig('histogram.png')
# ë°ì¤í롯
plt.figure(figsize=(10, 6))
sns.boxplot(x='category', y='value', data=df)
plt.title('Value by Category')
plt.savefig('boxplot.png')
# íí¸ë§µ (ìê´ê´ê³)
plt.figure(figsize=(10, 8))
sns.heatmap(correlation, annot=True, cmap='coolwarm')
plt.title('Correlation Matrix')
plt.savefig('heatmap.png')
# ìê³ì´
plt.figure(figsize=(12, 6))
df.groupby('date')['value'].sum().plot()
plt.title('Time Series of Values')
plt.savefig('timeseries.png')
Step 5: ì¸ì¬ì´í¸ ëì¶
# ìì/íì ë¶ì
top_10 = df.nlargest(10, 'value')
bottom_10 = df.nsmallest(10, 'value')
# í¸ë ë ë¶ì
df['month'] = df['date'].dt.to_period('M')
monthly_trend = df.groupby('month')['value'].sum()
growth = monthly_trend.pct_change() * 100
# ì¸ê·¸ë¨¼í¸ ë¶ì
segments = df.groupby('segment').agg({
'revenue': 'sum',
'customers': 'nunique',
'orders': 'count'
})
segments['avg_order_value'] = segments['revenue'] / segments['orders']
Output format
ë¶ì 리í¬í¸ 구조
# ë°ì´í° ë¶ì 리í¬í¸
## 1. ë°ì´í° ê°ì
- ë°ì´í°ì
: [ì´ë¦]
- ë ì½ë ì: X,XXX
- ì»¬ë¼ ì: XX
- 기ê°: YYYY-MM-DD ~ YYYY-MM-DD
## 2. 주ì ë°ê²¬
- ì¸ì¬ì´í¸ 1
- ì¸ì¬ì´í¸ 2
- ì¸ì¬ì´í¸ 3
## 3. íµê³ ìì½
| ì§í | ê° |
|------|-----|
| íê· | X.XX |
| ì¤ìê° | X.XX |
| íì¤í¸ì°¨ | X.XX |
## 4. ê¶ì¥ ì¬í
1. [ê¶ì¥ ì¬í 1]
2. [ê¶ì¥ ì¬í 2]
Best practices
- ë°ì´í° ì´í´ ì°ì : ë¶ì ì ë°ì´í° 구조ì ì미 íì
- ì ì§ì ë¶ì: ê°ë¨í ë¶ììì ë³µì¡í ë¶ìì¼ë¡ ì§í
- ìê°í íì©: í¨í´ ë°ê²¬ì ìí ë¤ìí ì°¨í¸ ì¬ì©
- ê°ì ê²ì¦: ë°ì´í°ì ëí ê°ì ì íì ê²ì¦
- ì¬í ê°ë¥ì±: ë¶ì ì½ëì 결과를 문ìí
Constraints
íì ê·ì¹ (MUST)
- ì본 ë°ì´í° ë³´ì¡´ (ë³µì¬ë³¸ì¼ë¡ ìì )
- ë¶ì ê³¼ì 문ìí
- ê²°ê³¼ ê²ì¦
ê¸ì§ ì¬í (MUST NOT)
- 민ê°í ê°ì¸ì ë³´ ë ¸ì¶ ê¸ì§
- 근거 ìë ê²°ë¡ ëì¶ ê¸ì§