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开发的nosql数据库CodernityDB介绍和使用实例
Oct 23 Python
python不换行之end=与逗号的意思及用途
Nov 21 Python
PyQt弹出式对话框的常用方法及标准按钮类型
Feb 27 Python
使用Python做垃圾分类的原理及实例代码附源码
Jul 02 Python
Python完成哈夫曼树编码过程及原理详解
Jul 29 Python
numpy中的meshgrid函数的使用
Jul 31 Python
python用quad、dblquad实现一维二维积分的实例详解
Nov 20 Python
python实现信号时域统计特征提取代码
Feb 26 Python
超全Python图像处理讲解(多模块实现)
Apr 13 Python
keras中的History对象用法
Jun 19 Python
基于Python实现粒子滤波效果
Dec 01 Python
完美解决Pycharm中matplotlib画图中文乱码问题
Jan 11 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
php mysql数据库操作分页类
2008/06/04 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
一个基于jquery的图片切换效果
2010/07/06 Javascript
js类型检查实现代码
2010/10/29 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
基于Vue的ajax公共方法(详解)
2018/01/20 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
JavaScript读写二进制数据的方法详解
2018/09/09 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
python分布式环境下的限流器的示例
2017/10/26 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
Python 自由定制表格的实现示例
2020/03/20 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
怎样声明接口
2014/09/19 面试题
新闻学毕业生自荐信
2013/11/15 职场文书
会计专业自荐信
2013/12/02 职场文书
学校消防演习方案
2014/02/19 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技