关于this tutorial的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'
答案 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
的操作来进行转换。
欢迎其他解决方案/点。