[月份维度]日志数据提取包含关键词的事件,解析落入的月份计数,matplotlib绘制统计图,python

日志数据提取事件关键词,解析对应日期的星期计数,matplotlib绘制统计图,python

https://zhangphil.blog.csdn.net/article/details/125941649https://zhangphil.blog.csdn.net/article/details/125941649

在此基础上,对代码修改,以月为维度,统计包含关键词事件落入的月份。

from datetime import datetime
from pprint import ppimport pandas as pd
import matplotlib
import matplotlib.pyplot as pltfrom fuzzywuzzy import fuzz
import reFILE_PATH = r'源数据路径'
KEY = r'模糊匹配的关键词'  # 关键词1,关键词2
threshold = 80SECTION = 'section'
SUM = 'sum'def drawchart(df):myfont = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\msyh.ttc')plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号plt.rc('font', family='YaHei', weight='bold')order = []name = []mem = []for d, i in zip(df.values, df.index):order.append(i)name.append(d[0])mem.append(int(d[1]))FONT_SIZE = 12fig, ax = plt.subplots(figsize=(15, 13))b = ax.barh(y=range(len(name)), width=mem, align='center', color='red')# 为横向水平的柱图右侧添加数据标签。i = 0for rect in b:w = rect.get_width()ax.text(x=w, y=rect.get_y() + rect.get_height() / 2, s='%d' % (int(w)),horizontalalignment='left', verticalalignment='center',fontproperties=myfont, fontsize=FONT_SIZE - 2, color='green')ax.text(x=w / 2, y=rect.get_y() + rect.get_height() / 2, s=str(order[i]),horizontalalignment='center', verticalalignment='center',fontproperties=myfont, fontsize=FONT_SIZE - 3, color='white')i = i + 1ax.set_yticks(range(len(name)))ax.set_yticklabels(name, fontsize=FONT_SIZE - 1, fontproperties=myfont)ax.invert_yaxis()ax.set_xlabel('数据', fontsize=FONT_SIZE + 2, fontproperties=myfont)ax.set_title('数据点总量排名', fontsize=FONT_SIZE + 3, fontproperties=myfont)# 不要横坐标上的label标签。plt.xticks(())# 清除四周的边框线ax.get_yaxis().set_visible(True)for spine in ["left", "top", "right", "bottom"]:ax.spines[spine].set_visible(False)plt.subplots_adjust(left=0.15)  # 调整左侧边距# ax.margins(y=0.01) #缩放 zoom inax.set_aspect('auto')plt.show()def read_file():file = open(FILE_PATH, 'r', encoding='UTF-8')all_case_time = []case_count = 1cnt = 1for line in file:pr = fuzz.partial_ratio(line, KEY)if pr >= threshold:print('-----')print(f'第{case_count}件')case_count = case_count + 1try:# 正则匹配 xxxx年xx月xx日xx时xx分mat = re.search(r'\d{4}\年\d{1,2}\月\d{1,2}\日\d{1,2}\时\d{1,2}\分', line)t_str = mat.group().replace('\n', '')  # 去掉正则匹配到但是多余的 \n 换行符try:object_t = datetime.strptime(t_str, "%Y年%m月%d日%H时%M分")all_case_time.append(object_t.date())  # 日期提取出来,放到数组中print(f'{object_t.date().strftime("%Y-%m-%d")} {object_t.weekday()}')except:print('解析日期失败')passexcept:t_str = '-解析异常-'passs = '第{number}行,相似度{ratio},时间{case_time}\n{content}'ss = s.format(number=cnt, ratio=pr, case_time=t_str, content=line)pp(ss)# 快速调试# if case_count > 100:#    breakcnt = cnt + 1file.close()return all_case_timedef data_frame():ts = read_file()times = []for i in range(12):times.append({SECTION: i, SUM: 0})for t in ts:for tx in times:if tx[SECTION] == t.month:tx[SUM] = tx[SUM] + 1breakreturn timesdef number_to_month(number):zh = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二']m = f'{zh[number]}月'return mif __name__ == '__main__':times = data_frame()# 数据组装成pandas数据帧。pd_data = []for t in times:l = [number_to_month(t[SECTION]), t[SUM]]pd_data.append(l)col = ['月份', '次数']df = pd.DataFrame(data=pd_data, columns=col)df = df.sort_values(by=col[1], axis=0, ascending=False)  # 降序# 重置索引df = df.reset_index(drop=True)df.index = df.index + 1# 前10名pp(df.head(20))# pp(df.values)drawchart(df)

变换关键词,查找后生成的统计图:

