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) 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中參數(shù)用法:
當(dāng)設(shè)置 header=None 時,則認為csv文件沒有列索引,為其添加相應(yīng)范圍的索引,range(1,1200)指建立索引號從1開始最大到1199的列索引,當(dāng)數(shù)據(jù)長度超過范圍時,索引沿列數(shù)據(jù)的右側(cè)對齊。
obj=pd.read_csv('testdata.csv',header=0,names=range(1,4))
當(dāng)設(shè)置 header=0 時,則認為csv文件數(shù)據(jù)第一行是列索引,將用新的列索引替換舊的列索引。
obj=pd.read_csv('testdata.csv',index_col=0,usecols=[1,2,3])
當(dāng)設(shè)置 index_col=0 時,則是csv文件數(shù)據(jù)的指定數(shù)據(jù)中的第一列是行索引,usecols指選中數(shù)據(jù)的對應(yīng)列數(shù),[1,2,3]指第2列到第4列。
obj=pd.read_csv('testdata.csv',index_col=0,usecols=5)
用usecols選擇前n行數(shù)據(jù)進行后續(xù)處理,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)
用法代碼演示
上面我們介紹了滑動窗口的概念及實現(xiàn)函數(shù)的參數(shù),下面我們通過代碼演示,依次展示各參數(shù)的作用。
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)
加入rolling使用時間窗后及具體原理
ser_data.rolling(3).mean()
min_periods用法
如上圖所示,當(dāng)窗口開始滑動時,第一個時間點和第二個時間點的時間為空,這是因為這里窗口長度為3,他們前面的數(shù)都不夠3,所以到2019-01-18時,他的數(shù)據(jù)就是2019-01-16到2019-01-18三天的均值。那么有人就會這樣想,在計算2019-01-16序列的窗口數(shù)據(jù)時,雖然不夠窗口長度3,但是至少有當(dāng)天的數(shù)據(jù),那么能否就用當(dāng)天的數(shù)據(jù)代表窗口數(shù)據(jù)呢?答案是肯定的,這里我們可以通過min_periods參數(shù)控制,表示窗口最少包含的觀測值,小于這個值的窗口長度顯示為空,等于和大于時有值,如下所示:
表示窗口最少包含的觀測值為1
ser_data.rolling(3,min_periods=1).mean()
expanding用法
征用前面全部的數(shù)據(jù)
代碼詳解
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))
輸出結(jié)果
expanding可去除NaN值
以上這篇pandas中read_csv、rolling、expanding用法詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何使用Django默認的Auth權(quán)限管理系統(tǒng)
本文主要介紹了如何使用Django默認的Auth權(quán)限管理系統(tǒng),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02零基礎(chǔ)學(xué)Python(一)Python環(huán)境安裝
本文是此系列的第一篇,所以開始先胡扯一番,然后再分別介紹LINUX系統(tǒng),windows系統(tǒng),MAC系統(tǒng)下如何安裝Python環(huán)境,希望對大家有所幫助2014-08-08Python學(xué)習(xí)筆記之列表推導(dǎo)式實例分析
這篇文章主要介紹了Python學(xué)習(xí)筆記之列表推導(dǎo)式,結(jié)合實例形式分析Python列表推導(dǎo)式的原理、寫法與相關(guān)使用技巧,需要的朋友可以參考下2019-08-08關(guān)于Python3 類方法、靜態(tài)方法新解
今天小編就為大家分享一篇關(guān)于Python3 類方法、靜態(tài)方法新解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08Yolov5(v5.0)+pyqt5界面設(shè)計圖文教程
眾所周知界面設(shè)計一般指UI設(shè)計,下面這篇文章主要給大家介紹了關(guān)于Yolov5(v5.0)+pyqt5界面設(shè)計的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細,需要的朋友可以參考下2023-04-04python 將list轉(zhuǎn)成字符串,中間用符號分隔的方法
今天小編就為大家分享一篇python 將list轉(zhuǎn)成字符串,中間用符號分隔的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10selenium中g(shù)et_cookies()和add_cookie()的用法詳解
這篇文章主要介紹了selenium中g(shù)et_cookies()和add_cookie()的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01