文章目录

  • 一、需求
  • 二、python代码实现

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

一、需求

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

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

二、python代码实现

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

import pandas as pd
# pd.read_html()方法,可以直接将网页上这种表格型数据转成DataFrame
df = 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列里内容的长度,找断网前最后一个日志和通网后的第一个日志的基本思路如下:

算时间差

import pandas as pd
time_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())     # 总的秒数运行结果如下:
0 days 00:31:06
Components(days=0, hours=0, minutes=31, seconds=6, milliseconds=0, microseconds=0, nanoseconds=0)
0
0
31
6
1866.0

完整实现如下

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

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

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

# 统计断网次数
print(f'断网次数:{len(count)}')
# 计算时间差
data = []for item in count: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))
# 数据保存到Excel
df.to_excel('aliyun-ddns.xlsx')
datas.to_excel('cal_datas.xlsx')

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

保存每次记录如下:

Python自动化办公实战,上万数据中统计断网次数并计算平均断网时间相关推荐

  1. 盘点一个Python自动化办公实战案例

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 阳和不散穷途恨,霄汉长怀捧日心. ...

  2. Python自动化办公:读取Excel数据并批量生成合同,高效办公,快速回家

    前言 在我们的工作中,面临着大量的重复性工作,通过人工方式处理往往耗时耗力易出错.而Python在自动化办公方面具有极大的优 势,可以解决我们工作中遇到的很多重复性问题,分分钟搞定办公需求.快速下班回 ...

  3. python自动化办公实战案例,python 自动化办公 案例

    推荐几个适合新手练手的Python项目 谷歌人工智能写作项目:小发猫 python编程:输入一个自然数n,如果n为奇数,输出表达式1+1/3+-+1/n的值 def summ(n): if n%2: ...

  4. python自动化办公 百度网盘-Python自动化办公实战教程2020最新带源码

    资源目录: 视频 001_Excel_xlrd读_xlwt写.mp4 003_Excel_案例_统计每位同学总分.mp4 004_MySQL_我为什么不建议学.mp4 005_Excel_更灵活的操作 ...

  5. python自动化办公入门书籍-Python自动化办公实战教程2020最新带源码

    资源目录: 视频 001_Excel_xlrd读_xlwt写.mp4 003_Excel_案例_统计每位同学总分.mp4 004_MySQL_我为什么不建议学.mp4 005_Excel_更灵活的操作 ...

  6. Python 自动化办公-玩转 Word

    只要是简单重复的工作,就想办法用 Python 来帮你解决吧,人生苦短,你需要 Python. Word 是办公软件中使用频率非常高的软件之一了,假如你需要调整 100 个 Word 文档的格式保持统 ...

  7. 【哈士奇赠书活动 - 25期】-〖Python自动化办公应用大全(ChatGPT版) 〗

    文章目录 ⭐️ 赠书 - <Python自动化办公应用大全(ChatGPT版)> ⭐️ 内容简介 ⭐️ 作者简介 ⭐️ 编辑推荐 ⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书 - <Py ...

  8. python处理Excel实现自动化办公教学(数据筛选、公式操作、单元格拆分合并、冻结窗口、图表绘制等)【三】

    相关文章: python处理Excel实现自动化办公教学(含实战)[一] python处理Excel实现自动化办公教学(含实战)[二] python处理Excel实现自动化办公教学(数据筛选.公式操作 ...

  9. python自动化办公之爬取HTML图片写入PPT实战

    python自动化办公之批量图片导入PPT 昨天,大Boss找到一个网页,觉得里面的图片内容特别好,想把它下载下来作为学习资料,整理整理教导下属.但是,手动一张一张的保存图片太慢了,问我可不可以下载下 ...

最新文章

  1. 熵是什么?熵的公式是什么?决策树如何把熵的递减变换为信息增益进行树枝的分叉以及树的生长的?
  2. 20155227 2016-2017-2 《Java程序设计》第九周学习总结
  3. 2017年秋季个人阅读计划
  4. 统计特性和概率估计-1 (数学推导与证明)
  5. 3D渲染集群,听说过吗?
  6. Java获取资源的路径
  7. JVM快速调优手册v1.0
  8. 【UKIEPC2017:D】Deranging Hat(求序列a到a‘交换过程的具体实现)
  9. java CRC32
  10. 提供免费的 客户资源管理系统 -真的很经典
  11. Shopee平台,对接运营经理是一条离成功更近的捷径
  12. js实现显示系统时间的表盘
  13. css面试题手写九宫格
  14. 七牛的管理接口不支持js端发送请求进行管理(设计到跨域问题)
  15. IT6801FN图像质量调优
  16. 使用Linux还原存储在群晖中的数据
  17. 有哪些道理是你毕业多年后才明白的?
  18. 鸿蒙os官网2.0,鸿蒙 OS 2.0正式发布,看看用户体验评价,内附可升级型号名单!...
  19. C++中string.find()函数与string::npos
  20. 解决LEDE无线做中继不成功问题

热门文章

  1. 精品微信小程ssm便捷记账本财务账单+后台管理系统|前后分离VUE
  2. 量化投资学习——ESG因子收益分析
  3. QQ日志最多添加几条HTML,信息字数超出限制 qq对话框里显示字数超出限制怎么办...
  4. Java中的isnan函数_Java Float类isNaN()方法与示例
  5. C++笔试试题讲解(~~~可能是全站唯独一份有解析的~~~)
  6. 2019保研南京大学软件学院后的一些感想
  7. 四.设备某一参数的标示方法。 一般是结构体,结构体嵌套结构体
  8. Spacedesk 安装教程及连接后黑屏解放方法
  9. web:常见安全问题
  10. 2O19 江大计算机有调剂,江南大学2019考研调剂公告