1

阅读有关blaze的本教程,但在本地 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'

4

2 回答 2

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

如果您想将结果推送到一个具体的数据结构中,例如 a 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
于 2015-05-07T13:09:40.437 回答
0

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

我应该做类似output = odo(mySpecies, pdDataFrame)output = odo(mySpecies, list)然后print output做转换。

欢迎其他解决方案/要点。

于 2015-05-07T13:11:34.740 回答