首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于CFD风场分析的双变量Pandas数据帧插值

用于CFD风场分析的双变量Pandas数据帧插值
EN

Stack Overflow用户
提问于 2014-07-13 13:07:29
回答 1查看 766关注 0票数 0

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

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

代码语言:javascript
复制
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的数量级。

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

我想我需要使用groupby函数,但是想不出使用两个变量的方法。

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

EN

回答 1

Stack Overflow用户

发布于 2014-07-13 20:40:12

如果您想查看以两个变量为条件的分布特性,可以按如下方式进行操作

代码语言:javascript
复制
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维度。我通常不会这样做,所以你只剩下时间,这给了你一个时间序列,而不是一个面板。

此外,pandas的面板包过去缺乏许多标准数据帧存在的功能。我相信最近有一些恢复,但我不知道太多,因为我并没有真正使用它。当然,其他人也可以加入进来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24719730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档