python 办公自动化系列 (1) 从22053条数据中统计断网次数并计算平均断网时间

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 找到通网后的第一个日志和断网前的最后一个日志,然后提取 date 列的时间做减法,获得本次断网时间,之后用同样的方法统计每次的断网时间,最后计算总的断网次数和断网时间的平均值

一、需求


aliyun-ddns.html文件里有服务器相关的一些日志信息,具体如下:



需求:找到通网后的第一个日志和断网前的最后一个日志,然后提取 date 列的时间做减法,获得本次断网时间,之后用同样的方法统计每次的断网时间,最后计算总的断网次数断网时间的平均值。



二、python代码实现


pd.read_html()方法,可以直接将网页上这种表格型数据转成DataFrame


importpandasaspd# pd.read_html()方法,可以直接将网页上这种表格型数据转成DataFramedf=pd.read_html(r'aliyun-ddns.html')[0]
df


运行效果如下:


可以看到,总共有22053条数据,人工去找断网前最后一个日志和通网后的第一个日志,再算断网时间,想起来都挺费劲的,还很无聊。


Python自动化办公当然是为了在处理这些简单、重复、有规律的任务时,能够帮助我们解放双手,让复杂的工作自动化。


不过在写自动化脚本之前也要先拆分任务,明确思路再进行操作。


任务拆解


如何找到断网前最后一个日志和通网后的第一个日志


# 通网的日志   content列的字符串len('2020/08/25 13:30:58 m.hlnas.top 112.226.49.5 [中国 山东 青岛]')
# 断网的日志   content列里的字符串len('2020/08/24 16:59:03 Query IP Format error.')
len('2020/08/25 12:30:55 m.hlnas.top')



分析通网和断网的日志里content列里内容的长度,找断网前最后一个日志和通网后的第一个日志的基本思路如下:


  • 第 i 行 content列里字符串长度大于50,i+1 行content列里字符串长度小于45,这个第 i 行则为断网前的最后一个日志。
  • 第 i 行 content列里字符串长度小于45,i+1 行content列里字符串长度大于50,这个第 i+1 行则为通网后的第一个日志。


算时间差


importpandasaspdtime_delta=pd.to_datetime('2020-08-25 04:35:56') -pd.to_datetime('2020-08-25 04:04:50')
print(time_delta)
print(time_delta.components)
print(time_delta.components.days)      
print(time_delta.components.hours)
print(time_delta.components.minutes)
print(time_delta.components.seconds)
print(time_delta.total_seconds())     # 总的秒数运行结果如下:0days00:31:06Components(days=0, hours=0, minutes=31, seconds=6, milliseconds=0, microseconds=0, nanoseconds=0)
003161866.0


完整实现如下


importpandasaspd# pd.read_html()方法,可以直接将网页上这种表格型数据转成DataFramedf=pd.read_html('aliyun-ddns.html')[0]
count= []    # 记录总的断网 通网次数 [(断网日志的行索引, 通网日志的行索引)...]flag=0record= []   # 记录一次的断网 同网  (断网日志的行索引, 通网日志的行索引)foriinrange(len(df)):
try:
iflen(df.iloc[i+1, ::]['content']) <45andlen(df.iloc[i, ::]['content']) >50:   #   断网前最后一个日志record.append(i)
flag+=1iflen(df.iloc[i+1, ::]['content']) >50andlen(df.iloc[i, ::]['content']) <45:   #  通网后第一个日志record.append(i+1)
flag+=1ifflag==2:
count.append(record)
flag=0# 置为0record= []   # 置为空exceptIndexError:    # 超界   说明遍历统计结束passprint(count)        


从统计的结果任选两条进行查看,对比看看是否找对。




对比可以发现,查找结果完全正确。


# 统计断网次数print(f'断网次数:{len(count)}')


# 计算时间差data= []
foritemincount:
disconnection_time=df.loc[item[0], ::]['date']    # 断网时间connection_time=df.iloc[item[1], ::]['date']      # 通网时间delta= (pd.to_datetime(disconnection_time) -pd.to_datetime(connection_time)).total_seconds() # 总秒数data.append({'断网时间': disconnection_time, '通网时间': connection_time, '时间差(秒)': delta})
datas=pd.DataFrame(data)
datas.head(8)



# 求断网时间的平均值averge=datas['时间差'].mean()
print('断网时间平均值:{:.3f}s'.format(averge))
# 数据保存到Exceldf.to_excel('aliyun-ddns.xlsx')
datas.to_excel('cal_datas.xlsx')



