Python自动化办公实战,上万数据中统计断网次数并计算平均断网时间
文章目录
- 一、需求
- 二、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列里内容的长度,找断网前最后一个日志和通网后的第一个日志的基本思路如下:
- 第 i 行 content列里字符串长度大于50,i+1 行content列里字符串长度小于45,这个第 i 行则为断网前的最后一个日志。
- 第 i 行 content列里字符串长度小于45,i+1 行content列里字符串长度大于50,这个第 i+1 行则为通网后的第一个日志。
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自动化办公实战,上万数据中统计断网次数并计算平均断网时间相关推荐
- 盘点一个Python自动化办公实战案例
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 阳和不散穷途恨,霄汉长怀捧日心. ...
- Python自动化办公:读取Excel数据并批量生成合同,高效办公,快速回家
前言 在我们的工作中,面临着大量的重复性工作,通过人工方式处理往往耗时耗力易出错.而Python在自动化办公方面具有极大的优 势,可以解决我们工作中遇到的很多重复性问题,分分钟搞定办公需求.快速下班回 ...
- python自动化办公实战案例,python 自动化办公 案例
推荐几个适合新手练手的Python项目 谷歌人工智能写作项目:小发猫 python编程:输入一个自然数n,如果n为奇数,输出表达式1+1/3+-+1/n的值 def summ(n): if n%2: ...
- python自动化办公 百度网盘-Python自动化办公实战教程2020最新带源码
资源目录: 视频 001_Excel_xlrd读_xlwt写.mp4 003_Excel_案例_统计每位同学总分.mp4 004_MySQL_我为什么不建议学.mp4 005_Excel_更灵活的操作 ...
- python自动化办公入门书籍-Python自动化办公实战教程2020最新带源码
资源目录: 视频 001_Excel_xlrd读_xlwt写.mp4 003_Excel_案例_统计每位同学总分.mp4 004_MySQL_我为什么不建议学.mp4 005_Excel_更灵活的操作 ...
- Python 自动化办公-玩转 Word
只要是简单重复的工作,就想办法用 Python 来帮你解决吧,人生苦短,你需要 Python. Word 是办公软件中使用频率非常高的软件之一了,假如你需要调整 100 个 Word 文档的格式保持统 ...
- 【哈士奇赠书活动 - 25期】-〖Python自动化办公应用大全(ChatGPT版) 〗
文章目录 ⭐️ 赠书 - <Python自动化办公应用大全(ChatGPT版)> ⭐️ 内容简介 ⭐️ 作者简介 ⭐️ 编辑推荐 ⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书 - <Py ...
- python处理Excel实现自动化办公教学(数据筛选、公式操作、单元格拆分合并、冻结窗口、图表绘制等)【三】
相关文章: python处理Excel实现自动化办公教学(含实战)[一] python处理Excel实现自动化办公教学(含实战)[二] python处理Excel实现自动化办公教学(数据筛选.公式操作 ...
- python自动化办公之爬取HTML图片写入PPT实战
python自动化办公之批量图片导入PPT 昨天,大Boss找到一个网页,觉得里面的图片内容特别好,想把它下载下来作为学习资料,整理整理教导下属.但是,手动一张一张的保存图片太慢了,问我可不可以下载下 ...
最新文章
- Python 四大基本语法
- 转:iFire:玩聚 SRBacks 自定义脚本及样式表
- js tool 方法之删除数组指定项
- Nacos配置中心-如何使用Nacos作为配置中心统一管理配置
- window.navigator.userAgent用来区分设备和浏览器
- Ant远程部署到Tomcat
- 为WPF, UWP 及 Xamarin实现一个简单的消息组件
- Spring应用程序与JNDI连接池的集成测试
- 从中师到博士,我用了22年...
- oracle中dbms_DBMS中的功能依赖性和属性关闭
- 【实战】Spring生成beanName冲突的解决之道:附源码分析
- 两个日期之间相差的天数
- 19【推荐系统11】FM与深度学习模型的结合
- linux vi 底行命令,Linux下vi命令详解
- HTML自动弹出窗口代码
- matplotlib画箱线图,添加非参数检验-秩和检验的结果
- android+发短信示例,【Android】如何实现Android发送短信(示例代码)
- 陶大程招收博士计算机视觉,回顾优必选AI首席科学家陶大程博士获IEEE ICDM研究贡献奖的相关事件...
- DOS下常用网络命令技巧
- js 校验手机号码格式