2015-05-07 78 views
1

通過this tutorialblaze,但在本地postgresql數據庫中使用虹膜數據集。python blaze postgresql無法打印「不同」的虹膜種

當使用db.iris.Species.distinct()(請參閱Ipython筆記本中的16)時,我似乎不會得到與所示相同的輸出。

我的連接字符串是postgresql://postgres:[email protected]:5432/blaze_test

和我簡單的Python代碼:

import blaze as bz 
db = bz.Data('postgresql://postgres:[email protected]:5432/blaze_test') 
mySpecies = db.iris_data.species.distinct() 
print mySpecies 

我得到在控制檯(使用Spyder的IDE)是distinct(_55.iris_data.species)

實際上如何可以打印表中的不同物種?

注:我知道我使用小寫字母「S」爲代碼中的「物種」的一部分,否則,我只是得到一個錯誤說:'Field' object has no attribute 'Species'

回答

3

印刷機構在這裏絆倒你了一下。

__str__實現(這是Python的print函數調用)返回表達式的字符串版本。

__repr__實現(在解釋器中執行一行時調用)會觸發計算,從而允許您查看計算結果。

In [2]: iris = Data(odo(os.path.abspath('./blaze/examples/data/iris.csv'), 'postgresql://localhost::iris')) 

In [3]: iris 
Out[3]: 
    sepal_length sepal_width petal_length petal_width  species 
0   5.1   3.5   1.4   0.2 Iris-setosa 
1   4.9   3.0   1.4   0.2 Iris-setosa 
2   4.7   3.2   1.3   0.2 Iris-setosa 
3   4.6   3.1   1.5   0.2 Iris-setosa 
4   5.0   3.6   1.4   0.2 Iris-setosa 
5   5.4   3.9   1.7   0.4 Iris-setosa 
6   4.6   3.4   1.4   0.3 Iris-setosa 
7   5.0   3.4   1.5   0.2 Iris-setosa 
8   4.4   2.9   1.4   0.2 Iris-setosa 
9   4.9   3.1   1.5   0.1 Iris-setosa 
... 

In [4]: iris.species.distinct() 
Out[4]: 
      species 
0 Iris-versicolor 
1 Iris-virginica 
2  Iris-setosa 

In [8]: print(str(iris.species.distinct())) 
distinct(_1.species) 

In [9]: print(repr(iris.species.distinct())) 
      species 
0 Iris-versicolor 
1 Iris-virginica 
2  Iris-setosa 

如果你希望將結果推到像pandas.Series一個具體的數據結構,這樣做:

In [5]: odo(iris.species.distinct(), pd.Series) 
Out[5]: 
0 Iris-versicolor 
1  Iris-virginica 
2  Iris-setosa 
Name: species, dtype: object 
+0

比我的回答更好讀! – user965586

0

好吧,我想我現在知道了。 YouTube視頻的其餘部分使其更加清晰。

我應該做一些像output = odo(mySpecies, pdDataFrame)output = odo(mySpecies, list)然後print output來做轉換。

其他解決方案/點歡迎。