通过对象类型的十进制循环


Adress  Rooms   m2  Price   Floor
196      Skanstes 29a      5  325   2800   24/24
12          Ausekļa 4      5  195   2660     7/7
7       Antonijas 17A      3   86   2200     6/6
31        Blaumaņa 16      4  136   1800     4/6
186  Rūpniecības 21k2      5  160   1700     7/7
233        Vesetas 24      4  133   1700   10/10
187    Rūpniecības 34      5  157   1600     3/6
91     Elizabetes 31а      8  203   1600     1/5
35         Blaumaņa 9      3   90   1600     3/5
60             Cēsu 9      3  133   1550     6/7

我得到了一组数据,我想测试这个理论,如果楼层越高,房产租金就越贵。

Adress    object
Rooms      int64
m2         int64
Price      int64
Floor     object
dtype: object

tbh我被卡住了,甚至不知道如何开始。有没有什么方法可以让我循环浏览第一个数字并将其与第二个数字进行比较?比如如果24=24,那么它属于新的类别"顶层"??并创建"中间楼层"one_answers"底层"类别。

走了这么远。

df_sorted= df.sort_values("Price",ascending=False)
print(df_sorted.head(10))
for e in df_sorted['Floor']:
parts=e.split('/')
print(parts)

但第二部分不起作用

if parts[0]==parts[-1]:
return "Top Floor" if parts[0]=="1":
return "Bottom Floor" else: "Mid Floor"

第一个解决方案,使用问题中建议的三个类别。然后应用按类别分组来检查平均价格,作为简单的比较:

def floor_to_categories(floor_str):
num1, num2 = floor_str.split("/")
if num1 == num2: return "Top"
elif num1 == "1": return "Bottom"
return "Middle"
df["FloorCategories"] = df.Floor.apply(floor_to_categories)
df.groupby("FloorCategories").Price.mean()

第二种解决方案,离散的连续整数,将底部转换为从0到1的浮动,然后在价格和新的底部浮动之间应用pearson相关性:

def floor_to_float(floor_str):
num1, num2 = [float(num) for num in floor_str.split("/")]
return num1 / num2
df["FloorFloat"] = df.Floor.apply(floor_to_float)
df[["Price", "FloorFloat"]].corr()

如果楼层存储为字符串,则可以使用以下函数:

def split_floors(floor):
if floor.split('/')[0] == '1':
return 'Bottom'
if floor.split('/')[0] == floor.split('/')[1]:
return 'Top Floor'
else:
return 'Mid Floor'

最新更新