前一阵子有个同事说,他看不懂从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()

  

与pandas初相识的更多相关文章

  1. 初相识|performance_schema全方位介绍

    初相识|performance_schema全方位介绍 |导 语 很久之前,当我还在尝试着系统地学习performance_schema的时候,通过在网上各种搜索资料进行学习,但很遗憾,学习的效果并不 ...

  2. Pandas初体验之数据结构——Series和DataFrame

    Pandas是为了解决数据分析任务而创建的,纳入了大量的库和标准数据模型,提供了高效地操作大型数据集所需的工具. 对于Pandas包,在Python中常见的导入方法如下: from pandas im ...

  3. Pandas初体验

    目录 Pandas 一.简介 1.安装 2.引用方法 二.series 1.创建方法 2.缺失数据处理 2.1 什么是缺失值 2.2 NaN特性 2.3 填充NaN 2.4 删除NaN 2.5 其他方 ...

  4. 我和python的初相识

    认识Python是大二的选修 单纯只是想赚学分而已 后来觉得越来越有趣. 一.python简介 简单来说Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python 的设 ...

  5. audacity 做音频分析之--初相识

    软件介绍: Audacity是一个跨平台的声音编辑软件,用于录音和编辑音频,是自由.开放源代码的软件.可在Mac OS X.Microsoft Windows.GNU/Linux和其它操作系统上运作. ...

  6. 神经网络架构PYTORCH-初相识(3W)

    who? Python是基于Torch的一种使用Python作为开发语言的开源机器学习库.主要是应用领域是在自然语言的处理和图像的识别上.它主要的开发者是Facebook人工智能研究院(FAIR)团队 ...

  7. Java 初相识

    Java是如何出现的呢?这就要回到1991年,那时候随着单片机的发展,出现了很多微型的系统,Sun公司在这个时候就成立的一个项目组,成员就有我们熟知的“Java之父” 詹姆斯·高斯林,起初的目标是为了 ...

  8. 3.Spring Cloud初相识--------Ribbon客户端负载均衡

    前言: 在生产环境中,未避免单点故障,每个微服务都会做高可用部署. 通白的说,就是每一个一模一样的服务会根据需求提供多分在多台机器上. 那么在大并发的情况下,如何分配服务可以快速得到响应,就成为了我们 ...

  9. NetworkX初相识

    听说NetworkX是一个很牛的复杂网络研究的工具,就来试一下吧. import networkx as nx G= nx.Graph()#建立一个空白的图 G.add_node("node ...

随机推荐

  1. go panic

    panic 抛出异常 通过recover捕获 类似 php python等语言的try catch package mainimport ( "fmt" "errors& ...

  2. Chimm.Excel —— 使用Java 操作 excel 模板文件生成 excel 文档

    Chimm.Excel -- 设置模板,填充数据,就完事儿了~ _____ _ _ _____ _ / __ \ | (_) | ___| | | | / \/ |__ _ _ __ ___ _ __ ...

  3. SLF4J :Failed to load class "org.slf4j.impl.StaticLoggerBinder".

    错误提示 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to ...

  4. 使用BeetleX.Tracks对APM关系链埋点

    在现今微服务流行的年代相信一定有了解APM,对于APM核心来说是数据来源,一般各自的APM都有对应的组件帮助完成这些工作.如果需要制作自己的APM系统 ,那需要考虑服务程序调用埋点问题:在这里介绍使用 ...

  5. 十年老苹果(A1286)强升Catalina及Win10踩坑记(续)

    背景 自上次发布十年老苹果(A1286)强升Catalina及Win10踩坑记以来,因为后半部分-----系统安装上的细节描述过于简略,一些朋友在安装过程中总是又遇到坑,由此特意详述这一过程,让园友少 ...

  6. 上午小测1 B.序列 哈希表+数学

    题目描述 \(EZ\) 每周一都要举行升旗仪式,国旗班会站成一整列整齐地向前行进. 郭神摄像师想要选取其中一段照下来.他想让这一段中每个人的身高成等比数列,展示出最萌身高差.但他发现这个太难办到了.于 ...

  7. 【django-simpleui】‘simpletags‘ is not a registered tag library报错的解决方法

    1:创建  templatetags文件夹 2:创建simpletags.py文件将内容粘贴进去,在下面 3:setting.py添加文件指定: 1 TEMPLATES = [ 2 { 3 'BACK ...

  8. java线程池拒绝策略使用实践

    前言 线程池是开发过程中使用频率较高的一个并发组件之一,本篇会结合踩刀哥之前的实践经验来分享一下线程池拒绝策略的真实使用场景,至于线程池内部原理只会简单介绍,有需要的可以自行上网学习. 线程池工作机制 ...

  9. Nginx跳转配置

    1.携带目录调转到后端,后端无目录,location配置如下 例子: i2.jusdacfj.com/ideas_edi/--10.0.2.137:7040/10.0.2.138:7040 locat ...

  10. python给图片打马赛克

    图片马赛克 关注公众号"轻松学编程"了解更多. 导包 import numpy as np import matplotlib.pyplot as plt %matplotlib ...