从这批数据中统计得到,断网次数为97,平均断网时间为6133.938s。


保存每次记录如下:

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
4月前
|
数据采集 数据可视化 JavaScript
用 通义灵码和 PyQt5 爬虫智能体轻松爬取掘金,自动化采集技术文章和数据
本文介绍了如何利用智能开发工具通义灵码和Python的PyQt5框架,构建一个自动化爬取掘金网站技术文章和数据的智能爬虫系统。通过通义灵码提高代码编写效率,使用PyQt5创建可视化界面,实现对爬虫任务的动态控制与管理。同时,还讲解了应对反爬机制、动态内容加载及数据清洗等关键技术点,帮助开发者高效获取并处理网络信息。
|
5月前
|
Python
掌握Python装饰器:轻松统计函数执行时间
掌握Python装饰器:轻松统计函数执行时间
383 76
|
3月前
|
数据采集 运维 监控
|
4月前
|
Python
Python 办公实战:用 python-docx 自动生成 Word 文档
本文详解如何使用 python-docx 库实现 Word 文档自动化生成,涵盖环境搭建、文档创建、格式设置、表格与图片处理、模板填充、批量生成及性能优化等实战技巧,助你高效完成办公场景中的文档自动化任务。
1269 1
|
4月前
|
安全 数据库 数据安全/隐私保护
Python办公自动化实战:手把手教你打造智能邮件发送工具
本文介绍如何使用Python的smtplib和email库构建智能邮件系统,支持图文混排、多附件及多收件人邮件自动发送。通过实战案例与代码详解,帮助读者快速实现办公场景中的邮件自动化需求。
421 0
|
7月前
|
数据采集 JSON 前端开发
GraphQL接口采集:自动化发现和提取隐藏数据字段
本文围绕GraphQL接口采集展开,详解如何通过`requests`+`Session`自动化提取隐藏数据字段,结合爬虫代理、Cookie与User-Agent设置实现精准抓取。内容涵盖错误示例(传统HTML解析弊端)、正确姿势(GraphQL请求构造)、原因解释(效率优势)、陷阱提示(反爬机制)及模板推荐(可复用代码)。掌握全文技巧,助你高效采集Yelp商家信息,避免常见误区,快速上手中高级爬虫开发。
145 3
GraphQL接口采集:自动化发现和提取隐藏数据字段
|
7月前
|
Python
Python中Cp、Cpk、Pp、Ppk的计算与应用
总的来说,Cp、Cpk、Pp、Ppk是衡量过程能力的重要工具,它们可以帮助我们了解和改进生产过程,提高产品质量。
696 13
|
8月前
|
缓存 监控 API
微店商品详情API接口实战指南:从零实现商品数据自动化获取
本文介绍了微店商品详情API接口的应用,涵盖申请与鉴权、签名加密、数据解析等内容。通过Python实战演示了5步获取商品数据的流程,并提供了多平台同步、价格监控等典型应用场景。开发者可利用此接口实现自动化操作,提升电商运营效率,降低人工成本。文中还总结了频率限制、数据缓存等避坑指南,助力开发者高效使用API。
|
7月前
|
存储 人工智能 算法
使用Python计算从位置x到y的最少步数
本文通过Python代码结合广度优先搜索(BFS)算法,解决从起点到终点的最少步数问题。以二维网格为例,机器人只能上下左右移动,目标是最短路径。BFS按层遍历,确保首次到达终点即为最短路径。文中提供完整Python实现,包括队列与访问标记数组的使用,并输出示例结果。此外,还探讨了双向BFS、Dijkstra及A*算法等优化方法,帮助读者深入理解最短路径问题及其高效解决方案。
240 0
|
8月前
|
数据采集 消息中间件 API
微店API开发全攻略:解锁电商数据与业务自动化的核心能力
微店开放平台提供覆盖商品、订单、用户、营销、物流五大核心模块的API接口,支持企业快速构建电商中台系统。其API体系具备模块化设计、双重认证机制、高并发支持和数据隔离等特性。文档详细解析了商品管理、订单处理、营销工具等核心接口功能,并提供实战代码示例。同时,介绍了企业级整合方案设计,如订单全链路自动化和商品数据中台架构,以及性能优化与稳定性保障措施。最后,针对高频问题提供了排查指南,帮助开发者高效利用API实现电商数智化转型。适合中高级开发者阅读。

推荐镜像

更多