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抓取模板之家的CSS模板
Mar 16 Python
Python处理JSON数据并生成条形图
Aug 05 Python
基于python list对象中嵌套元组使用sort时的排序方法
Apr 18 Python
python 制作自定义包并安装到系统目录的方法
Oct 27 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
django foreignkey外键使用的例子 相当于left join
Aug 06 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
django实现支付宝支付实例讲解
Oct 17 Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 Python
解决导入django_filters不成功问题No module named 'django_filter'
Jul 15 Python
Python os库常用操作代码汇总
Nov 03 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脚本的10个技巧(6)
2006/10/09 PHP
批量修改RAR文件注释的php代码
2010/11/20 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
thinkphp跨库操作的简单代码实例
2016/09/22 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
使用jquery prev()方法找到同级的前一个元素
2014/07/11 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
JavaScript模拟push
2016/03/06 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
Linux下将Python的Django项目部署到Apache服务器
2015/12/24 Python
使用python实现rsa算法代码
2016/02/17 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
Django 返回json数据的实现示例
2020/03/05 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
医学类导师推荐信范文
2013/11/19 职场文书
工作分析计划书
2014/04/30 职场文书
英语三分钟演讲稿
2014/08/19 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
周一问候语大全
2015/11/10 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers