有了操作日志后,“日志分析”又成新麻烦:
领导要“上周监控页访问统计”,我得从几百行日志里逐行数——谁登录了几次、敏感数据被看了多少次,数完还得手动画表格,花了1小时才整理好,结果领导说“不够直观,要图表”!
前面实现了“操作日志追溯”,这次教“日志分析招”!用Python把操作日志转成可视化图表,访问次数、敏感数据查看记录、登录失败统计全用图表显,不用翻日志、不用手动画,10秒出分析结果,领导看一眼就懂!
核心逻辑:让日志数据“变图表”,关键信息可视化
不用学Excel画图!核心是用Python的“pandas+matplotlib”,先读取操作日志文件,按“账号、操作类型、敏感查看”等维度统计数据,再自动生成柱状图、饼图、折线图,嵌进Excel里,打开就能看分析结果,不用手动调整格式!
4步做日志可视化,新手也能会!
① 装“日志分析+画图”库(1分钟搞定!)
打开“命令提示符”(Win+R输cmd),输入命令安装所需库(之前装过可跳过):
pip install pandas matplotlib openpyxl
- pandas:处理日志数据;
- matplotlib:生成图表;
- openpyxl:把图表嵌进Excel。
② 写“日志读取+数据统计”代码(自动算关键指标!)
新建“日志可视化.py”文件,粘贴代码,替换 操作日志路径 和 分析结果保存路径 :
python
import pandas as pd
import matplotlib.pyplot as plt
from openpyxl import load_workbook
from openpyxl.drawing.image import Image
import os
# 1. 设置中文字体(避免图表乱码)
plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
# 2. 读取操作日志文件(改路径!)
log_path = r"D:\监控日志\操作日志.txt"
# 日志格式:时间|账号|角色|操作类型|详情
columns = ["时间", "账号", "角色", "操作类型", "详情"]
# 读取日志,按“|”分割字段
df_log = pd.read_csv(
log_path,
sep="|",
header=None,
names=columns,
encoding="utf-8",
error_bad_lines=False # 跳过格式错误的行
)
# 3. 数据预处理(提取关键信息)
# 3.1 转换时间格式(方便按日期统计)
df_log["时间"] = pd.to_datetime(df_log["时间"], format="%Y-%m-%d %H:%M:%S.%f", errors="coerce")
df_log["日期"] = df_log["时间"].dt.date # 提取日期(如2025-12-11)
# 3.2 提取敏感数据查看次数(从“详情”字段里找)
df_log["是否查看敏感数据"] = df_log["详情"].str.contains("敏感任务数:[1-9]", na=False)
# 4. 统计核心指标(按需求改!)
# 4.1 各账号访问监控页次数(只统计“访问监控页”操作)
visit_count = df_log[df_log["操作类型"] == "访问监控页"]["账号"].value_counts()
# 4.2 各账号查看敏感数据次数
sensitive_view_count = df_log[df_log["是否查看敏感数据"]]["账号"].value_counts()
# 4.3 每日登录失败次数(只统计“登录”且“失败”的操作)
login_fail = df_log[(df_log["操作类型"] == "登录") & (df_log["详情"].str.contains("失败", na=False))]
daily_fail_count = login_fail.groupby("日期").size().reset_index(name="失败次数")
print("核心指标统计完成:")
print(f"各账号访问次数:\n{visit_count}")
print(f"各账号敏感查看次数:\n{sensitive_view_count}")
print(f"每日登录失败次数:\n{daily_fail_count}")
③ 写“图表生成+嵌入Excel”代码(自动出图!)
在上述代码后继续加,生成3类关键图表并嵌进Excel:
python
# 5. 生成图表1:各账号访问监控页次数(柱状图)
plt.figure(figsize=(10, 6)) # 图表大小
visit_count.plot(kind="bar", color="#3498db", edgecolor="black")
plt.title("各账号访问监控页次数统计(上周)", fontsize=14, pad=20)
plt.xlabel("账号", fontsize=12)
plt.ylabel("访问次数", fontsize=12)
plt.xticks(rotation=45) # 账号名旋转45度,避免重叠
plt.grid(axis="y", alpha=0.3) # 加水平网格线,方便看数值
# 保存图表(改路径!)
bar_path = r"D:\监控日志\访问次数柱状图.png"
plt.tight_layout() # 自动调整布局,避免标题被截断
plt.savefig(bar_path, dpi=100) # dpi=100:图片清晰度
plt.close() # 关闭图表,避免占用内存
# 6. 生成图表2:各账号查看敏感数据占比(饼图)
# 若没人查看敏感数据,用默认数据避免报错
if not sensitive_view_count.empty:
plt.figure(figsize=(8, 8))
# 饼图加百分比标签
wedges, texts, autotexts = plt.pie(
sensitive_view_count.values,
labels=sensitive_view_count.index,
autopct="%1.1f%%", # 显示百分比(保留1位小数)
colors=["#e74c3c", "#f39c12", "#2ecc71", "#9b59b6"],
startangle=90 # 从90度位置开始画(顶部)
)
plt.title("各账号查看敏感数据占比(上周)", fontsize=14, pad=20)
pie_path = r"D:\监控日志\敏感查看饼图.png"
plt.tight_layout()
plt.savefig(pie_path, dpi=100)
plt.close()
else:
pie_path = None # 没人查看则跳过
# 7. 生成图表3:每日登录失败次数(折线图)
plt.figure(figsize=(10, 6))
if not daily_fail_count.empty:
plt.plot(
daily_fail_count["日期"],
daily_fail_count["失败次数"],
marker="o", # 数据点用圆形标记
linewidth=2,
color="#e74c3c",
markersize=8
)
plt.title("每日登录失败次数统计(上周)", fontsize=14, pad=20)
plt.xlabel("日期", fontsize=12)
plt.ylabel("失败次数", fontsize=12)
plt.xticks(rotation=45)
plt.grid(alpha=0.3)
else:
plt.text(0.5, 0.5, "无登录失败记录", ha="center", va="center", fontsize=12)
plt.title("每日登录失败次数统计(上周)", fontsize=14, pad=20)
# 保存折线图
line_path = r"D:\监控日志\登录失败折线图.png"
plt.tight_layout()
plt.savefig(line_path, dpi=100)
plt.close()
# 8. 把图表嵌进Excel(生成分析报告)
# 新建Excel
excel_path = r"D:\监控日志\操作日志分析报告.xlsx"
with pd.ExcelWriter(excel_path, engine="openpyxl") as writer:
# 写入原始统计数据(方便核对)
visit_count.to_frame("访问次数").to_excel(writer, sheet_name="访问统计")
if not sensitive_view_count.empty:
sensitive_view_count.to_frame("敏感查看次数").to_excel(writer, sheet_name="敏感统计")
daily_fail_count.to_excel(writer, sheet_name="登录失败统计", index=False)
# 加载Excel,插入图表
wb = load_workbook(excel_path)
# 新建“图表汇总”工作表
ws = wb.create_sheet(title="图表汇总")
# 插入柱状图(A1位置)
img_bar = Image(bar_path)
img_bar.width = 600 # 调整图片宽度
img_bar.height = 400
ws.add_image(img_bar, "A1")
# 插入饼图(A25位置,避开柱状图)
if pie_path:
img_pie = Image(pie_path)
img_pie.width = 500
img_pie.height = 500
ws.add_image(img_pie, "A25")
# 插入折线图(G25位置,避开饼图)
img_line = Image(line_path)
img_line.width = 600
img_line.height = 400
ws.add_image(img_line, "G25")
# 保存Excel
wb.save(excel_path)
print(f"日志分析报告已生成,路径:{excel_path}")
④ 运行代码+查看结果(10秒出分析!)
1. 运行代码:双击“日志可视化.py”,Python会自动读取日志、统计数据、生成3张图表、嵌进Excel;
2. 看Excel报告:打开“操作日志分析报告.xlsx”,切换到“图表汇总”工作表——
- 柱状图:一眼看出“leader_zhang访问12次最多,stock_li访问5次”;
- 饼图:清晰显示“leader_zhang占敏感数据查看的80%”;
- 折线图:发现“12月9日登录失败3次,可能有人试密码”;
3. 给领导汇报:不用翻日志,直接打开图表页,领导10秒get核心信息,不用再听你念数字!
效果对比:原来分析日志1小时,现在10秒出图表!
以前手动分析:翻日志30分钟+数数据15分钟+画表格15分钟,共1小时,还不直观;
现在自动可视化:10秒生成图表报告,谁访问多、敏感数据谁看、哪天有异常登录,图表一眼看清。上周给领导汇报,他盯着饼图说“敏感数据主要是我看的,没问题”,5分钟就结束汇报!
衔接全流程!自动化实现“日志-分析-可视化”闭环
现在你的大数据自动化彻底“可分析”:
1. 多任务自动执行→2. 写业务日志+操作日志→3. Python分析日志→4. 生成可视化图表→5. 嵌进Excel汇报
从日志记录到分析汇报,不用手动干预,每周省出1小时分析时间,还能及时发现异常(如多次登录失败)
记住:日志分析不用手动数,Python+图表自动显!图表类型按需求换(柱状图/饼图/折线图),记不住就收藏!
#职场效率 #Python日志可视化 #操作日志分析 #拒绝手动数数据 #办公自动化分析版

