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