#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:
- После ввода ГОРОДА A входные данные были представлены как цена перепродажи в ГОРОДЕ A. Отраженные минимальные и максимальные значения — это минимальные и максимальные значения всех городов iso входного города. Как я могу получить минимальное и максимальное значение только для входного города?
- Мне нужно перечислить доступные типы квартир на основе ввода города и значения минимальной и максимальной цены квартиры, которые ввел пользователь.
- Затем пользователь выберет тип комнаты, и список прошлых транзакций будет указан в таблице следующим образом: «Номер», «Блок», «Название улицы», «Диапазон этажей», «Размер (кв. м)», «Цена ($)»
Кто-нибудь может помочь? Я так потерян.
Комментарии:
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:
- Вы не использовали
town_choice
для фильтрации набора данных. Я делаю это ниже, чтобы создатьone_town
, содержащий только строки из выбранного города. - При создании
flat_types
я использовал составное двоичное выражение для фильтрации только строк в ценовом диапазоне и.loc
выбора толькоflat_type
столбца этих строк. - Я оставляю для вас 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)