2017-06-14 84 views
1

對於以統一的分配,我們必須使用PySal計算莫蘭的我。我發現了一個examplar代碼,並從我去,但我收到錯誤消息「‘文件’對象有沒有屬性‘by_col’」用PySal計算Moran's I?

任何想法將不勝感激。數據集是紐約的文本文件,「T0_MINC」屬性是包含不同地區家庭收入中位數的列。該腳本被附加以下

import os 
import pysal 
import numpy as np 

os.chdir = ("C:\\Users\\hsv0336\\Desktop") 
wd = os.getcwd() 

w = pysal.open(wd + "\\Rook.gal") 
f = pysal.open(wd + "\\NewYorkData.txt") 
y = np.array(f.by_col["T0_MINC"]) 

mi = pysal.Moran(y, w, two_tailed=False) 

示例腳本我從「莫蘭」下就設在這個環節的工作: http://pysal.readthedocs.io/en/latest/users/tutorials/autocorrelation.html#moran-s-i

回答

0

pysal.open試圖確定基於擴展和文件類型檢查文件。由pysal.open返回的類型並不總是清晰的,應該使用內置類型函數進行檢查。在你的情況下,它返回一個普通的Python文件對象,這意味着pysal無法爲你解析它。 「by_col」方法僅在PySAL將您的文件識別爲DataTable時纔可用。

受支持的DataTable類型包括帶有特殊「GeoDa」標頭的.csv,.dbf或.txt文件。 GeoDa標題包含第一行中的數據行和列的數量以及第二行中的列的名稱。

例如示例STL_HOM.txt數據集的前幾行。其中有78個數據行和4列。

78,4 
"FIPSNO","HR8488","HR8893","HC8488" 
17107,1.290722,1.624458,2 

您既可以將文件重新格式化爲支持數據表類型中的一種,或編寫自己的代碼來解析文本文件。