博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
与pandas初相识
阅读量:5089 次
发布时间:2019-06-13

本文共 2227 字,大约阅读时间需要 7 分钟。

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

  解决思路:

  一、读取原始报表

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

[filenames]file_name=XXXXXX.csv

  二、拆分数据

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

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

  

'''@create on : 20190311@Update : 20190311@description: 该模块可以直接获取最直观的报表'''import pandas as pdimport configparserimport osimport 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_dfdef 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_dfif __name__ == '__main__':    total_df = oprate_df()    excelFile = "D:/anylysis/dataResult/workResult.xlsx"    writer = pd.ExcelWriter(excelFile)    total_df.to_excel(writer, 'FinalResult')    writer.save()

  

转载于:https://www.cnblogs.com/yuki-nana/p/10803116.html

你可能感兴趣的文章
Java程序IP v6与IP v4的设置
查看>>
RUP(Rational Unified Process),统一软件开发过程
查看>>
数据库链路创建方法
查看>>
Enterprise Library - Data Access Application Block 6.0.1304
查看>>
重构代码 —— 函数即变量(Replace temp with Query)
查看>>
Bootstrap栅格学习
查看>>
程序员的数学
查看>>
聚合与组合
查看>>
jQuery如何获得select选中的值?input单选radio选中的值
查看>>
设计模式 之 享元模式
查看>>
如何理解汉诺塔
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
15 FFT及其框图实现
查看>>
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
3.0.35 platform 设备资源和数据
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>
WebDriverExtensionsByC#
查看>>