[月份维度]日志数据提取包含关键词的事件,解析落入的月份计数,matplotlib绘制统计图,python相关推荐

  1. Python网页分析,分析网站的日志数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于大话数据分析,作者:尚天强 网站的日志数据记录了所有Web对 ...

  2. python json提取器_【编号0004】爬虫中常用到的数据提取手段

    使用爬虫抓取网上公开的网页数据时,经常需要使用各种技能去解析到手的响应. 本篇文章,重点介绍下,数据提取时,有哪些常见的方法 0. 背景交代 编程语言:Python 提取方式:Python库 1. X ...

  3. 一个好的大数据分析软件包含哪些功能

    随着数字时代的到来,数据已经成为企业最重要的资源.现在企业面临的问题是如何在数据的海洋中获取有价值的信息.在这样的市场背景下,数据分析软件应运而生,许多企业习惯于使用数据分析软件来处理数据.这是因为使 ...

  4. 大数据技术包含哪些结构层次

    大数据领域每年都会涌现出大量新的技术,大数据技术可以挖掘出大规模数据中隐藏的信息和知识,为人类社会经济活动提供依据,提高各领域的运行效率,甚至提高整个社会经济的集约化程度.那么大数据计算包含哪些结构层 ...

  5. Zabbix整合ELK实现日志数据的分析实时监控

    一,ELK和Zabbix的关系? ELK是一套组合的日志收集系统,由Elasticsearch.Logstash和Kibana三个软件组成,通过ELK可以收集系统日志.网站日志.应用系统日志等各种日志 ...

  6. jira 史诗 故事 任务_史诗般的数据提取任务

    jira 史诗 故事 任务 Special thanks to the person on twitter who messaged me with this question and is lett ...

  7. 数据提取-数据提取软件

    数据提取,数据提取主要是用来收集数据.这也是数据提取最直接和最常见的用途.由于数据提取是一个工具是一个软件,程序运行速度极快,而且不会因为做重复的事情而感到疲劳,所以使用数据提取来获取大量的数据就变得 ...

  8. xcode 使用xparse,xccov解析xcresult文件,查看代码覆盖率,导出日志,提取附件等

    背景 在使用xcode运行代码后,查看运行日志,可以看到在文件夹(macOS系统)下 *xxx为用户名,zzz为项目名 /Users/xxx/Library/Developer/Xcode/Deriv ...

  9. 跨境电商亚马逊卖家最需要关注的四个维度的数据

    对大多数跨境电商卖家而言,在经济平台政策趋严.销售额没达到预期,甚至是出现账号被关等情况后,跨境电商卖家需要关注四个维度的数据,及时调整其运营动作将影响成败.第一个产品表现. 首先,无论是做什么产品, ...

最新文章

  1. oracle SQL 命令行(一.基础)
  2. linux系统在硬盘上安装程序,在硬盘中安装Linux操作系统最简单的方法
  3. 补充上次的将父类作为方法的返回类型
  4. 分治算法-01连续子序列的最大和问题
  5. spring boot 跨域请求_SpringBoot 系列教程 web 篇之自定义请求匹配条件 RequestCondition...
  6. waveOutGetDevCaps - 查询输出设备的性能
  7. [朴素妍][뭐라고 끝낼까][说什么结束]
  8. 自己创建DXperience的本地资源文件
  9. 非度量多维标度_R软件包vegan教程 2.1非度量多维度标度变换
  10. VuePress开启评论、VuePress评论功能。
  11. PyTorch:view() 与 reshape() 区别详解
  12. android botton控件基本属性
  13. Google Earth Engine(GEE)计算热度(LST)
  14. excel中利用综合应用len(),lenb(),left() ,find()函数筛选汉字问题
  15. 解决Failed to connect to github.com port 443 after 21113 ms: Timed out
  16. Win10 蓝屏0xc0000098修复
  17. Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.Generi
  18. MFC+opencv实现摄像头的打开与关闭
  19. 暗组免杀php,那些强悍的PHP一句话后门
  20. 定时器(Timer)

热门文章

  1. 8线-3线优先编码器
  2. CocosCreator之KUOKUO趣味文章:小怪的诞生 1
  3. 读yolo_slowfast代码
  4. HTTP协议与WS协议小结
  5. 转:phpstorm破解教程
  6. Excel按单元格背景颜色查找单个单元格的2种操作
  7. [转bbs] 当一个男的真正爱你的时候
  8. 今天是个比较特殊的日子——再次受到创伤
  9. 微信小程序踩坑日记-微信小程序首次加载样式错乱问题
  10. 【瑞云知道】-5款广受欢迎的渲染软件