pandas中read_csv、rolling、expanding用法详解


Posted in Python onApril 21, 2020

如下所示:

import pandas as pd
from pandas import DataFrame

series = pd.read_csv('daily-min-temperatures.csv',header=0, index_col=0,
      parse_dates=True,squeeze=True)
temps = DataFrame(series.values)
width = 3
shifted = temps.shift(width-1)
print(shifted)
window = shifted.rolling(window=width)
dataframe = DataFrame()
dataframe = pd.concat([window.min(),window.mean(),window.max(),temps],axis=1)
dataframe.columns=['min','mean','max','t+1']
print(dataframe.head(5))

read_csv中参数用法:

当设置 header=None 时,则认为csv文件没有列索引,为其添加相应范围的索引,range(1,1200)指建立索引号从1开始最大到1199的列索引,当数据长度超过范围时,索引沿列数据的右侧对齐。

obj=pd.read_csv('testdata.csv',header=0,names=range(1,4))

当设置 header=0 时,则认为csv文件数据第一行是列索引,将用新的列索引替换旧的列索引。

obj=pd.read_csv('testdata.csv',index_col=0,usecols=[1,2,3])

当设置 index_col=0 时,则是csv文件数据的指定数据中的第一列是行索引,usecols指选中数据的对应列数,[1,2,3]指第2列到第4列。

obj=pd.read_csv('testdata.csv',index_col=0,usecols=5)

用usecols选择前n行数据进行后续处理,n为正整型。

rolling用法:

源代码

def rolling(self, *args, **kwargs):
  """
  Return a rolling grouper, providing rolling functionality per group.
  """
  from pandas.core.window import RollingGroupby

  return RollingGroupby(self, *args, **kwargs)

 @Substitution(name="groupby")
 @Appender(_common_see_also)

pandas中read_csv、rolling、expanding用法详解

用法代码演示

上面我们介绍了滑动窗口的概念及实现函数的参数,下面我们通过代码演示,依次展示各参数的作用。

import matplotlib.pylab as plt
import numpy as np
import pandas as pd
index=pd.date_range('20190116','20190130')
data=[4,8,6,5,9,1,4,5,2,4,6,7,9,13,6]
ser_data=pd.Series(data,index=index)
print(ser_data)

pandas中read_csv、rolling、expanding用法详解

加入rolling使用时间窗后及具体原理

ser_data.rolling(3).mean()

pandas中read_csv、rolling、expanding用法详解

min_periods用法

如上图所示,当窗口开始滑动时,第一个时间点和第二个时间点的时间为空,这是因为这里窗口长度为3,他们前面的数都不够3,所以到2019-01-18时,他的数据就是2019-01-16到2019-01-18三天的均值。那么有人就会这样想,在计算2019-01-16序列的窗口数据时,虽然不够窗口长度3,但是至少有当天的数据,那么能否就用当天的数据代表窗口数据呢?答案是肯定的,这里我们可以通过min_periods参数控制,表示窗口最少包含的观测值,小于这个值的窗口长度显示为空,等于和大于时有值,如下所示:

表示窗口最少包含的观测值为1

ser_data.rolling(3,min_periods=1).mean()

pandas中read_csv、rolling、expanding用法详解

expanding用法

征用前面全部的数据

pandas中read_csv、rolling、expanding用法详解

代码详解

import pandas as pd
from pandas import DataFrame

series = pd.read_csv('daily-min-temperatures.csv',header=0, index_col=0,
      parse_dates=True,squeeze=True)
temps = DataFrame(series.values)
window = temps.expanding()
dataframe = DataFrame()
dataframe = pd.concat([window.min(),window.mean(),window.max(),temps.shift(-1)],axis=1)
dataframe.columns=['min','mean','max','t+1']
print(dataframe.head(5))

输出结果

pandas中read_csv、rolling、expanding用法详解

expanding可去除NaN值

以上这篇pandas中read_csv、rolling、expanding用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
redis之django-redis的简单缓存使用
Jun 07 Python
Django中使用第三方登录的示例代码
Aug 20 Python
对python实时得到鼠标位置的示例讲解
Oct 14 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
python里运用私有属性和方法总结
Jul 08 Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 Python
Python 调用 Windows API COM 新法
Aug 22 Python
基于python实现学生信息管理系统
Nov 22 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
Jun 06 Python
python爬取网易云音乐热歌榜实例代码
Aug 07 Python
Django如何使用jwt获取用户信息
Apr 21 #Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
Apr 21 #Python
Pandas之read_csv()读取文件跳过报错行的解决
Apr 21 #Python
基于python实现数组格式参数加密计算
Apr 21 #Python
python实现与redis交互操作详解
Apr 21 #Python
Django-migrate报错问题解决方案
Apr 21 #Python
pandas读取csv文件提示不存在的解决方法及原因分析
Apr 21 #Python
You might like
php htmlspecialchars加强版
2010/02/16 PHP
修改PHP的memory_limit限制的方法分享
2012/02/21 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
javascript实现二分查找法实现代码
2007/11/12 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
jquery validate poshytip 自定义样式
2012/11/26 Javascript
script标签属性type与language使用选择
2012/12/02 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
基于python的字节编译详解
2017/09/20 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
解决PyCharm控制台输出乱码的问题
2019/01/16 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
植物选择:Botanic Choice
2017/02/15 全球购物
印度民族服装购物网站:BIBA
2019/08/05 全球购物
老乡聚会通知
2015/04/23 职场文书
《大禹治水》教学反思
2016/02/22 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
Pytorch 如何实现常用正则化
2021/05/27 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
2021/10/16 Python
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