💻 Code Examples
Practical examples for implementing WIA-DATA-012 in your applications
🐍 Python Examples
Example 1: Basic Descriptive Analytics
Python
from wia_analytics import AnalyticsClient
import pandas as pd
# Initialize client
client = AnalyticsClient(api_key="your_api_key")
# Load data
df = pd.read_csv("sales_data.csv")
# Perform descriptive analytics
results = client.descriptive_analytics(
data=df,
metrics=["mean", "median", "std", "quartiles"],
group_by=["category", "region"]
)
# Display results
print(f"Mean Revenue: ${results['mean']:.2f}")
print(f"Median Revenue: ${results['median']:.2f}")
print(f"Standard Deviation: ${results['std']:.2f}")
# Visualize distributions
results.plot_distribution(
column="revenue",
title="Revenue Distribution"
)
Example 2: Predictive Forecasting
Python
from wia_analytics import PredictiveAnalytics
from datetime import datetime, timedelta
# Initialize predictive analytics
predictor = PredictiveAnalytics(api_key="your_api_key")
# Prepare historical data
historical_data = {
"date": pd.date_range(start="2024-01-01", periods=365),
"revenue": df["revenue"].values
}
# Train model
model = predictor.train(
data=historical_data,
model_type="prophet",
features=["date"],
target="revenue"
)
# Generate forecast
forecast = model.predict(
horizon=30, # 30 days
confidence_level=0.95
)
# Display forecast
for day in forecast:
print(f"{day['date']}: ${day['value']:,.2f} "
f"[${day['lower']:,.2f} - ${day['upper']:,.2f}]")
# Evaluate model
print(f"\nModel Metrics:")
print(f"R² Score: {model.metrics['r2_score']:.3f}")
print(f"RMSE: ${model.metrics['rmse']:,.2f}")
print(f"MAE: ${model.metrics['mae']:,.2f}")
Example 3: Customer Segmentation
Python
from wia_analytics import Segmentation
import matplotlib.pyplot as plt
# Initialize segmentation
segmenter = Segmentation(api_key="your_api_key")
# Prepare customer data
customer_features = df[[
"purchase_frequency",
"average_spend",
"recency_days"
]]
# Perform clustering
clusters = segmenter.cluster(
data=customer_features,
algorithm="kmeans",
n_clusters=4,
normalize=True
)
# Analyze segments
for i, segment in enumerate(clusters.segments):
print(f"\nSegment {i}: {segment.name}")
print(f" Size: {segment.size:,} customers")
print(f" Avg Spend: ${segment.avg_spend:.2f}")
print(f" Purchase Freq: {segment.purchase_freq:.1f}/year")
print(f" Characteristics: {segment.characteristics}")
# Visualize clusters
clusters.plot_2d(
features=["average_spend", "purchase_frequency"],
title="Customer Segments"
)
Example 4: Real-time Analytics Stream
Python
from wia_analytics import RealtimeAnalytics
import asyncio
# Initialize real-time analytics
realtime = RealtimeAnalytics(api_key="your_api_key")
# Define stream handler
async def handle_events(event):
"""Process each incoming event"""
# Extract event data
timestamp = event['timestamp']
value = event['value']
# Detect anomalies
if realtime.is_anomaly(value):
print(f"⚠️ Anomaly detected at {timestamp}: {value}")
await send_alert(event)
# Update metrics
realtime.update_metrics(event)
# Create and start stream
async def main():
stream = await realtime.create_stream(
source="kafka://transactions",
window="5m",
aggregations=["count", "sum", "avg"]
)
# Listen for events
async for event in stream:
await handle_events(event)
# Run
asyncio.run(main())
📘 TypeScript/JavaScript Examples
Example 1: Web Dashboard Analytics
TypeScript
import { AnalyticsClient, DescriptiveAnalytics } from '@wia/analytics';
// Initialize client
const client = new AnalyticsClient({
apiKey: process.env.WIA_API_KEY,
region: 'us-east-1'
});
// Fetch and analyze data
async function analyzeSalesData() {
try {
// Get data from API
const data = await client.fetchDataset('sales_2024');
// Perform descriptive analytics
const analytics = new DescriptiveAnalytics(data);
const results = await analytics.compute({
metrics: ['mean', 'median', 'std', 'quartiles'],
groupBy: ['category', 'region']
});
// Display results
console.log(`Summary Statistics:`);
console.log(` Mean: $${results.mean.toFixed(2)}`);
console.log(` Median: $${results.median.toFixed(2)}`);
console.log(` Std Dev: $${results.std.toFixed(2)}`);
// Group analysis
results.groups.forEach(group => {
console.log(`\n${group.category} - ${group.region}:`);
console.log(` Count: ${group.count}`);
console.log(` Total: $${group.sum.toFixed(2)}`);
});
return results;
} catch (error) {
console.error('Analytics failed:', error);
throw error;
}
}
Example 2: React Dashboard Component
TypeScript React
import React, { useEffect, useState } from 'react';
import { useAnalytics } from '@wia/analytics-react';
import { LineChart, BarChart } from '@wia/charts';
interface AnalyticsDashboardProps {
datasetId: string;
}
export const AnalyticsDashboard: React.FC
= ({
datasetId
}) => {
const { data, loading, error } = useAnalytics(datasetId);
const [forecast, setForecast] = useState(null);
useEffect(() => {
if (data) {
// Generate forecast
generateForecast();
}
}, [data]);
const generateForecast = async () => {
const predictor = new PredictiveAnalytics();
const result = await predictor.forecast({
data: data.timeseries,
horizon: 30,
model: 'prophet'
});
setForecast(result);
};
if (loading) return Loading analytics...
;
if (error) return Error: {error.message}
;
return (
Sales Analytics Dashboard
{/* Summary Metrics */}
{/* Historical Trend */}
{/* Forecast */}
{forecast && (
)}
{/* Category Breakdown */}
);
};
Example 3: Node.js Stream Processing
TypeScript Node.js
import { RealtimeAnalytics, KafkaSource } from '@wia/analytics';
import { EventEmitter } from 'events';
// Configure Kafka source
const kafkaSource = new KafkaSource({
brokers: ['localhost:9092'],
topic: 'sales-events',
groupId: 'analytics-consumer'
});
// Initialize real-time analytics
const analytics = new RealtimeAnalytics({
apiKey: process.env.WIA_API_KEY,
source: kafkaSource
});
// Set up event handlers
analytics.on('event', (event) => {
console.log(`Processed event: ${event.id}`);
});
analytics.on('anomaly', (anomaly) => {
console.warn(`⚠️ Anomaly detected:`, anomaly);
// Send alert
notifyTeam(anomaly);
});
analytics.on('metrics', (metrics) => {
console.log(`Metrics update:`, {
eventsPerSecond: metrics.rate,
avgLatency: metrics.latency,
totalProcessed: metrics.total
});
});
// Start processing
async function start() {
try {
await analytics.start({
windowSize: '5m',
aggregations: ['count', 'sum', 'avg', 'max', 'min'],
anomalyDetection: {
enabled: true,
sensitivity: 0.95
}
});
console.log('✓ Real-time analytics started');
} catch (error) {
console.error('Failed to start analytics:', error);
process.exit(1);
}
}
start();
☕ Java Example
Spring Boot Analytics Service
Java
package com.example.analytics;
import org.wia.analytics.*;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Value;
@Service
public class AnalyticsService {
private final AnalyticsClient client;
public AnalyticsService(@Value("${wia.api.key}") String apiKey) {
this.client = new AnalyticsClient.Builder()
.apiKey(apiKey)
.region("us-east-1")
.build();
}
public DescriptiveResults analyzeRevenue(String datasetId) {
Dataset dataset = client.getDataset(datasetId);
DescriptiveAnalytics analytics = new DescriptiveAnalytics(dataset);
return analytics.compute(
AnalyticsConfig.builder()
.metrics(Arrays.asList("mean", "median", "std"))
.groupBy(Arrays.asList("category", "region"))
.build()
);
}
public Forecast generateForecast(String datasetId, int horizon) {
Dataset dataset = client.getDataset(datasetId);
PredictiveAnalytics predictor = new PredictiveAnalytics.Builder()
.modelType(ModelType.PROPHET)
.confidenceLevel(0.95)
.build();
Model model = predictor.train(
dataset,
TrainingConfig.builder()
.features(Arrays.asList("date"))
.target("revenue")
.build()
);
return model.predict(horizon);
}
public List segmentCustomers(String datasetId) {
Dataset dataset = client.getDataset(datasetId);
Segmentation segmenter = new Segmentation.Builder()
.algorithm(ClusteringAlgorithm.KMEANS)
.numberOfClusters(4)
.normalize(true)
.build();
return segmenter.cluster(
dataset,
Arrays.asList(
"purchase_frequency",
"average_spend",
"recency_days"
)
);
}
}
📊 R Example
Statistical Analysis with R
R
library(wiaanalytics)
library(tidyverse)
# Initialize client
client <- wia_client(api_key = Sys.getenv("WIA_API_KEY"))
# Load data
sales_data <- wia_fetch_dataset(client, "sales_2024")
# Descriptive analytics
summary_stats <- wia_descriptive(
data = sales_data,
metrics = c("mean", "median", "sd", "quantiles"),
group_by = c("category", "region")
)
# Display results
print(summary_stats)
# Visualize distribution
ggplot(sales_data, aes(x = revenue)) +
geom_histogram(bins = 50, fill = "#10B981", color = "white") +
theme_minimal() +
labs(title = "Revenue Distribution",
x = "Revenue",
y = "Frequency")
# Time series forecasting
forecast_model <- wia_forecast(
data = sales_data,
formula = revenue ~ date,
method = "prophet",
horizon = 30
)
# Plot forecast
plot(forecast_model,
main = "30-Day Revenue Forecast",
xlab = "Date",
ylab = "Revenue")
# Customer segmentation
segments <- wia_cluster(
data = sales_data,
features = c("purchase_frequency", "average_spend", "recency"),
k = 4,
method = "kmeans"
)
# Analyze segments
segment_summary <- segments %>%
group_by(cluster) %>%
summarise(
size = n(),
avg_spend = mean(average_spend),
avg_frequency = mean(purchase_frequency)
)
print(segment_summary)
🔧 CLI Examples
Using WIA Analytics CLI
Bash
# Install CLI
npm install -g @wia/analytics-cli
# Configure API key
wia-analytics config set-key YOUR_API_KEY
# Perform descriptive analytics
wia-analytics describe \
--dataset sales_2024 \
--metrics mean,median,std \
--group-by category,region \
--output json
# Generate forecast
wia-analytics forecast \
--dataset sales_2024 \
--model prophet \
--horizon 30 \
--confidence 0.95 \
--output forecast.json
# Customer segmentation
wia-analytics segment \
--dataset customers \
--algorithm kmeans \
--clusters 4 \
--features purchase_frequency,average_spend \
--output segments.json
# Start real-time stream
wia-analytics stream create \
--name sales-events \
--source kafka://transactions \
--window 5m \
--aggregations count,sum,avg
# Monitor stream
wia-analytics stream metrics sales-events
💡 Best Practices
1. Data Quality
- Always validate and clean data before analysis
- Handle missing values appropriately
- Remove outliers that may skew results
- Ensure consistent data types and formats
2. Model Selection
- Choose models appropriate for your data type
- Consider computational complexity vs. accuracy
- Use cross-validation to prevent overfitting
- Compare multiple models before deployment
3. Performance Optimization
- Use batch processing for large datasets
- Implement caching for frequently accessed results
- Leverage parallel processing when possible
- Monitor API rate limits and usage
4. Error Handling
- Implement robust try-catch blocks
- Provide meaningful error messages
- Log errors for debugging
- Implement retry logic for transient failures