与pandas初相识
前一阵子有个同事说,他看不懂从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初相识的更多相关文章
- 初相识|performance_schema全方位介绍
初相识|performance_schema全方位介绍 |导 语 很久之前,当我还在尝试着系统地学习performance_schema的时候,通过在网上各种搜索资料进行学习,但很遗憾,学习的效果并不 ...
- Pandas初体验之数据结构——Series和DataFrame
Pandas是为了解决数据分析任务而创建的,纳入了大量的库和标准数据模型,提供了高效地操作大型数据集所需的工具. 对于Pandas包,在Python中常见的导入方法如下: from pandas im ...
- Pandas初体验
目录 Pandas 一.简介 1.安装 2.引用方法 二.series 1.创建方法 2.缺失数据处理 2.1 什么是缺失值 2.2 NaN特性 2.3 填充NaN 2.4 删除NaN 2.5 其他方 ...
- 我和python的初相识
认识Python是大二的选修 单纯只是想赚学分而已 后来觉得越来越有趣. 一.python简介 简单来说Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python 的设 ...
- audacity 做音频分析之--初相识
软件介绍: Audacity是一个跨平台的声音编辑软件,用于录音和编辑音频,是自由.开放源代码的软件.可在Mac OS X.Microsoft Windows.GNU/Linux和其它操作系统上运作. ...
- 神经网络架构PYTORCH-初相识(3W)
who? Python是基于Torch的一种使用Python作为开发语言的开源机器学习库.主要是应用领域是在自然语言的处理和图像的识别上.它主要的开发者是Facebook人工智能研究院(FAIR)团队 ...
- Java 初相识
Java是如何出现的呢?这就要回到1991年,那时候随着单片机的发展,出现了很多微型的系统,Sun公司在这个时候就成立的一个项目组,成员就有我们熟知的“Java之父” 詹姆斯·高斯林,起初的目标是为了 ...
- 3.Spring Cloud初相识--------Ribbon客户端负载均衡
前言: 在生产环境中,未避免单点故障,每个微服务都会做高可用部署. 通白的说,就是每一个一模一样的服务会根据需求提供多分在多台机器上. 那么在大并发的情况下,如何分配服务可以快速得到响应,就成为了我们 ...
- NetworkX初相识
听说NetworkX是一个很牛的复杂网络研究的工具,就来试一下吧. import networkx as nx G= nx.Graph()#建立一个空白的图 G.add_node("node ...
随机推荐
- spring boot:shardingsphere+druid整合seata分布式事务(spring boot 2.3.3)
一,shardingshpere为什么要整合seata? 分库分表是数据库扩展中最常用的处理方法, shardingshpere作为使用最广泛的分表中间件, 如果不支持分布式事务,则它的数据一致性就会 ...
- spring boot:单文件上传/多文件上传/表单中多个文件域上传(spring boot 2.3.2)
一,表单中有多个文件域时如何实现说明和文件的对应? 1,说明和文件对应 文件上传页面中,如果有多个文件域又有多个相对应的文件说明时, 文件和说明如何对应? 我们在表单中给对应的file变量和text变 ...
- centos8平台使用stress做压力测试
一,安装stress: 说明:el8的源里面还没有,先用el7的rpm包 [root@centos8 source]# wget https://download-ib01.fedoraproject ...
- python 安装matplotlib
下载minianaconda 安装 进入cmd下 conda create --name python37 python=3.7 创建python3.7环境 conda activate pytho ...
- 【应用程序见解 Application Insights】在Application Insights中通过自定义查询结果定义指标并显示在Dashboard中
问题情形 通过Application Insights收集到指标数据后,如Request,Trace,Exception.但是默认的Insights图表不能满足业务的需求,需要自定义相应的类SQL语句 ...
- JS图片的放大与缩小
<!doctype html><head><meta charset=utf-8" /><title>javascript控制图片缩小或者放大 ...
- MySQL数据库基础-3
SQL语言 结构化的查询云烟 有国际标准. 非常容易学习的,关注数据本身,类似于shell SQL解释器 命令行效率比较高 应用编程接口 ODBC:Open Database Connectivity ...
- Linux命令的执行
为什么在提示符下命令可以被执行呢? 执行命令过程 输入命令后回车,提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来 shell本身也是一个程序,只不过 ...
- git学习(四) git log操作
git log操作 log命令的作用:用于查看git的提交历史: git log命令显示的信息的具体含义: commit SHA-1 校验和 commit id Author 作者跟邮箱概要信息 D ...
- Udacity的C++编程练习: Python转C++
练习 1 在机器人定位的课程中,Sebastian Thrun 已经带领你了解了一维机器人传感和运动的 Python 代码.最后你得到了一个 sense() 函数,它基于传感器的测量数据来更新概率.你 ...