文章目录

  • 一、需求
  • 二、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. Python 四大基本语法
  2. 转:iFire:玩聚 SRBacks 自定义脚本及样式表
  3. js tool 方法之删除数组指定项
  4. Nacos配置中心-如何使用Nacos作为配置中心统一管理配置
  5. window.navigator.userAgent用来区分设备和浏览器
  6. Ant远程部署到Tomcat
  7. 为WPF, UWP 及 Xamarin实现一个简单的消息组件
  8. Spring应用程序与JNDI连接池的集成测试
  9. 从中师到博士,我用了22年...
  10. oracle中dbms_DBMS中的功能依赖性和属性关闭
  11. 【实战】Spring生成beanName冲突的解决之道:附源码分析
  12. 两个日期之间相差的天数
  13. 19【推荐系统11】FM与深度学习模型的结合
  14. linux vi 底行命令,Linux下vi命令详解
  15. HTML自动弹出窗口代码
  16. matplotlib画箱线图,添加非参数检验-秩和检验的结果
  17. android+发短信示例,【Android】如何实现Android发送短信(示例代码)
  18. 陶大程招收博士计算机视觉,回顾优必选AI首席科学家陶大程博士获IEEE ICDM研究贡献奖的相关事件...
  19. DOS下常用网络命令技巧
  20. js 校验手机号码格式

热门文章

  1. PHP对接阿里云虚拟号-号码隐私保护
  2. 3维旋转矩阵推导与助记
  3. Basler相机内参标定及Basler相机和Livox-avia激光雷达联合标定
  4. 公众号文章里使用svg进行交互
  5. 商品交易之---撮合系统架构探讨
  6. java —— 不高兴的津津
  7. 使用andorid studio获取经纬度信息
  8. http和httpsd的区别
  9. 2022年江南大学851真题
  10. Android图片加载框架最全解析(三),深入探究Glide的缓存机制