python使用pandas实现数据分割实例代码


Posted in Python onJanuary 25, 2018

本文研究的主要是Python编程通过pandas将数据分割成时间跨度相等的数据块的相关内容,具体如下。

先上数据,有如下dataframe格式的数据,列名分别为date、ip,我需要统计每5s内出现的ip,以及这些ip出现的频数。

ip   date
0 127.0.0.21 15/Jul/2017:18:22:16
1 127.0.0.13 15/Jul/2017:18:22:16
2 127.0.0.11 15/Jul/2017:18:22:17
3 127.0.0.11 15/Jul/2017:18:22:20
4 127.0.0.21 15/Jul/2017:18:22:21
5 127.0.0.13 15/Jul/2017:18:22:22
6 127.0.0.14 15/Jul/2017:18:26:36
7 127.0.0.16 15/Jul/2017:18:32:15
8 127.0.0.11 15/Jul/2017:18:36:03

在网上找了很久但是没看到python的相关答案,但在stackoverflow找到了R语言的解法,有兴趣可以看看。

受它的启发,我用不太优雅的方式实现了我的需求,有更好解决方法的请不吝赐教:

step1: 将数据中日期格式变为标准格式

#date_ip为我的dataframe数据
date_ip['date'] = pd.to_datetime(date_ip['date'], format='%d/%b/%Y:%H:%M:%S')

step2: 将数据的开始时间、结束时间,按5s分割(由于时间段可能不是恰好是5s的倍数,为避免最后一个时间丢失,因此在最后加上5s)

frequency = 5
time_range = pd.date_range(date_ip['date'][0],
    date_ip['date'][date_ip.shape[0]-1]
    +frequency*Second(), freq='%sS'%frequency)

step3: 将date变为索引

date_ip = date_ip.set_index('date')

step4: 对每个时间段内的数据进行频数计算(由于通过标签切片时会包含头、尾数据,为避免重复计算,因此在尾部减1s)

for i in xrange(0,len(time_range)-1):
 print get_frequency(date_ip.loc[time_range[i]:time_range[i+1]-1*Second()])

完整的代码

import pandas as pd
from pandas.tseries.offsets import Second
def get_frequency(date_ip):
 ip_frequency = {}
 for i in xrange(0,date_ip.shape[0]):
 ip_frequency[date_ip['ip'][i]] = ip_frequency.get(date_ip['ip'][i], 0) + 1
 return ip_frequency,date_ip.shape[0]

if __name__ == '__main__': 
 date_ip['date'] = pd.to_datetime(date_ip['date'], format='%d/%b/%Y:%H:%M:%S')

 frequency = 5
 time_range = pd.date_range(date_ip['date'][0], date_ip['date'][date_ip.shape[0]-1]
    +frequency*Second(), freq='%sS'%frequency) 
 date_ip = date_ip.set_index('date')
 for i in xrange(0, len(time_range) - 1):
 print get_frequency(date_ip.loc[time_range[i]:time_range[i + 1]-1*Second()])

文章开头数据运行结果:

({'127.0.0.21' : 1, '127.0.0.13' : 1, '127.0.0.11' : 2}, 4)
({'127.0.0.21': 1, '127.0.0.13': 1}, 2)
({'127.0.0.14': 1}, 1)
({'127.0.0.16': 1}, 1)
({'127.0.0.11': 1}, 1)

总结

以上就是本文关于python使用pandas实现数据分割实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python使用Socket(Https)Post登录百度的实现代码
May 18 Python
跟老齐学Python之list和str比较
Sep 20 Python
Python多线程编程(五):死锁的形成
Apr 05 Python
玩转python爬虫之爬取糗事百科段子
Feb 17 Python
Python自动发邮件脚本
Mar 31 Python
浅谈Python反射 & 单例模式
Mar 21 Python
Django模板Templates使用方法详解
Jul 19 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
Mar 08 Python
详解Python中pyautogui库的最全使用方法
Apr 01 Python
python实现文字版扫雷
Apr 24 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
Mar 03 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 Python
python实现闹钟定时播放音乐功能
Jan 25 #Python
python实现壁纸批量下载代码实例
Jan 25 #Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
Jan 24 #Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 #Python
python中的set实现不重复的排序原理
Jan 24 #Python
详解Python之unittest单元测试代码
Jan 24 #Python
python爬取拉勾网职位数据的方法
Jan 24 #Python
You might like
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
JSON格式的键盘编码对照表
2015/01/29 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
python实现红包裂变算法
2016/02/16 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
python 字符串追加实例
2019/07/20 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
python实现猜拳小游戏
2020/04/05 Python
Lee牛仔裤澳大利亚官网:美国著名牛仔裤品牌
2017/09/02 全球购物
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
2014年教师节寄语
2014/08/11 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
法定代表人授权委托书
2014/09/19 职场文书
建筑工地文明标语
2014/10/09 职场文书
永不妥协观后感
2015/06/10 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
Nginx实现负载均衡的项目实践
2022/03/18 Servers