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实现全局变量的两个解决方法
Jul 03 Python
Python多线程编程(五):死锁的形成
Apr 05 Python
Python实现多线程HTTP下载器示例
Feb 11 Python
Python 文件处理注意事项总结
Apr 10 Python
python微信跳一跳游戏辅助代码解析
Jan 29 Python
Python批量提取PDF文件中文本的脚本
Mar 14 Python
对python中for、if、while的区别与比较方法
Jun 25 Python
Python单元测试unittest的具体使用示例
Dec 17 Python
在python中使用requests 模拟浏览器发送请求数据的方法
Dec 26 Python
超简单使用Python换脸实例
Mar 27 Python
Python提取特定时间段内数据的方法实例
Apr 01 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 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
Windows下的PHP5.0详解
2006/11/18 PHP
小偷PHP+Html+缓存
2006/12/20 PHP
PHP中的extract的作用分析
2008/04/09 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
PHP入门教程之PHP操作MySQL的方法分析
2016/09/11 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
js实现带箭头的进度流程
2020/03/26 Javascript
js数组中去除重复值的几种方法
2020/08/03 Javascript
js实现简单的无缝轮播效果
2020/09/05 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
win10系统中安装scrapy-1.1
2016/07/03 Python
Python常用算法学习基础教程
2017/04/13 Python
python实现人脸识别经典算法(一) 特征脸法
2018/03/13 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
土木工程个人自荐信范文
2013/11/30 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
计算机求职信
2014/07/02 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL