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 ORM框架SQLAlchemy学习笔记之关系映射实例
Jun 10 Python
初步剖析C语言编程中的结构体
Jan 16 Python
Python多进程同步简单实现代码
Apr 27 Python
Python进阶_关于命名空间与作用域(详解)
May 29 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
Jan 04 Python
python中in在list和dict中查找效率的对比分析
May 04 Python
Python实现字典按key或者value进行排序操作示例【sorted】
May 03 Python
python3.7 openpyxl 删除指定一列或者一行的代码
Oct 08 Python
pycharm 实现本地写代码,服务器运行的操作
Jun 08 Python
Pycharm调试程序技巧小结
Aug 08 Python
Python代码注释规范代码实例解析
Aug 14 Python
python 实用工具状态机transitions
Nov 21 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 分页原理详解
2009/08/21 PHP
php 将excel导入mysql
2009/11/09 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
PHP如何使用array_unshift()在数组开头插入元素
2020/09/01 PHP
Javascript核心读书有感之语言核心
2015/02/01 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
javascript文件加载管理简单实现方法
2015/07/25 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
Angularjs为ng-click事件传递参数
2017/06/15 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
通过数据库向Django模型添加字段的示例
2015/07/21 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
PyCharm代码格式调整方法
2018/05/23 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
python3实现弹弹球小游戏
2019/11/25 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
HTML5安全介绍之内容安全策略(CSP)简介
2012/07/10 HTML / CSS
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
JACK & JONES英国官方网站:欧洲领先的男装生产商
2017/09/27 全球购物
CHARLES & KEITH英国官网:新加坡时尚品牌
2018/07/04 全球购物
英国排名第一的停车场运营商:NCP
2019/08/26 全球购物
文秘大学生求职信
2014/02/25 职场文书
水电站项目建议书
2014/05/12 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
革命电影观后感
2015/06/18 职场文书
2016教师国培研修感言
2015/12/08 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书