博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
日志服务IPython/Jupyter扩展实战:下载数据为Excel文件 ...
阅读量:7082 次
发布时间:2019-06-28

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

问题

日志服务的数据并不要求统一格式,每条日志可以有不同的关键字集合,例如:

{"city": "123", "province": "vvv"}{"city": "shanghai", "pop": "2000"}{"name": "xiao ming", "home": "shanghai"}

因此一般使用日志服务的CLI下载的命令或者时,格式都是单行JSON格式以保证灵活性。

但是大部分情况下,一个日志库的所有日志的关键字集合总体是稳定的;另一方面,Excel格式(或者更简单的CSV格式)相对JSON更加商业应用和人类操作友好一些。

如果期望下载下来时是Excel或者CSV格式,并且自动处理字段不一致的情况的话,该怎么办?

本文通过使用日志服务IPython/Jupyter扩展,轻松做到这点。

前提

安装日志服务扩展

首先,参考文章完成安装(IPython Shell、IPython/Jupyter Notebook或者Jupyter Lab均可)

安装Excel相关组件

在IPython所在环境中安装Excel读写的相关组件:

pip install openpyxl xlrd xlwt XlsxWriter
  • openpyxl - 用于Excel 2010 xlsx/xlsm文件的读写
  • xlrd - 读取Exce (xls格式)
  • xlwt - 写Excel (xls格式)
  • XlsxWriter - 写Excel (xlsx)文件

配置

使用%manage_log配置好链接日志服务的相关入口、秘钥、项目和日志库等。具体参考。

场景

1. 将结果保存到Excel中

通过查询命令%%log查询得到Pandas Dataframe,然后调用to_excel即可。

样例:

%%log -1day ~ now* | select date_format(date_trunc('hour', __time__), '%H:%i') as dt,        count(1)%100 as pv,        round(sum(if(status < 400, 1, 0))*100.0/count(1), 1) AS ratio        group by date_trunc('hour', __time__)        order by dt limit 1000
df1 = log_dfdf1.to_excel('output.xlsx')

2. 将结果保存到Excel多个Sheet中

通过%log%%log获得多个数据存在不同的Dataframe中后,如下样例操作:

import pandas as pdwriter = pd.ExcelWriter('output2.xlsx') df1.to_excel(writer, sheet_name='data1')df2.to_excel(writer, sheet_name='data2')writer.save()

3. 定制Excel细节格式

Pandas默认使用Xlwt模块xls文件、使用Openpyxl模块xlsx文件。而使用XlsxWriterxlsx功能更加全面灵活,但需要如下配置。

例如上面例子中的ExcelWriter构造时,增加参数即可:

writer = pd.ExcelWriter('output2.xlsx', engine='xlsxwriter')

可以定制特定列的格式、样式、甚至直接画Excel图表。具体推荐参考。

4. 其他格式

Pandas DataFrame还可以保存其他格式,例如csvhtml等,可以进一步参考。

进一步参考

  • 扫码加入官方钉钉群 (11775223):
    image

转载地址:http://gpvml.baihongyu.com/

你可能感兴趣的文章
宿主机与虚拟机的相互通信
查看>>
C4D操作 延迟 ,卡顿罕见状况解决方案。
查看>>
文档linux1.2
查看>>
CentOS下如何完全卸载MySQL?解决卸载不干净的问题
查看>>
SHOW PROCESSLIST
查看>>
教你如何开启/关闭ubuntu防火墙
查看>>
一线 IT 公司开发转管理,我是怎么从 0 到 1 的?
查看>>
linux快捷键
查看>>
FTP服务器搭建与配置
查看>>
JAVA枚举类型
查看>>
PYTHON学习0008:字符编码----2019-6-7
查看>>
selenium系列->Actions命令实例整理->typeKeys(locator,value)
查看>>
每天一篇,深入学习MongoDB复制集
查看>>
go语言渐入佳境[15]-struct声明与定义
查看>>
[翻译]如何在CentOS / RHEL 7/6/5上安装最新的Nodejs和NPM
查看>>
小编教您Springboot项目中异常拦截设计与处理
查看>>
mysql Oracle 的区别 你不能不知道的事
查看>>
Nginx配置文件-3
查看>>
Linux 运维基础
查看>>
CAPP集成化工艺设计与管理系统
查看>>