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 相关文章推荐
pymssql ntext字段调用问题解决方法
Dec 17 Python
简单理解Python中基于生成器的状态机
Apr 13 Python
Python lxml模块安装教程
Jun 02 Python
python基础教程之Filter使用方法
Jan 17 Python
Python探索之静态方法和类方法的区别详解
Oct 27 Python
python 列表降维的实例讲解
Jun 28 Python
Python访问MongoDB,并且转换成Dataframe的方法
Oct 15 Python
Python使用统计函数绘制简单图形实例代码
May 15 Python
20行Python代码实现视频字符化功能
Apr 13 Python
Python3.7下安装pyqt5的方法步骤(图文)
May 12 Python
Django表单提交后实现获取相同name的不同value值
May 14 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 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面向对象编程快速入门
2006/12/14 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
PHP实现的策略模式示例
2019/03/20 PHP
Laravel 5+ .env环境配置文件详解
2020/04/06 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
(function(){})()的用法与优点
2007/03/11 Javascript
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
用js的document.write输出的广告无阻塞加载的方法
2014/06/05 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
js将滚动条滚动到指定位置的简单实现方法
2016/06/25 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
Vue实现选择城市功能
2017/05/27 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
python基础教程之类class定义使用方法
2014/02/20 Python
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
python组合无重复三位数的实例
2018/11/13 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
简单了解python代码优化小技巧
2019/07/08 Python
用Python写一个自动木马程序
2019/09/17 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
蔻驰法国官网:COACH法国
2018/11/14 全球购物
《夜晚的实验》教学反思
2014/02/19 职场文书
六五普法规划实施方案
2014/03/21 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
留学生求职信
2014/06/03 职场文书
诚信考试标语
2014/06/24 职场文书
新农村建设汇报材料
2014/08/15 职场文书