与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 ...
随机推荐
- linux centos 05
centos7安装mariadb 1.yum 得配置yum源,配置阿里云的 两个 yum源 ,阿里云的yum源中,会有 mariadb的软件包 阿里云的yum仓库中,mariadb版本如下 mar ...
- 机器学习 KNN算法原理
K近邻(K-nearst neighbors,KNN)是一种基本的机器学习算法,所谓k近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表.比如:判断一个人的人品,只需要观察 ...
- selenium--基础学习
from selenium import webdriver from selenium.common.exceptions import TimeoutException, NoSuchElemen ...
- Linux的外部命令的执行
查看外部命令的路径 whereis 不但能显示出外部命令的路径还能显示出帮助文档 which -a |--skip-alias whereis
- Pytest学习(三) - setup和teardown的使用
一.前言 从文章标题可以看出,就是初始化和释放的操作,根据我的java习惯来学习pytest,个人感觉没差太多,理解上也不是很难. 哦,对了,差点跑题了,这个框架是基于Python语言的,在学习的时候 ...
- 从零造就JVM大牛(一)
引言 从事java的小伙伴大家好,如果你是一名从事java行业的程序员,无论你是小白还是工作多年的老司机,我相信这篇文章一定会给你带来 不同程度的收货不敢说你看完我的文章从此精通jvm打遍天下无对手, ...
- 论文解读《Deep Plug-and-Play Super-Resolution for Arbitrary Blur Kernel》
Deep Plug-and-Play Super-Resolution for Arbitrary Blur Kernels: 一旦退化模型被定义,下一步就是使用公式表示能量函数(energy fun ...
- windows下安装redis集群
前几天在自己在本机win10 电脑下部署了redis集群. 主要通过的是网上两个博客: 如何在windows下部署redis集群:https://blog.csdn.net/zsg88/article ...
- jq animate 的第二写法
俩个参数的写法 例子: $('#div1').animate({num:'auto'},{ duration : 1000, //运动时间 easing : 'linear', //运动形式 ...
- Gym102012A Rikka with Minimum Spanning Trees
题意 \(T\) 组数据,每组数据给定一个 \(n\) 个点,\(m\) 条边,可能含有重边自环的图,求出最小生成树的个数与边权和的乘积,对 \(10^9+7\) 取模. \(\texttt{Data ...