在 GraphLab Sframe 中过滤和显示值?

Filtering and displaying values in GraphLab Sframe?

所以,一周前我开始使用 Graphlab 进行机器学习 class。我对 Graphlab 还是很陌生,我通读了 API 但无法完全找到我正在寻找的解决方案。那么,问题来了。我有多个列的数据,例如卧室、浴室、平方英尺、邮政编码等。这些基本上是特征,我的目标是使用各种 ML 算法来预测房屋的价格。现在,我应该找到邮政编码为 93038 的房屋的平均价格。因此,我将问题分解为更小的部分,因为我很天真并决定使用我的直觉。这就是我尝试过的 far.Firstly,我试图找到一种方法来创建一个过滤器,这样我就可以只提取邮政编码为 93038 的房子的价格。

import graphlab
sf = graphlab.SFrame('home_data.gl')
sf[(sf['zipcode']=='93038')] 

这些向我显示了邮政编码为 93038 的所有列,但后来我只想显示值为 93038 的价格和邮政编码列。我尝试了很多不同的方法,但就是想不通。

另外,假设我想找到邮政编码值 93038.How 的价格平均值,我要这样做吗?

提前致谢。

你可以试试:

import graphlab as gl
sf = gl.SFrame({'price':[1,4,2],'zipcode':['93038','93038','93037']})

# Filtering
filter_sf = sf[(sf['zipcode']=='93038')] 

# Displaying
print filter_sf[['price', 'zipcode']]

# Averaging a column
print filter_sf['price'].mean()
mean_by_zip = sales.groupby(key_columns=['zipcode'], 
       operations={'avg': graphlab.aggregate.MEAN('price')})

mean_by_zip.sort('avg', ascending=False)[0:3] # will give top 3

这是我所做的:

- 第一个选项

sf[sf['zipcode']=='98039']['price'].mean()

- 第二个选项

zip = ['98039'] *#create your variable with the zipcode you want*

m_price = sf.filter_by(zip, 'zipcode') *#you filter the column 'zipcode' by your zipcode*

print m_price['price'].mean() *#print the mean of the zipcode*

使用GroupBy操作和topk()函数

import graphlab.aggregate as agg
sf_ = sf.groupby(key_columns = 'zipcode', operations={'Mean by ZipCode' : agg.MEAN('price')})
sf_.topk('Mean by ZipCode', k=1)