1. 程式人生 > 程式設計 >pandas中read_csv、rolling、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)
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)

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,7,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',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))

輸出結果

pandas中read_csv、rolling、expanding用法詳解

expanding可去除NaN值

以上這篇pandas中read_csv、rolling、expanding用法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。