Дослідження даних про нерухомість у Бразилії: Всеосяжний аналіз

Ласкаво просимо до мого першого проекту з аналізу даних! У цьому проекті я занурився у захоплюючий світ даних про нерухомість у Бразилії. Аналізуючи та візуалізуючи ці дані, моя мета полягала в тому, щоб виявити тренди, інсайти та патерни на ринку нерухомості Бразилії. Незалежно від того, чи ви захоплені даними, професіонал у галузі нерухомості або просто зацікавлені в ринку житла в Бразилії, я сподіваюся, що цей аналіз буде для вас цікавим та пізнавальним.

Цілі проекту

Основні цілі цього проекту полягали в тому, щоб:

  1. Зібрати та очистити дані про житло з різних регіонів Бразилії.
  2. Проаналізувати та візуалізувати дані для виявлення трендів та інсайтів щодо цін на житло та його розмірів.
  3. Зрозуміти регіональні відмінності та взаємозв'язок між розміром майна і ціною в конкретних районах.

Необхідні бібліотеки

Для успішного виконання аналізу даних і візуалізації були необхідні кілька бібліотек Python. Ці бібліотеки забезпечили інструменти для маніпулювання даними, побудови графіків та географічної візуалізації.

# Імпортуємо необхідні бібліотеки  
import pandas as pd  
import matplotlib.pyplot as plt  
import plotly.express as px

Збір та очищення даних

Аналіз почався з імпорту двох наборів даних, що містять інформацію про нерухомість з різних регіонів Бразилії. Кожен набір даних вимагав специфічних кроків очищення, щоб забезпечити цілісність і узгодженість даних.

  1. Очищення df1:
  • Видалено рядки з відсутніми значеннями (NaN значення).
  • Розділено рядки в колонках, таких як lat-lon та place_with_parent_names.
  • Видалено оригінальні колонки після обробки.
# Імпортуємо набір даних 1  
df1 = pd.read_csv("dataset1.csv")  
# Видаляємо рядки з відсутніми значеннями  
df1.dropna(inplace=True)  
# Розділяємо колонку 'lat-lon' на 'lat' та 'lon'  
df1[['lat', 'lon']] = df1['lat-lon'].str.split(',', expand=True)  
df1['lat'] = df1['lat'].astype(float)  
df1['lon'] = df1['lon'].astype(float)  
# Розділяємо 'place_with_parent_names', щоб отримати відповідну інформацію про місцезнаходження  
df1['place'] = df1['place_with_parent_names'].str.split('|').str[-1]# Видаляємо оригінальні колонки  
df1.drop(columns=['lat-lon', 'place_with_parent_names'], inplace=True)

2. Очищення df2:

  • Перетворено колонку price_brl в price_usd з використанням обмінного курсу на той час (1 USD = 3.19 BRL).
  • Видалено рядки з відсутніми значеннями (NaN значення).
  • Видалено надлишкову колонку price_brl.
# Імпортуємо набір даних 2  
df2 = pd.read_csv("dataset2.csv")  
# Перетворюємо 'price_brl' в 'price_usd'  
df2["price_usd"] = (df2["price_brl"] / 3.19).round(2)  
# Видаляємо рядки з відсутніми значеннями і видаляємо колонку 'price_brl'  
df2.dropna(inplace=True)  
df2.drop(columns=["price_brl"], inplace=True)

3. Об'єднання очищених даних:

  • Об'єднали очищені набори даних df1 та df2 в один DataFrame для комплексного аналізу.
# Об'єднуємо очищені набори даних  
df = pd.concat([df1, df2])

Дослідження даних

Для дослідження даних я створив візуалізації та згенерував статистичні підсумки:

  1. Scatter Mapbox: Візуалізував географічний розподіл нерухомості.
# Створюємо scatter mapbox для показу розташування об'єктів нерухомості  
fig = px.scatter_mapbox(  
 df,  
 lat="lat",  
 lon="lon",  
 hover_data=["price_usd"],  
 height=600  
)# Оновлюємо налаштування карти  
fig.update_layout(  
 mapbox_style="open-street-map",  
 mapbox_center={"lat": -14.2, "lon": -51.9},  
 width=600,  
 height=600  
)# Показуємо карту  
fig.show()

2. Статистичні підсумки: Згенерував описові статистики для колонок area_m2 та price_usd.

# Генеруємо статистичні підсумки для колонок 'area_m2' та 'price_usd'  
summary_stats = df[["area_m2", "price_usd"]].describe()  
print(summary_stats)

3. Гістограма: Показав розподіл цін на житло в USD.

# Створюємо гістограму цін на житло  
plt.hist(df["price_usd"])  
plt.xlabel("ціна [USD]")  
plt.ylabel("частота")  
plt.title("Розподіл цін на житло");  
plt.show()

