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实现端口转发器的方法
Mar 13 Python
Python实现文件按照日期命名的方法
Jul 09 Python
python 把数据 json格式输出的实例代码
Oct 31 Python
Python 移动光标位置的方法
Jan 20 Python
Django实现简单网页弹出警告代码
Nov 15 Python
Python中常见的数制转换有哪些
May 27 Python
Python可以实现栈的结构吗
May 27 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 Python
Django静态文件加载失败解决方案
Aug 26 Python
Python结合百度语音识别实现实时翻译软件的实现
Jan 18 Python
一文读懂python Scrapy爬虫框架
Feb 24 Python
Python人工智能之混合高斯模型运动目标检测详解分析
Nov 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
第一个无线电台是由谁发明的
2021/03/01 无线电
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
PHP基于yii框架实现生成ICO图标
2015/11/13 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
laravel 执行迁移回滚示例
2019/10/23 PHP
JavaScript toFixed() 方法
2010/04/15 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
pygame实现弹力球及其变速效果
2017/07/03 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
python如何制作英文字典
2019/06/25 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
pytorch 模型可视化的例子
2019/08/17 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
过滤器的用法
2013/10/08 面试题
测绘工程本科生求职信
2013/10/10 职场文书
数控机床专业自荐信
2014/05/19 职场文书
企业承诺书格式
2014/05/21 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
2014最新离职证明范本
2014/09/12 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书