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中引數用法:
當設定 header=None 時,則認為csv檔案沒有列索引,為其新增相應範圍的索引,range(1,1200)指建立索引號從1開始最大到1199的列索引,當資料長度超過範圍時,索引沿列資料的右側對齊。
obj=pd.read_csv('testdata.csv',names=range(1,4))
當設定 header=0 時,則認為csv檔案資料第一行是列索引,將用新的列索引替換舊的列索引。
obj=pd.read_csv('testdata.csv',usecols=[1,2,3])
當設定 index_col=0 時,則是csv檔案資料的指定資料中的第一列是行索引,usecols指選中資料的對應列數,[1,3]指第2列到第4列。
obj=pd.read_csv('testdata.csv',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,**kwargs) @Substitution(name="groupby") @Appender(_common_see_also)
用法程式碼演示
上面我們介紹了滑動視窗的概念及實現函式的引數,下面我們通過程式碼演示,依次展示各引數的作用。
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,7,13,6] ser_data=pd.Series(data,index=index) print(ser_data)
加入rolling使用時間窗後及具體原理
ser_data.rolling(3).mean()
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()
expanding用法
徵用前面全部的資料
程式碼詳解
import pandas as pd from pandas import DataFrame series = pd.read_csv('daily-min-temperatures.csv',squeeze=True) temps = DataFrame(series.values) window = temps.expanding() dataframe = DataFrame() dataframe = pd.concat([window.min(),temps.shift(-1)],'t+1'] print(dataframe.head(5))
輸出結果
expanding可去除NaN值
以上這篇pandas中read_csv、rolling、expanding用法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。