欢迎光临散文网 会员登陆 & 注册

Dynamo数据淘金——05//利用pandas显示数据

2023-02-02 20:45 作者:非天生建筑师  | 我要投稿

上一节中,利用dynamo获取房间的数据是以列表(list)的形式显示的,而在没有导出到Excel之前,无法查看其”表格”形式,很难对这些数据进行”清洗”整理,只能导出Excel后再检查数据,不是很方便.本节将在python script节点中,利用pandas显示数据,如此便可以在dynamo中直接查看数据的”表格”形式,及时对其修改(后续).

python script节点是Python语言的节点,可以通过python编程实现特定目的.而pandas是python的第三方库,可以把数据以”表格”的形式呈现并对其清理.对于python语言以及pandas的使用,大家自行学习,大家直接复制我提供的代码即可.

(1)   先打开revit自带的案例文件(rac_basic_sample_projecr.rvt))

(2)打开上一节dynamo文件,建立Python Script节点

(3)上一节的data数据接入该节点,并把dynamo下面窗口向上拖动.

(4)双击该节点,进入编辑界面.

(5) 把代码复制进去.

代码如下:

# 加载 Python Standard 和 DesignScript 库
import sys
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
#引入库并设置格式(路径修改成自己电脑路径!!!)
sys.path.append(r'C:\Users\p220101\AppData\Local\Programs\Python\Python38\Lib\site-packages')
import pandas as pd
import numpy as np 


#对齐显示.
pd.set_option('display.unicode.ambiguous_as_wide',True)
pd.set_option('display.unicode.east_asian_width',True)
#显示所有行与列.且不换行显示
pd.set_option('display.max_columns',None)
pd.set_option('display.max_rows',None)
pd.set_option('display.width',1000)
# 该节点的输入内容将存储为 IN 变量中的一个列表。
dataEnteringNode = IN
#将data创建为Series或DataFrame(不指定index与columns)以便显示.
data = IN[0]
df = pd.DataFrame(data)
df.replace(r'^\s*$',value=np.nan,regex=True,inplace=True)#将空字符串替换为空值,以便检测
print(f'\n{df}')

#将DataFrame数据重新转换为列表并输出
tmp_data =np.array(df)
tmp_list =tmp_data.tolist()
# 将输出内容指定给 OUT 变量。
OUT = tmp_list

 复制代码的时候一定要把下面路径改成自己电脑路径(如果不会找,请参照第一节(01升级配置dynamo))

要想完全使用该节点,请一定保证已经按照第一节(01升级配置dynamo)的提示对dynamo进行了升级,否则会报错的!!!升级后的节点就可以使用print()方法了.

代码的含义已经加了注释,就是把输入端的列表数据转为DataFrame(数据帧),然后使用print()方法显示,最后再将该数据转为原始的列表数据结构.

这么做的目的,一是为了显示用”表格”形式显示数据,二是如果对数据进行修改,修改后的数据仍能被dynamo使用.

(6) 保存后运行.数据以”表格”形式显示.如果不满足要求则可以用pandas进行数据清洗(后续)

OK,有了这个节点,以后可以对数据进行直观显示了,还可以根据需要对数据进行编辑.其实这点是很有必要的,尤其是在处理大量数据时.

没看懂也没关系,你就照葫芦画瓢,知道有这回事儿就行,这也是熟悉Dynamo的可取方式嘛.


Dynamo数据淘金——05//利用pandas显示数据的评论 (共 条)

分享到微博请遵守国家法律