# -*- coding: utf-8 -*- """ @author: zsc @time: 2024/11/18 @desc: 报告生成 """ import time import random from collections import defaultdict import matplotlib.pyplot as plt # 报告生成模块(续) class ReportGenerator: def __init__(self, data, anomalies, segments, action_stats): self.data = data self.anomalies = anomalies self.segments = segments self.action_stats = action_stats def generate(self): # 生成用户行为报告,并展示成图表形式 report = { 'total_users': len(set([item['user'] for item in self.data])), 'total_actions': len(self.data), 'anomalies': self.anomalies, 'user_segments': self.segments, 'action_stats': self.action_stats } self.plot_action_stats(self.action_stats) self.plot_user_segments(self.segments) return report def plot_action_stats(self, action_stats): # 生成行为统计图表 actions = list(action_stats.keys()) counts = list(action_stats.values()) plt.figure(figsize=(10, 6)) plt.bar(actions, counts, color='skyblue') plt.xlabel('Actions') plt.ylabel('Counts') plt.title('Action Statistics') plt.show() def plot_user_segments(self, segments): # 生成用户分群图表 segment_names = list(segments.keys()) segment_counts = [len(segments[segment]) for segment in segment_names] plt.figure(figsize=(10, 6)) plt.bar(segment_names, segment_counts, color='lightgreen') plt.xlabel('User Segments') plt.ylabel('Number of Users') plt.title('User Segmentation') plt.show()