前一阵子有个同事说,他看不懂从kibana上拉下来的日志,但是又想分析一些数据,感觉很头痛,每次都找开发给他整理一下,但是开发也很忙,要数据的频率也略高,那时候正好我跟这位需求方的项目,负责测试工作。然后,我晚上加班的时候就帮他写了一个很小的程序,帮助这位需求方同事可以随时查看数据。也不会占用任何人太多时间。

  解决思路:

  一、读取原始报表

    这里的config.ini中放的是原始报表名称 

[filenames]
file_name=XXXXXX.csv

  二、拆分数据

  三、按照既定规则计算符合flag的数据

  四、拼接数据,形成新的报表输出

  

'''
@create on : 20190311
@Update : 20190311
@description: 该模块可以直接获取最直观的报表 ''' import pandas as pd
import configparser
import os
import json # 获取项目根目录
dirpath = os.path.dirname(os.path.realpath(__file__)) # 拼接时候注意一下,会从第一个带有斜杠的地址开始拼接
sencondpath = os.path.join(dirpath, "log_file")
config = configparser.ConfigParser()
config.read("config.ini")
filename = config.get("filenames", "file_name") # 改config.ini中的文件名自动拼接
finalpath = os.path.join(sencondpath, filename) # 读入的CSV数据对象
log_df = pd.read_csv(finalpath, encoding="utf-8")
print(log_df) # 半成品矩阵
def mergedf():
df_right = log_df['message']
df_left = log_df['@timestamp']
result_df = pd.concat([df_left, df_right], axis=1)
return result_df def oprate_df():
# 计算有多少符合数据旗标
flag = 0 df_size = log_df.__len__()
urlParams, jrtt_reports, convert_ids = [], [], [] try:
goal_df = mergedf()
for line in range(df_size):
data_row = json.loads(log_df.loc[line, 'message'])
print(log_df.loc[line, '@timestamp'])
if data_row["data"]["jrtt_report"] is not None and data_row["data"]["convert_id"] is not None:
flag = flag + 1
line = line + 1 urlParams.append(data_row["data"]["urlparams"])
jrtt_reports.append(data_row["data"]["jrtt_report"])
convert_ids.append(data_row["data"]["convert_id"])
print(flag)
except Exception as e:
print("日志文件解析出错" + str(e)) try:
goal_df.insert(0, 'uelParmas', urlParams)
goal_df.insert(0, 'jrtt_repot', jrtt_reports)
goal_df.insert(0, 'convert_id', convert_ids) except Exception as e:
print("矩阵组合出错!"+str(e))
#print(goal_df)
return goal_df if __name__ == '__main__': total_df = oprate_df()
excelFile = "D:/anylysis/dataResult/workResult.xlsx"
writer = pd.ExcelWriter(excelFile)
total_df.to_excel(writer, 'FinalResult')
writer.save()

  

最新文章

  1. Unity 3D制作2D游戏的几种方法
  2. Android签名总结
  3. SSH(2)
  4. 看了让人笑了很多很多次的NB的痔疮经历
  5. 快速同步GitHub代码库
  6. 使用libzplay库封装一个音频类
  7. leetcode第八题 String to Integer (atoi) (java)
  8. WebService-通俗讲解
  9. vs2010 中检测到有潜在危险的 Request.Form 值
  10. 暑假学习计划:Day_1.JSP&Servlet&Tocat 环境搭建到基础的认识。
  11. Ocelot中文文档-微服务ServiceFabric
  12. Service Fabric SfDevCluster目录从默认的C盘移动
  13. [Java代码] Java用pinyin4j根据汉语获取各种格式和需求的拼音
  14. ERP启动会
  15. ubuntu安装mysql,redis,python-mysqldb
  16. 小众Python库介绍
  17. js和html插件集
  18. Language and Compiler Features Since Delphi 7
  19. poj2452
  20. day7—直播内容(元昊老师著)

热门文章

  1. day09 Pyhton学习
  2. 不是计算机专业的,可以转专业甚至转行学IT吗?答案揭晓~
  3. 使用docker安装E
  4. centos8平台使用loginctl管理登录用户与session
  5. centos8平台安装zookeeper3.6集群
  6. Unity-根据时间开灯与关灯
  7. Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(一)
  8. spring cloud gateway网关路由分配
  9. 使用AudioRecord录音
  10. 浅谈DevOps