我想计算从两个数据集收集的组特定比率。 使用
从数据库中读取两个Dataframeleases = pd.read_sql_query(sql, connection)
sales = pd.read_sql_query(sql, connection)
一个用于出售的房地产,另一个用于出租物品。 然后我按他们的城市和我感兴趣的类别对他们进行分组:
leasegroups = leases.groupby(['IDconjugate', "city"])
salegroups = sales.groupby(['IDconjugate', "city"])
现在我想知道每个类别和城市最便宜的租赁对象与最便宜的出售对象之间的比率,以获得可能回报的下限:
minlease = leasegroups['price'].min()
maxsale = salegroups['price'].max()
ratios = minlease*12/maxsale
我得到的输出如下:类别 - 城市:比率 但我无法按城市或类别访问比率对象。我尝试使用以下方法创建新的数据框:
newframe = pd.DataFrame({"Minleases" : minlease,"Maxsales" : maxsale,"Ratios" : ratios})
newframe = newframe.loc[newframe['Ratios'].notnull()]
给了我正确的行,newframe.index返回组。
index.name提供 ['IDconjugate','city'] ,但索引结果为 KeyError 。如何从不同的组中制作索引:ID0 + city1,ID0 + city2等...?
编辑: 输出如下:
Maxsales Minleases Ratios IDconjugate city 1 argeles gazost 59500 337 0.067966 chelles 129000 519 0.048279 enghien-les-bains 143000 696 0.058406 esbly 117990 495 0.050343 foix 58000 350 0.072414
目标是选择最高比率并用散景绘制它们,这需要一个 dataframe对象,并根据我的理解绘制列与索引:
topselect = ratio.loc[ratio["Ratios"] > ratio["Ratios"].quantile(quant)]
dots = Dot(topselect, values='Ratios', label=topselect.index, tools=[hover,],
title="{}% best minimal Lease/Sale Ratios per City and Group".format(topperc*100), width=600)
我真的只需要索引作为原始顺序中的列表,因此以下工作:
ids = []
cities = []
for l in topselect.index:
ids.append(str(int(l[0])))
cities.append(l[1])
newind = [i+"_"+j for i,j in zip(ids, cities)]
topselect.index = newind
现在该图在x轴上显示1_city1 ... 1_city2 ... n_cityX。但我认为在熊猫框架内必须有一些显而易见的方法,我不知道。