Покупка квартиры на основе исторических данных

#python #pandas #list #dataframe

#python #панды #Список #фрейм данных

Вопрос:

 import pandas as pd
df = pd.read_csv("past.csv")
df.info()

print() 

town_unique = df[['town']].drop_duplicates()
print('List of towns:')
print(*town_unique['town'], sep = "n")

town_choice = str(input('Enter a town from above: ')).upper()

for town_choice in df.columns[10:].values:
    print(f'The price range of flats in {town_choice} is between ${df[town_choice].min():,.0f} and ${df[town_choice].max():,.0f}.')

print()

min_price = int(input('Enter a minimum flat price: '))
max_price = int(input('Enter a maximum flat price: '))
print('The types of flats available are:')
 
 <class 'pandas.core.frame.DataFrame'>
RangeIndex: 80374 entries, 0 to 80373
Data columns (total 11 columns):
 #   Column               Non-Null Count  Dtype  
---  ------               --------------  -----  
 0   month                80374 non-null  object 
 1   town                 80374 non-null  object 
 2   flat_type            80374 non-null  object 
 3   block                80374 non-null  object 
 4   street_name          80374 non-null  object 
 5   storey_range         80374 non-null  object 
 6   floor_area_sqm       80374 non-null  float64
 7   flat_model           80374 non-null  object 
 8   lease_commence_date  80374 non-null  int64  
 9   remaining_lease      80374 non-null  object 
 10  resale_price         80374 non-null  float64
dtypes: float64(2), int64(1), object(8)
memory usage: 6.7  MB

List of towns:
TOWN A
TOWN B
TOWN C
TOWN D
TOWN E

Enter a town from above: TOWN A
The price range of flats in **resale_price** is between **$140,000** and **$1,258,000**.

Enter a minimum flat price: 100000
Enter a maximum flat price: 20000
The types of flats available are:
 
  1. После ввода ГОРОДА A входные данные были представлены как цена перепродажи в ГОРОДЕ A. Отраженные минимальные и максимальные значения — это минимальные и максимальные значения всех городов iso входного города. Как я могу получить минимальное и максимальное значение только для входного города?
  2. Мне нужно перечислить доступные типы квартир на основе ввода города и значения минимальной и максимальной цены квартиры, которые ввел пользователь.
  3. Затем пользователь выберет тип комнаты, и список прошлых транзакций будет указан в таблице следующим образом: «Номер», «Блок», «Название улицы», «Диапазон этажей», «Размер (кв. м)», «Цена ($)»

Кто-нибудь может помочь? Я так потерян.

Комментарии:

1. добро пожаловать в SO! re: «цена перепродажи» iso «TOWN A»: я не знаю языка, но, возможно, «квартиры в {town_choice} между» должны быть «квартиры в $ {town_choice} между»? (со знаком доллара)

2. пожалуйста, отредактируйте вопрос, чтобы добавить недостающий бит после ‘print (‘Доступны следующие типы квартир:’)’ кроме того, можете ли вы включить входные данные (файл CSV) или ссылку на него?

3. Спасибо за приветствие! 🙂 Вот ссылка на excel — drive.google.com/file/d/1N9k9k6xB-Q8JBIEedmxfWpjotZtyb2uS /…

4. и это ссылка на желаемый результат — drive.google.com/file/d/1MmgwDEbkVBhfdGZrVeheAWdCjkKFXDrl /…

Ответ №1:

  1. Вы не использовали town_choice для фильтрации набора данных. Я делаю это ниже, чтобы создать one_town , содержащий только строки из выбранного города.
  2. При создании flat_types я использовал составное двоичное выражение для фильтрации только строк в ценовом диапазоне и .loc выбора только flat_type столбца этих строк.
  3. Я оставляю для вас 3-ю часть «пользователь выбирает тип, перечислены все квартиры этого типа». Он будет использовать те же методы.
 import pandas as pd
df = pd.read_csv("past.csv")
df.info()

print() 

town_unique = df[['town']].drop_duplicates()
print('List of towns:')
print(*town_unique['town'], sep = "n")

# hardcode the choice to make edit/run/debug iteration faster
#town_choice = str(input('Enter a town from above: ')).upper()
town_choice = "HOUGANG"

one_town = df[df["town"] == town_choice]
print(f'The price range of flats in {town_choice} is between ${one_town["resale_price"].min():,.0f} and ${one_town["resale_price"].max():,.0f}.')

print()

# hardcode the choices to make edit/run/debug iteration faster
min_price = 383500 # int(input('Enter a minimum flat price: '))
max_price = 384500 # int(input('Enter a maximum flat price: '))

flat_types = one_town.loc[(one_town["resale_price"] >= min_price) amp; (one_town["resale_price"] <= max_price), "flat_type"].drop_duplicates()

print('The types of flats available are:')
print(*flat_types, sep = "n")
print()
 

Комментарии:

1. Большое вам спасибо! Мне удалось это получить! : D

2. рад, что помогло! это было забавное упражнение. не стесняйтесь «принять» мой ответ, чтобы я получил несколько баллов репутации..

3. Кстати, вы могли бы помочь? Я попытался распечатать таблицу для выбранных квартир, но мне нужны были только выбранные столбцы. Я что-то здесь упускаю? flat_list = df.loc[(df['town'] == town_choice) amp; (df['flat_type'] == desired_flat) amp; (df['resale_price'] >= min_price) amp; (df['resale_price'] <= max_price)] df1 = df[['block', 'street_name', 'storey_range','floor_area_sqm','resale_price']] print(flat_list)