4.
Горизонтальний Boxplot: Візуалізував розподіл розмірів будинків у квадратних метрах.

# Створюємо горизонтальний boxplot для розмірів будинків  
plt.boxplot(df["area_m2"], vert=False)  
plt.xlabel("площа [кв. метри]")  
plt.title("Розподіл розмірів будинків");  
plt.show()

Регіональний аналіз

Я зосередився на південному регіоні Бразилії, фільтруючи дані для аналізу конкретних штатів. Метод value_counts показав, що найбільше нерухомості було в штаті Ріу-Гранде-ду-Сул, потім йшли Санта-Катарина та Парана.

# Створюємо DataFrame, що містить будинки з південного регіону  
df_south = df[df["region"] == "south"]  
# Рахуємо кількість нерухомості в кожному штаті південного регіону  
homes_by_state = df_south["state"].value_counts()  
print(homes_by_state)

Аналіз показав, що найбільше нерухомості знаходиться в штаті Ріу-Гранде-ду-Сул, потім йдуть Санта-Катарина та Парана.

Для подальшого дослідження я проаналізував зв'язок між розміром будинку та ціною в Ріу-Гранде-ду-Сул за допомогою графіка розсіювання:

# Фільтруємо дані для Ріу-Гранде-ду-Сул  
df_south_rgs = df_south[df_south["state"] == "Rio Grande do Sul"]  
# Створюємо графік розсіювання для показу взаємозв'язку між розміром будинку та ціною  
plt.scatter(x=df_south_rgs["area_m2"], y=df_south_rgs["price_usd"])  
plt.xlabel("площа [кв. метри]")  
plt.ylabel("ціна [USD]")  
plt.title("Ріу-Гранде-ду-Сул - Взаємозв'язок між розміром будинку та ціною");  
plt.show()

Крім того, я обчислив коефіцієнти кореляції для розміру будинку та ціни в трьох південних штатах і зберіг їх у словнику:

# Підмножина даних для Санта-Катарини  
df_santa_catarina = df_south[df_south["state"] == "Santa Catarina"]  
# Підмножина даних для Парани  
df_parana = df_south[df_south["state"] == "Paraná"]  
# Обчислюємо коефіцієнти кореляції  
corr_rio_grande_do_sul = df_south_rgs["area_m2"].corr(df_south_rgs["price_usd"])  
corr_santa_catarina = df_santa_catarina["area_m2"].corr(df_santa_catarina["price_usd"])  
corr_parana = df_parana["area_m2"].corr(df_parana["price_usd"])  
# Створюємо словник з коефіцієнтами кореляції  
south_state_corr = {  
 "Ріу-Гранде-ду-Сул": corr_rio_grande_do_sul,  
 "Санта-Катарина": corr_santa_catarina,  
 "Парана": corr_parana  
}  
print(south_state_corr)

Висновок

Цей проект надав цінні інсайти щодо ринку нерухомості в Бразилії шляхом стандартизації даних, візуалізації ключових показників та аналізу регіональних відмінностей. Використання візуалізацій, таких як графіки розсіювання, гістограми та boxplot, допомогло краще зрозуміти дані, роблячи їх доступними навіть для тих, хто не має попереднього досвіду в цій сфері.

Запитання дослідження, на які були отримані відповіді:

  1. Який розподіл цін на житло та його розмірів у Бразилії?
  • Гістограма показала, що ціни на житло варіюються значно, з великим числом об'єктів у нижніх цінових діапазонах. Boxplot виявив діапазон розмірів будинків, підкреслюючи наявність викидів.

2. Які регіони мають найвищі та найнижчі середні ціни на житло?

  • Аналіз середніх цін на житло за регіонами показав, що Ріу-Гранде-ду-Сул має найвищі середні ціни на житло, тоді як інші регіони пропонують більш доступні об'єкти.

3. Який зв'язок між розміром будинку та ціною в окремих регіонах?

  • Графік розсіювання для Ріу-Гранде-ду-Сул показав позитивну кореляцію між розміром будинку та ціною, що свідчить про те, що більші будинки, як правило, мають вищу ціну.

4. Як розподіляються об'єкти нерухомості по різних штатах південного регіону?

  • Метод value_counts показав, що найбільше об'єктів нерухомості є в Ріу-Гранде-ду-Сул, після нього йдуть Санта-Катарина та Парана.

Поділившись цим аналізом, я прагну продемонструвати свою здатність працювати з реальними наборами даних і надавати чіткі та практичні інсайти. Проект демонструє всебічний підхід до аналізу даних, від очищення та попередньої обробки до візуалізації та інтерпретації.

Перекладено з: Exploring Housing Data in Brazil: A Comprehensive Analysis

Leave a Reply

Your email address will not be published. Required fields are marked *