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的ORM框架SQLAlchemy入门教程
Apr 28 Python
Python类的多重继承问题深入分析
Nov 09 Python
python 写的一个爬虫程序源码
Feb 28 Python
python3使用PyMysql连接mysql数据库实例
Feb 07 Python
Python实现合并两个列表的方法分析
May 28 Python
python实现批量解析邮件并下载附件
Jun 19 Python
pycharm远程开发项目的实现步骤
Jan 20 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
Python爬取视频(其实是一篇福利)过程解析
Aug 01 Python
MAC平台基于Python Appium环境搭建过程图解
Aug 13 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 Python
Python中异常处理用法
Nov 27 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
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
PHP基于yii框架实现生成ICO图标
2015/11/13 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
javascript实现循环广告条效果
2017/12/12 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
Python利用前序和中序遍历结果重建二叉树的方法
2016/04/27 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
wxPython实现窗口用图片做背景
2018/04/25 Python
Python使用pymysql从MySQL数据库中读出数据的方法
2018/07/25 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
python使用 cx_Oracle 模块进行查询操作示例
2019/11/28 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
css3设置box-pack和box-align让div里面的元素垂直居中
2014/09/01 HTML / CSS
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
企业后勤岗位职责
2014/02/28 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
2014年财务科工作总结
2014/11/11 职场文书
思想政治表现评语
2015/01/04 职场文书
电影建国大业观后感
2015/06/01 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
SpringBoot整合RabbitMQ的5种模式实战
2021/08/02 Java/Android