python blaze postgresql无法打印“不同”的虹膜种类

时间:2015-05-07 12:16:07

标签: python postgresql blaze

关于this tutorialblaze,但在本地postgresql数据库中使用iris数据集。

使用db.iris.Species.distinct()时,我似乎没有显示相同的输出(参见Ipython笔记本中的16)。

我的连接字符串是postgresql://postgres:postgres@localhost:5432/blaze_test

我的简单Python代码是:

import blaze as bz
db = bz.Data('postgresql://postgres:postgres@localhost: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'

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

好的,我想我现在知道了。 YouTube视频的其余部分使其更加清晰。

我应该执行类似output = odo(mySpecies, pdDataFrame)output = odo(mySpecies, list)然后print output的操作来进行转换。

欢迎其他解决方案/点。