Dynamo數(shù)據(jù)淘金——05//利用pandas顯示數(shù)據(jù)

上一節(jié)中,利用dynamo獲取房間的數(shù)據(jù)是以列表(list)的形式顯示的,而在沒有導(dǎo)出到Excel之前,無法查看其”表格”形式,很難對這些數(shù)據(jù)進(jìn)行”清洗”整理,只能導(dǎo)出Excel后再檢查數(shù)據(jù),不是很方便.本節(jié)將在python script節(jié)點中,利用pandas顯示數(shù)據(jù),如此便可以在dynamo中直接查看數(shù)據(jù)的”表格”形式,及時對其修改(后續(xù)).

python script節(jié)點是Python語言的節(jié)點,可以通過python編程實現(xiàn)特定目的.而pandas是python的第三方庫,可以把數(shù)據(jù)以”表格”的形式呈現(xiàn)并對其清理.對于python語言以及pandas的使用,大家自行學(xué)習(xí),大家直接復(fù)制我提供的代碼即可.
(1)?? 先打開revit自帶的案例文件(rac_basic_sample_projecr.rvt))

(2)打開上一節(jié)dynamo文件,建立Python Script節(jié)點

(3)上一節(jié)的data數(shù)據(jù)接入該節(jié)點,并把dynamo下面窗口向上拖動.

(4)雙擊該節(jié)點,進(jìn)入編輯界面.

(5) 把代碼復(fù)制進(jìn)去.
代碼如下:
# 加載 Python Standard 和 DesignScript 庫
import sys
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
#引入庫并設(shè)置格式(路徑修改成自己電腦路徑!!!)
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)
# 該節(jié)點的輸入內(nèi)容將存儲為 IN 變量中的一個列表。
dataEnteringNode = IN
#將data創(chuàng)建為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數(shù)據(jù)重新轉(zhuǎn)換為列表并輸出
tmp_data =np.array(df)
tmp_list =tmp_data.tolist()
# 將輸出內(nèi)容指定給 OUT 變量。
OUT = tmp_list
?復(fù)制代碼的時候一定要把下面路徑改成自己電腦路徑(如果不會找,請參照第一節(jié)(01升級配置dynamo))

要想完全使用該節(jié)點,請一定保證已經(jīng)按照第一節(jié)(01升級配置dynamo)的提示對dynamo進(jìn)行了升級,否則會報錯的!!!升級后的節(jié)點就可以使用print()方法了.
代碼的含義已經(jīng)加了注釋,就是把輸入端的列表數(shù)據(jù)轉(zhuǎn)為DataFrame(數(shù)據(jù)幀),然后使用print()方法顯示,最后再將該數(shù)據(jù)轉(zhuǎn)為原始的列表數(shù)據(jù)結(jié)構(gòu).
這么做的目的,一是為了顯示用”表格”形式顯示數(shù)據(jù),二是如果對數(shù)據(jù)進(jìn)行修改,修改后的數(shù)據(jù)仍能被dynamo使用.
(6) 保存后運行.數(shù)據(jù)以”表格”形式顯示.如果不滿足要求則可以用pandas進(jìn)行數(shù)據(jù)清洗(后續(xù))

OK,有了這個節(jié)點,以后可以對數(shù)據(jù)進(jìn)行直觀顯示了,還可以根據(jù)需要對數(shù)據(jù)進(jìn)行編輯.其實這點是很有必要的,尤其是在處理大量數(shù)據(jù)時.

沒看懂也沒關(guān)系,你就照葫蘆畫瓢,知道有這回事兒就行,這也是熟悉Dynamo的可取方式嘛.