pandas移動視窗計算脈動

2021-07-04 07:10:35 字數 2415 閱讀 8428

import os

import pandas as pd

import numpy as np

#每個檔案只取前三行後生成的maidong_files

root = 'd:/maidong_files'

all_u = pd.dataframe()

all_v = pd.dataframe()

all_chuizhi = pd.dataframe()

all_time =

#定義計算函式,用到陣列的元素級別計算

defcaluv

(jiaodu,sudu):

u = (-1) * np.sin( float(jiaodu) * np.pi / 180) * float(sudu)

v = (-1) * np.cos( float(jiaodu) * np.pi / 180) * float(sudu)

return

'%.2f' % u,'%.2f' % v

#return u,v

for every_file in os.listdir(root):

#每個檔案取一列

df_jiaodu=pd.read_csv(os.path.join(root,every_file),sep=',').iloc[:,2].replace('/',np.nan)

array_jiaodu =df_jiaodu.values

df_sudu=pd.read_csv(os.path.join(root,every_file),sep=',').iloc[:,3].replace('/',np.nan)

array_sudu = df_sudu.values

df_chuizhi=pd.read_csv(os.path.join(root,every_file),sep=',').iloc[:,4].replace('/',np.nan)

caluv_ufunc = np.frompyfunc(caluv, 2, 2)

[u, v] = caluv_ufunc(array_jiaodu,array_sudu)

#print u.dtype注意uv的型別為object

#轉換uv型別為float

u = u.astype(np.float)

v = v.astype(np.float)

#矩陣重新轉為dataframe

udf = pd.dataframe(u)

vdf = pd.dataframe(v)

#解析檔名中所包含的日期並轉換為datatime格式

time_index = pd.to_datetime(every_file.split('_')[4])

#把time作為index

all_u.index = all_time

all_v.index = all_time

all_chuizhi.index = all_time

#生成日期範圍

rng = pd.date_range(start = '20130628000000', end = '20130630010000', freq='5min')

#reindex從而實現日期範圍內未有的部分全部插空值

all_time_u = all_u.reindex(rng)

all_time_v = all_v.reindex(rng)

all_time_chuizhi = all_chuizhi.reindex(rng)

all_time_u.to_csv('all_time_u.txt')

all_time_v.to_csv('all_time_v.txt')

all_time_chuizhi.to_csv('all_time_chuizhi.txt')

defcal_maidong

(df):

maidong = df - pd.rolling_mean(df,window=12,center=6,min_periods=1)

return maidong

u_maidong = cal_maidong(all_time_u)

v_maidong = cal_maidong(all_time_v)

chuizhi_maidong = cal_maidong(all_time_chuizhi)

u_maidong['20130628000000':'20130630000000'].to_csv('c:/u_maidong.txt')

v_maidong['20130628000000':'20130630000000'].to_csv('c:/v_maidong.txt')

chuizhi_maidong['20130628000000':'20130630000000'].to_csv('c:/chuizhi_maidong.txt')

pandas 移動視窗rolling的概念

為了提公升資料的準確性,將某個點的取值擴大到包含這個點的一段區間,用區間來進行判斷,這個區間就是視窗。移動視窗就是視窗向一端滑行,預設是從右往左,每次滑行並不是區間整塊的滑行,而是乙個單位乙個單位的滑行。給個例子好理解一點 import pandas as pd s 1,2,3,5,6,10,12,...

pandas視窗函式

rolling函式固定視窗大小,滾動計算,每次滾動1格 先隨機建立乙個資料集,有4列,10行 計算3天的平均值,第三個元素的值將是n,n 1和n 2元素的平均值。window 表示時間窗的大小,有兩種形式 1 使用數值int,則表示觀測值的數量,即向前幾個資料 2 也可以使用offset型別,這種型...

fragstats移動視窗

在使用fragstats製作移窗圖時,移窗大小的選取是一件令人困擾的事情。下面我就談一談移窗及其大小的選取,如有錯漏,歡迎指正。首先,先來了解一下移窗的工作機制。設定視窗大小,勾選所要計算的景觀指數,執行程式啟動後,視窗會從影象左上角開始從左向右乙個像元乙個像元的移動,移動過程中視窗範圍內的景觀指數...