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ù)用法:
當設置 header=None 時,則認為csv文件沒有列索引,為其添加相應范圍的索引,range(1,1200)指建立索引號從1開始最大到1199的列索引,當數(shù)據(jù)長度超過范圍時,索引沿列數(shù)據(jù)的右側(cè)對齊。
obj=pd.read_csv('testdata.csv',header=0,names=range(1,4))
當設置 header=0 時,則認為csv文件數(shù)據(jù)第一行是列索引,將用新的列索引替換舊的列索引。
obj=pd.read_csv('testdata.csv',index_col=0,usecols=[1,2,3])
當設置 index_col=0 時,則是csv文件數(shù)據(jù)的指定數(shù)據(jù)中的第一列是行索引,usecols指選中數(shù)據(jù)的對應列數(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用法
如上圖所示,當窗口開始滑動時,第一個時間點和第二個時間點的時間為空,這是因為這里窗口長度為3,他們前面的數(shù)都不夠3,所以到2019-01-18時,他的數(shù)據(jù)就是2019-01-16到2019-01-18三天的均值。那么有人就會這樣想,在計算2019-01-16序列的窗口數(shù)據(jù)時,雖然不夠窗口長度3,但是至少有當天的數(shù)據(jù),那么能否就用當天的數(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)文章
詳解python如何提取瀏覽器中保存的網(wǎng)站登錄用戶名密碼
很多瀏覽器都貼心地提供了保存用戶密碼功能,用戶一旦開啟,就不需要每次都輸入用戶名、密碼,非常方便,作為python腳本,能否拿到用戶提前保存在瀏覽器中的用戶名密碼,用以自動登錄呢,下面我們就來看看吧2023-08-08
使用python爬取taptap網(wǎng)站游戲截圖的步驟
這篇文章主要介紹了使用python爬取taptap游戲截圖的步驟,幫助大家更好的理解和學習使用python進行爬蟲,感興趣的朋友可以了解下2021-05-05
django框架使用orm實現(xiàn)批量更新數(shù)據(jù)的方法
這篇文章主要介紹了django框架使用orm實現(xiàn)批量更新數(shù)據(jù)的方法,結(jié)合實例形式簡單分析了Django基于orm操作數(shù)據(jù)庫更新數(shù)據(jù)的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2019-06-06

