两个变量的Pandas数据帧插值用于CFD风分析

时间:2014-07-13 05:07:29

标签: python pandas group-by interpolation resampling

我正在为新开发项目进行风力分析。我将能够预测一年中每个小时的开发中的气流模式,作为该特定小时的风速和风向的函数。当然,运行8760风CFD模拟需要花费太多时间。我的方法是仅运行16次模拟(8个风向和2个风速)并从这些结果中插入流量分布。

为了让您了解数据的外观,我已经创建了一个简化的案例。

X = pd.Series([1,2,3,4,5])
Y = pd.Series([1,2,3,4,5])
Z = pd.Series([1,2,3,4,5])
v1 = pd.Series([2,6,1,7,8])
df1 = pd.DataFrame({'X':X,'Y':Y,'Z':Z,'v':v1})
df1['ws']=3
df1['wd']=180
v2 = pd.Series([3,1,4,2,2])
df2 = pd.DataFrame({'X':X,'Y':Y,'Z':Z,'v':v2})
df2['ws']=3
df2['wd']=0
v3 = pd.Series([2.5,2.3,1.3,7.2,1.4])
df3 = pd.DataFrame({'X':X,'Y':Y,'Z':Z,'v':v3})
df3['ws']=6
df3['wd']=180
v4 = pd.Series([2.4,5.6,6.1,2.3])
df4 = pd.DataFrame({'X':X,'Y':Y,'Z':Z,'v':v4})
df4['ws']=6
df4['wd']=0
df=pd.concat([df1,df2,df3,df4])

请注意,最后两列包含该特定模拟的气象风速和方向。点(X,Y,Z)可以是100,000。

现在假设我希望流量分布(X,Y,Z,v)为风速(ws)和风向(wd)的中间值。我希望能够聚合数据并获得每个点(X,Y,Z)的速度场(v)的线性插值 把它放在一个公式中:(X,Y,Z)= f(data,ws,wd)

我想我需要使用groupby函数,但无法找到使用两个变量的方法。

另外,您认为数据面板对于此类数据的数据结构是否更充分?

1 个答案:

答案 0 :(得分:0)

如果要查看以两个变量为条件的分布特征,可以按

继续
In[10]: df.groupby(['ws', 'wd']).apply(lambda x: x.mean())
Out[10]: 
        X  Y  Z     v  ws   wd
ws wd                         
3  0    3  3  3  2.40   3    0
   180  3  3  3  4.80   3  180
6  0    3  3  3  4.10   6    0
   180  3  3  3  2.94   6  180

关于面板数据,它通常是一个品味问题,对吧?您是否考虑要概括的X,Y,Z尺寸。我通常不会这样做,所以你只留下时间,这给你一个时间序列而不是一个小组。

此外,熊猫'面板包过去缺少标准数据帧的许多功能。我相信最近有一些恢复,但我不知道,因为我并没有真正使用它。肯定有人可以在这里筹码。