1
Y BAN NHÂN DÂN TP.H CHÍ MINH
TRƯỜNG ĐẠI HC SÀI GÒN
KHOA TOÁN NG DNG
TIU LUN CUI K
ĐỀ TÀI:
NG DNG KHAI PHÁ D LIU TRONG PHÂN TÍCH B
D LIU GIÁ NHÀ VÀ D ĐOÁN GIÁ NHÀ
Hc phn: Nhp môn khoa hc d liu
Giảng viên hướng dẫn: TS.Lương Th Hng Cm
Sinh viên thc hin: Nguyn Th Lan Anh- 3125580005
Ngành: Khoa hc d liu
Lp: DDU 1251
Khóa hc: 2025-2029
2
MC LC
PHN M ĐU ......................................................................................................... 4
1.1. Li M Đầu .......................................................................................................... 4
1.2. Lý Do Chọn Đề Tài / Tính Cp Thiết của Đề Tài .................................................. 4
1.3. Mục Đích và Mục Tiêu Nghiên Cu ..................................................................... 5
1.4. Đối Tượng và Phm Vi Nghiên Cu của Đề Tài ................................................... 5
1.5. Phương Pháp Nghiên Cu ..................................................................................... 6
1.6. Tng quát ni dung chính ca bài ......................................................................... 6
1.7. Ý Nghĩa Lý Luận và Thc Tin của Đề Tài .......................................................... 7
PHN NI DUNG ...................................................................................................... 7
1.1 A.Trích Xut D Liu ............................................................................................ 7
1. Import các packages cn thiết như: numpy, pandas, matplotlib,
#scikit - learn,… và đọc d liu t file csv. (pd.read_csv) ................................ 7
2. Khảo sát các dòng đầu và cui ca d liu. (.head(), .tail()) ............... 8
3. Xuất thông tin cơ bn v d liu (.info()) .......................................... 9
4. Trích xuất các đặc đim thng kê mô t ca b d liu (.describe()).. 9
5. Xut các ct ca d liu (.columns) ................................................ 10
6. Xut thông tin v kích c ca b d liu (.shape) ............................ 10
7. Kho sát s giá tr ca mi ct (.nunique()) ..................................... 10
1.2 B. Làm Sch D Liu .......................................................................................... 11
1. B nhng ct không cn thiết trong phân tích (.drop… inplace = True,
axis =1), sau đó xuất li kết qu đặc điểm thng kê mô t ca b d liu sau
khi d liệu được tinh gin. ............................................................................. 11
2. Kim tra xem mi ct có bao nhiêu d liu thiếu (.isnull().sum()) và
x lý. ............................................................................................................. 13
3
3. Kim tra xem mi dòng có bao nhiêu d liu trùng lp
(.duplicated().sum()) và x lý........................................................................ 13
1.3 C.Trc Quan Hóa D Liu ................................................................................... 14
1. Liu din tích (area) có ảnh hưởng đến giá nhà không? ................... 14
2.Mi quan h gia giá tr bất động sn (price) và mức độ hoàn thin
ni tht (furnishingstatus) .............................................................................. 16
3.Mi quan h gi giá tr bất động sn (price) và s phòng ng
(bedrooms), phòng tm (bathrooms) .............................................................. 18
4. Mối tương quan giữa giá tr bất động sn (price) và s hin din ca
phòng khách (guestroom) ............................................................................... 20
5. Mối tương quan giữa cu trúc nhà (s tng và tng hm) (stories and
basement) vi giá bán (price) ......................................................................... 21
6. Mi quan h gia h thống nước nóng (hotwaterheating) và điều hòa
ti giá nhà (airconditioning) ........................................................................... 24
7. Mi quan h giữa đường chính (mainroad), khu vực ưu tiên (prefarea),
bãi đậu xe (parking) vi giá tr bt động sn (price) ....................................... 29
1.4.D. ng Dng Hc Máy ........................................................................................ 33
1.5. E. Đưa ra kết lun ............................................................................................... 35
1.6 F. Tài liu tham kho ........................................................................................... 36
4
PHN M ĐẦU
1.1. Li M Đầu
“T m” luôn ngun cm hng tận, nơi sưởi m m hn gia nhp sng hi h.
Gia nhng bn bề, đôi khi ta chỉ khao khát được tr v chốn bình yên, nơi có th gác
li mi lo toan sng tht vi chính mình. Mt ngôi nhà m áp không ch i che
mưa nắng, mà còn là không gian nuôi dưng cm xúc và gn kết yêu thương.
Thế nhưng, để chọn được mt ngôi nhà phù hp vi s thích, nhu cầu điều kin
nhân li không h d dàng. Trong bi cnh th trưng bất động sn liên tc biến động,
hàng lot d án vi thiết kế, mc giá tiện ích đa dạng được tung ra, khiến người
mua đứng trước vàn la chn. Cùng với đó, khối lượng d liu khng l v giá tr,
đặc điểm xu hướng th trưng ngày càng gia tăng. Chính vậy, khai thác d liu
(Data Mining) đã trở thành công c đắc lực, giúp các nhà đầu doanh nghiệp bt
động sản phân tích, đánh giá và đưa ra quyết định đầu thông minh hơn.
Đề tài "ng Dng Khai Phá D Liu trong Phân Tích B D Liu v giá nhà"
không ch tp trung vào các k thut phân ch d liu, còn khám phá cách
nhng phân tích này th h tr vic ra quyết định trong kinh doanh, nâng cao kh
năng cạnh tranh đáp ng nhu cu ngày ng cao ca khách hàng. Thông qua vic
ng dng các mô hình hc máy và thng kê, chúng ta th rút ra những xu hướng
d đoán chính xác hơn về các phân lp nhà và nhu cu khác, t đó giúp các ch đầu
tư có sự quyết định chính xác đối vi th trưng nhà .
1.2. Lý Do Chọn Đề Tài / Tính Cp Thiết của Đ Tài
Đề tài này được chn do th trưng nhà đang phải đối mt vi nhiu thách
thức, như quản chi phí đầu tối ưu hóa trải nghim theo nhu cu ca khách
hàng. Khi nhu cầu khách hàng tăng cao, việc hiu hành vi ca h các yếu t nh
5
hưởng đến quyết định xây dng tr nên quan trng. Khai thác d liu cung cp công
c phân tích mnh m, giúp c doanh nghip điều chnh chiến lược gci thin
dch v. D đoán chính xác giá trị bất động sn không ch giúp cho khách hàng la
chn một “tổ ấm” tưởng mà còn giúp các ch đầu và doanh nghiệp tối ưu hóa chi
phí đầu và d đoán được các thiết kế theo xu hướng hin nay.
1.3. Mục Đích và Mc Tiêu Nghiên Cu
Mục Đích Nghiên Cứu: Tìm hiu ng dụng các phương pháp khai
thác d liệu để phân tích b d liu giá nhà và d đoán giá nhà, nhằm nâng cao hiu
qu kinh doanh cho các doanh nghip và ch đầu tư.
Mc Tiêu Tng Quát: Đánh giá cách mà khai thác dữ liu có th ci
thin kh năng dự đoán giá nhà tối ưu hóa các dịch v trong th trưng bất động
sn.
Mc Tiêu C Th:
1. Phân Tích Các Yếu T nh Hưởng: Xác đnh và phân tích các
yếu t liên đến giá nhà như diện tích, s phòng, ni tht, h thng nóng
lnh,..
2. Áp Dng Mô Hình D Đoán: S dng các mô hình thng kê và
máy học để d đoán giá nhà trong tương lai da trên d
liu hin có.
3. Đánh Giá Hiệu Qu Mô Hình: Đánh giá đ chính xác và tính kh thi ca
các mô hình đã áp dụng trong thc tin.
1.4. Đối Tượng và Phm Vi Nghn Cu của Đề Tài
Đối Tượng Nghiên Cu: Các yếu t liên quan đến như diện tích, s phòng, ni
tht, h thng nóng lnh,..
6
Phm Vi Nghn Cu: Nghiên cu s tp trung vào các b d liu giá nhà trong
mt khong thời gian xác đnh
1.5. Phương Pháp Nghiên Cứu
Phương Pháp Nghn Cu Lý Thuyết:
Phân Tích Tng Hp Thuyết: Xem xét các thuyết nghiên cứu trước
đó về khai thác d liu trong th trưng bất động sản để xây dng nn tng cho
nghiên cu.
Phương Pháp Mô Hình Hóa: To ra các hình d đoán giá nhà da trên các
yếu t đã được phân tích.
Phương Pháp Nghn Cu Thc Tin:
Kho Sát Thu Thp D Liu: S dng các công c kho sát và ngun d liu
công khai để thu thập thông tin liên quan như diện tích, s phòng, ni tht, h
thng nóng lnh,..
(Ngun d liu: Housing.csv )
Phân Tích D Liu Thc Tế: s dng các công c và phn mm
phân tích d liệu như Python, R; thc hiện các bưc khai phá d
liệu để phân tích, trình bày kết qu t b d liu và đưa ra các kết
lun có giá tr.
1.6. Tng quát ni dung chính ca bài
1. A Trích xut d liu
2. B Làm sch d liu
3. C Trc quan hóa d liu
4. D ng dng hc máy
5. E Đưa ra kết lun
7
1.7. Ý Nghĩa Lý Luận và Thc Tin của Đề Tài
Nghiên cu này làm phong phú thuyết v khai thác d liu trong th trưng
bất động sn cung cp ng dng thc tin hu ích. Kết qu giúp các nhà đầu tư, các
doanh nghip ci thin chiến lược xây dng, tối ưu hóa dịch v nâng cao s hài
lòng của khách hàng, đồng thi tiết kiệm chi phí và tăng cường kh năng cạnh tranh
PHN NI DUNG
Sinh viên: Nguyn Th Lan Anh- 3125580005
1.1 A.Trích Xut D Liu
1. Import các packages cn thiết như: numpy, pandas, matplotlib, #scikit -
learn,… và đọc d liu t file csv. (pd.read_csv)
import pandas as pd
data = pd.read_csv("Housing.csv")
print(data)
price area bedrooms bathrooms stories mainroad guestroom basement \
0 13300000 7420 4 2 3 yes no no
1 12250000 8960 4 4 4 yes no no
2 12250000 9960 3 2 2 yes no yes
3 12215000 7500 4 2 2 yes no yes
4 11410000 7420 4 1 2 yes yes yes
.. ... ... ... ... ... ... ... ...
540 1820000 3000 2 1 1 yes no yes
541 1767150 2400 3 1 1 no no no
542 1750000 3620 2 1 1 yes no no
543 1750000 2910 3 1 1 no no no
544 1750000 3850 3 1 2 yes no no
hotwaterheating airconditioning parking prefarea furnishingstatus
0 no yes 2 yes furnished
1 no yes 3 no furnished
2 no no 2 yes semi-furnished
3 no yes 3 yes furnished
8
4 no yes 2 no furnished
.. ... ... ... ... ...
540 no no 2 no unfurnished
541 no no 0 no semi-furnished
542 no no 0 no unfurnished
543 no no 0 no furnished
544 no no 0 no unfurnished
[545 rows x 13 columns]
2. Kho sát các dòng đầu và cui ca d liu. (.head(), .tail())
import pandas as pd
x = pd.read_csv('Housing.csv', index_col=0)
print("5 dòng đầu tiên:")
print(x.head())
print("\n5 dòng cui cùng:")
print(x.tail())
5 dòng đầu tiên:
area bedrooms bathrooms stories mainroad guestroom basement \
price
13300000 7420 4 2 3 yes no no
12250000 8960 4 4 4 yes no no
12250000 9960 3 2 2 yes no yes
12215000 7500 4 2 2 yes no yes
11410000 7420 4 1 2 yes yes yes
hotwaterheating airconditioning parking prefarea furnishingstatus
price
13300000 no yes 2 yes furnished
12250000 no yes 3 no furnished
12250000 no no 2 yes semi-furnished
12215000 no yes 3 yes furnished
11410000 no yes 2 no furnished
5 dòng cui cùng:
area bedrooms bathrooms stories mainroad guestroom basement \
price
1820000 3000 2 1 1 yes no yes
1767150 2400 3 1 1 no no no
1750000 3620 2 1 1 yes no no
1750000 2910 3 1 1 no no no
1750000 3850 3 1 2 yes no no
hotwaterheating airconditioning parking prefarea furnishingstatus
9
price
1820000 no no 2 no unfurnished
1767150 no no 0 no semi-furnished
1750000 no no 0 no unfurnished
1750000 no no 0 no furnished
1750000 no no 0 no unfurnished
3. Xuất thông tin cơ bn v d liu (.info())
import pandas as pd
x = pd.read_csv('Housing.csv')
print("=== Thông tin cơ bản v d liu trong Housing.csv ===")
x.info()
=== Thông tin cơ bn v d liu trong Housing.csv ===
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 545 entries, 0 to 544
Data columns (total 13 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 price 545 non-null int64
1 area 545 non-null int64
2 bedrooms 545 non-null int64
3 bathrooms 545 non-null int64
4 stories 545 non-null int64
5 mainroad 545 non-null object
6 guestroom 545 non-null object
7 basement 545 non-null object
8 hotwaterheating 545 non-null object
9 airconditioning 545 non-null object
10 parking 545 non-null int64
11 prefarea 545 non-null object
12 furnishingstatus 545 non-null object
dtypes: int64(6), object(7)
memory usage: 55.5+ KB
4. Trích xuất các đặc điểm thng kê mô t ca b d liu (.describe())
import pandas as pd
x = pd.read_csv('Housing.csv', index_col=0)
h=x.describe()
print(h)
area bedrooms bathrooms stories parking
count 545.000000 545.000000 545.000000 545.000000 545.000000
10
mean 5150.541284 2.965138 1.286239 1.805505 0.693578
std 2170.141023 0.738064 0.502470 0.867492 0.861586
min 1650.000000 1.000000 1.000000 1.000000 0.000000
25% 3600.000000 2.000000 1.000000 1.000000 0.000000
50% 4600.000000 3.000000 1.000000 2.000000 0.000000
75% 6360.000000 3.000000 2.000000 2.000000 1.000000
max 16200.000000 6.000000 4.000000 4.000000 3.000000
5. Xut các ct ca d liu (.columns)
import pandas as pd
x = pd.read_csv('Housing.csv', index_col=0)
he=x.columns
print(he)
Index(['area', 'bedrooms', 'bathrooms', 'stories', 'mainroad', 'guestroom',
'basement', 'hotwaterheating', 'airconditioning', 'parking', 'prefarea',
'furnishingstatus'], dtype='object')
6. Xut thông tin v kích c ca b d liu (.shape)
import pandas as pd
x = pd.read_csv('Housing.csv', index_col=0)
li=x.shape
print(f'Kích c ca b d liu',li)
Kích c ca b d liu (545, 12)
7. Kho sát s giá tr ca mi ct (.nunique())
import pandas as pd
x = pd.read_csv('Housing.csv', index_col=0)
be=x.nunique()
print(be)
area 284
bedrooms 6
bathrooms 4
stories 4
mainroad 2
guestroom 2
basement 2
hotwaterheating 2
11
airconditioning 2
parking 4
prefarea 2
furnishingstatus 3
dtype: int64
1.2 B. Làm Sch D Liu
1. B nhng ct không cn thiết trong phân tích (.drop… inplace = True, axis =1),
sau đó xuất li kết qu đặc điểm thng kê mô t ca b d liu sau khi d liu
đưc tinh gin.
import pandas as pd
# Đc d liu
df = pd.read_csv('Housing.csv', index_col=0)
# Gi li nhng ct giá tr ảnh hưởng ti giá tr bt đng sn
cols_to_keep = ['area', 'bedrooms', 'bathrooms', 'stories',
'parking','mainroad', 'guestroom', 'basement', 'hotwaterheating',
'airconditioning','prefarea', 'furnishingstatus']
df = df[cols_to_keep].reset_index()
# Thng kê mô t các ct s
print(ặc điểm thng kê mô t ca b d liu tinh gin:")
print(df.describe())
# Thng kê giá tr phân loi
print("\nTn sut các biến phân loi:")
for col in df.select_dtypes(include='object').columns:
print(f"\n{col}:\n", df[col].value_counts())
Đặc đim thng kê mô t ca b d liu tinh gin:
price area bedrooms bathrooms stories \
count 5.450000e+02 545.000000 545.000000 545.000000 545.000000
mean 4.766729e+06 5150.541284 2.965138 1.286239 1.805505
std 1.870440e+06 2170.141023 0.738064 0.502470 0.867492
min 1.750000e+06 1650.000000 1.000000 1.000000 1.000000
25% 3.430000e+06 3600.000000 2.000000 1.000000 1.000000
50% 4.340000e+06 4600.000000 3.000000 1.000000 2.000000
75% 5.740000e+06 6360.000000 3.000000 2.000000 2.000000
max 1.330000e+07 16200.000000 6.000000 4.000000 4.000000
parking
count 545.000000
mean 0.693578
12
std 0.861586
min 0.000000
25% 0.000000
50% 0.000000
75% 1.000000
max 3.000000
Tn sut các biến phân loi:
mainroad:
mainroad
yes 468
no 77
Name: count, dtype: int64
guestroom:
guestroom
no 448
yes 97
Name: count, dtype: int64
basement:
basement
no 354
yes 191
Name: count, dtype: int64
hotwaterheating:
hotwaterheating
no 520
yes 25
Name: count, dtype: int64
airconditioning:
airconditioning
no 373
yes 172
Name: count, dtype: int64
prefarea:
prefarea
no 417
yes 128
Name: count, dtype: int64
furnishingstatus:
furnishingstatus
semi-furnished 227
13
unfurnished 178
furnished 140
Name: count, dtype: int64
2. Kim tra xem mi ct có bao nhiêu d liu thiếu (.isnull().sum()) và x lý.
import pandas as pd
x = pd.read_csv('Housing.csv', index_col=0)
c=x.isnull().sum()
print("S ng d liu thiếu trong mi ct")
Print©
S lượng d liu thiếu trong mi ct
area 0
bedrooms 0
bathrooms 0
stories 0
mainroad 0
guestroom 0
basement 0
hotwaterheating 0
airconditioning 0
parking 0
prefarea 0
furnishingstatus 0
dtype: int64
3. Kim tra xem mi dòng có bao nhiêu d liu trùng lp (.duplicated().sum()) và
x lý.
import pandas as pd
x = pd.read_csv('Housing.csv', index_col=0)
n = x.duplicated().sum()
print("S dòng trùng lp trong b d liu là:", n)
S dòng trùng lp trong b d liu là: 6
14
1.3 C.Trc Quan Hóa D Liu
1. Liu din tích (area) có ảnh hưởng đến giá nhà không?
import seaborn as sns
plt.figure(figsize=(8,6))
sns.regplot(data=x, x="area", y="price", scatter_kws={"alpha":0.5},
line_kws={"color":"red"})
plt.title("Đường hi quy gia din tích giá nhà", fontsize=14)
plt.xlabel("Din tích (sq.ft)")
plt.ylabel("Giá nhà")
plt.grid(alpha=0.3)
plt.show()
*Nhn xét:
- Din tích (area) mi quan h tuyến tính dương vi gnhà (price) (Càng tăng diện
tích, giá nhà càng có xu hướng tăng)
- Nhưng một s điểm ngoi l (outliers) nhà din tích lớn nhưng giá thp,
hoc din tích nh nhưng giá cao.
Như vây, din tích ca mt bất động sn mt trong nhng yếu t quan trng nht
ảnh hưởng đến giá tr của nó. Thông thường, giá nhà s tăng theo diện tích, nhà ln
hơn thường cung cp nhiu không gian sống hơn. Diện tích cũng quyết định kh năng
15
s dng tính linh hot ca bất động sn. Mt ngôi nhà din tích ln hơn thường
nhiều phòng hơn cung cp nhiu tiện nghi, do đó, người mua thường sn sàng
chi tr nhiều hơn cho những bất động sn này.
plt.figure(figsize=(10,5))
plt.subplot(1,2,1)
sns.histplot(x["area"], bins=20, kde=True, color="#4A90E2")
plt.title("Phân b din tích nhà")
plt.subplot(1,2,2)
sns.histplot(x["price"], bins=20, kde=True, color="#F5A623")
plt.title("Phân b giá nhà")
plt.tight_layout()
plt.show()
* Nhn xét:
- Phân b diện tích thường lch phi (nhiu ndin tích nh trung bình, ít nhà
din tích rt ln).
- Giá nhà cũng xu ớng tương tự, nghĩa là đa số nhà nm trong khong giá trung
bình, mt s ít cc k đắt.
Điu này gi ý rng d liu không hoàn toàn phân b đều.
16
2.Mi quan h gia giá tr bất đng sn (price) và mc đ hoàn thin ni tht
(furnishingstatus)
import pandas as pd
import matplotlib.pyplot as plt
x = pd.read_csv("Housing.csv")
avg_price_by_furnish =
x.groupby("furnishingstatus")["price"].mean().sort_values(ascending=False)
plt.figure(figsize=(8,6))
avg_price_by_furnish.plot(kind="bar", color=["#4A90E2", "#50E3C2",
"#F5A623"], edgecolor='k')
plt.title("Giá nhà trung bình theo tình trng ni tht", fontsize=14)
plt.xlabel("Tình trng ni tht", fontsize=12)
plt.ylabel("Giá nhà trung bình", fontsize=12)
for i, v in enumerate(avg_price_by_furnish):
plt.text(i, v, f"{v:,.0f}", ha='center', va='bottom',fontsize=10)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.show()
Nhìn sơ bộ: giá nhà trung bình tăng dần theo mức độ hoàn thin ni tht:
- unfurnished” : 4,013,831
- “semi-furnished”: 4,907,524
17
- “furnished”: 5,495,696
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
x = pd.read_csv("Housing.csv")
print(x["furnishingstatus"].value_counts())
print(x.groupby("furnishingstatus")["price"].describe())
furnishingstatus
semi-furnished 227
unfurnished 178
furnished 140
Name: count, dtype: int64
count mean std min 25% \
furnishingstatus
furnished 140.0 5.495696e+06 2.117857e+06 1750000.0 3876250.0
semi-furnished 227.0 4.907524e+06 1.596688e+06 1767150.0 3850000.0
unfurnished 178.0 4.013831e+06 1.720247e+06 1750000.0 2870000.0
50% 75% max
furnishingstatus
furnished 5075000.0 6650000.0 13300000.0
semi-furnished 4585000.0 5582500.0 12250000.0
unfurnished 3430000.0 4821250.0 10150000.0
* Nhn xét:
- Biểu đồ cho thy mức đ hoàn thin ca ni tht tác động đáng kể đến giá bán
trung bình ca nhà : “furnished” → “semi-furnished” → “unfurnished”.
- Chênh lch trung bình giữa “furnished” “unfurnished” thường 2030%, phn ánh
giá tr gia tăng của việc đầu tư nội tht.
Như vậy, kết qu này phn ánh quy lut chung ca th trưng: ngưi mua sn sàng tr
thêm cho s tin nghi kh năng sử dng ngay. Do đó, khi định giá nhà hoặc đầu
bất động sn, vic hoàn thin ni tht là yếu t tăng giá trị tài sản đáng kể.
18
3.Mi quan h gi giá tr bất đng sn (price) và s phòng ng (bedrooms), phòng
tm (bathrooms)
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv('Housing.csv')
display(df.head())
print(df[['price','bedrooms','bathrooms']].describe())
p
rice
a
rea
b
edrooms
ba
throoms
m
ainroad
gu
estroom
b
asement
hotwater
heating
aircondi
tioning
0
1
3300000
7
420
4
2
y
es
no
n
o
no
yes
1
1
2250000
8
960
4
4
y
es
no
n
o
no
yes
2
1
2250000
9
960
3
2
y
es
no
y
es
no
no
3
1
2215000
7
500
4
2
y
es
no
y
es
no
yes
4
1
1410000
7
420
4
1
y
es
ye
s
y
es
no
yes
price bedrooms bathrooms
count 5.450000e+02 545.000000 545.000000
mean 4.766729e+06 2.965138 1.286239
std 1.870440e+06 0.738064 0.502470
min 1.750000e+06 1.000000 1.000000
25% 3.430000e+06 2.000000 1.000000
50% 4.340000e+06 3.000000 1.000000
75% 5.740000e+06 3.000000 2.000000
max 1.330000e+07 6.000000 4.000000
plt.figure(figsize=(12,6))
sns.boxplot(x='bedrooms', y='price', hue='bathrooms', data=df)
plt.title('Giá nhà phân theo s phòng ng và s phòng tm')
19
plt.xlabel('S phòng ng')
plt.ylabel('Giá nhà')
plt.show()
* Nhn xét:
- Giá trung bình tăng khi số phòng ng và phòng tm tăng
- Trong cùng s phòng ng, nhà có nhiu phòng tm hơn thường có giá cao hơn.
- Ngoài ra, biểu đồ còn th hin outliers, d mt s nhà 3 phòng ng nhưng giá
rt cao do nhiu phòng tm hoc tin nghi khác.
Như vậy, s ng phòng ng và phòng tắm cũng yếu t quyết định giá nhà. Nhng
bất đng sn nhiu phòng ng thường được ưa chuộng n chúng phù hợp cho
gia đình lớn hoặc nhóm người chung. Tương tự, s ng phòng tắm cũng nh
hưởng đến s tin nghi và thoi mái của ngôi nhà. Thường thì, nhà có nhiu phòng ng
phòng tm s giá cao hơn so với những căn số ợng ít hơn. Người mua
thưng xem xét s ng phòng ng và phòng tm khi quyết định mua, vì điều này nh
hưởng trc tiếp đến chất lượng cuc sng và s thoi mái.
20
4. Mi tương quan giữa giá tr bất đng sn (price) và s hin din ca phòng
khách (guestroom)
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv('Housing.csv')
plt.figure(figsize=(8,6))
sns.boxplot(x='guestroom', y='price', data=df)
plt.xlabel('Có phòng khách (0=Không, 1=Có)')
plt.ylabel('Giá nhà')
plt.title('Mi liên h gia giá nhà và phòng khách')
plt.show()
mean_price = df.groupby('guestroom')['price'].mean()
print(mean_price)
guestroom
no 4.544546e+06
yes 5.792897e+06
Name: price, dtype: float64
* Nhn xét:

Preview text:

ỦY BAN NHÂN DÂN TP.HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC SÀI GÒN KHOA TOÁN ỨNG DỤNG
TIỂU LUẬN CUỐI KỲ ĐỀ TÀI:
ỨNG DỤNG KHAI PHÁ DỮ LIỆU TRONG PHÂN TÍCH BỘ
DỮ LIỆU GIÁ NHÀ VÀ DỰ ĐOÁN GIÁ NHÀ
Học phần: Nhập môn khoa học dữ liệu
Giảng viên hướng dẫn: TS.Lương Thị Hồng Cẩm
Sinh viên thực hiện: Nguyễn Thị Lan Anh- 3125580005
Ngành: Khoa học dữ liệu Lớp: DDU 1251 Khóa học: 2025-2029 1 MỤC LỤC
PHẦN MỞ ĐẦU ......................................................................................................... 4
1.1. Lời Mở Đầu .......................................................................................................... 4
1.2. Lý Do Chọn Đề Tài / Tính Cấp Thiết của Đề Tài .................................................. 4
1.3. Mục Đích và Mục Tiêu Nghiên Cứu ..................................................................... 5
1.4. Đối Tượng và Phạm Vi Nghiên Cứu của Đề Tài ................................................... 5
1.5. Phương Pháp Nghiên Cứu ..................................................................................... 6
1.6. Tổng quát nội dung chính của bài ......................................................................... 6
1.7. Ý Nghĩa Lý Luận và Thực Tiễn của Đề Tài .......................................................... 7
PHẦN NỘI DUNG ...................................................................................................... 7
1.1 A.Trích Xuất Dữ Liệu ............................................................................................ 7
1. Import các packages cần thiết như: numpy, pandas, matplotlib,
#scikit - learn,… và đọc dữ liệu từ file csv. (pd.read_csv) ................................ 7
2. Khảo sát các dòng đầu và cuối của dữ liệu. (.head(), .tail()) ............... 8
3. Xuất thông tin cơ bản về dữ liệu (.info()) .......................................... 9
4. Trích xuất các đặc điểm thống kê mô tả của bộ dữ liệu (.describe()).. 9
5. Xuất các cột của dữ liệu (.columns) ................................................ 10
6. Xuất thông tin về kích cỡ của bộ dữ liệu (.shape) ............................ 10
7. Khảo sát số giá trị của mỗi cột (.nunique()) ..................................... 10
1.2 B. Làm Sạch Dữ Liệu .......................................................................................... 11
1. Bỏ những cột không cần thiết trong phân tích (.drop… inplace = True,
axis =1), sau đó xuất lại kết quả đặc điểm thống kê mô tả của bộ dữ liệu sau
khi dữ liệu được tinh giản. ............................................................................. 11
2. Kiểm tra xem mỗi cột có bao nhiêu dữ liệu thiếu (.isnull().sum()) và
xử lý. ............................................................................................................. 13 2
3. Kiểm tra xem mỗi dòng có bao nhiêu dữ liệu trùng lặp
(.duplicated().sum()) và xử lý........................................................................ 13
1.3 C.Trực Quan Hóa Dữ Liệu ................................................................................... 14
1. Liệu diện tích (area) có ảnh hưởng đến giá nhà không? ................... 14
2.Mối quan hệ giữa giá trị bất động sản (price) và mức độ hoàn thiện
nội thất (furnishingstatus) .............................................................................. 16
3.Mối quan hệ giữ giá trị bất động sản (price) và số phòng ngủ
(bedrooms), phòng tắm (bathrooms) .............................................................. 18
4. Mối tương quan giữa giá trị bất động sản (price) và sự hiện diện của
phòng khách (guestroom) ............................................................................... 20
5. Mối tương quan giữa cấu trúc nhà (số tầng và tầng hầm) (stories and
basement) với giá bán (price) ......................................................................... 21
6. Mối quan hệ giữa hệ thống nước nóng (hotwaterheating) và điều hòa
tới giá nhà (airconditioning) ........................................................................... 24
7. Mối quan hệ giữa đường chính (mainroad), khu vực ưu tiên (prefarea),
bãi đậu xe (parking) với giá trị bất động sản (price) ....................................... 29
1.4.D. Ứng Dụng Học Máy ........................................................................................ 33
1.5. E. Đưa ra kết luận ............................................................................................... 35
1.6 F. Tài liệu tham khảo ........................................................................................... 36 3 PHẦN MỞ ĐẦU 1.1. Lời Mở Đầu
“Tổ ấm” luôn là nguồn cảm hứng vô tận, nơi sưởi ấm tâm hồn giữa nhịp sống hối hả.
Giữa những bộn bề, đôi khi ta chỉ khao khát được trở về chốn bình yên, nơi có thể gác
lại mọi lo toan và sống thật với chính mình. Một ngôi nhà ấm áp không chỉ là nơi che
mưa nắng, mà còn là không gian nuôi dưỡng cảm xúc và gắn kết yêu thương.
Thế nhưng, để chọn được một ngôi nhà phù hợp với sở thích, nhu cầu và điều kiện cá
nhân lại không hề dễ dàng. Trong bối cảnh thị trường bất động sản liên tục biến động,
hàng loạt dự án với thiết kế, mức giá và tiện ích đa dạng được tung ra, khiến người
mua đứng trước vô vàn lựa chọn. Cùng với đó, khối lượng dữ liệu khổng lồ về giá trị,
đặc điểm và xu hướng thị trường ngày càng gia tăng. Chính vì vậy, khai thác dữ liệu
(Data Mining) đã trở thành công cụ đắc lực, giúp các nhà đầu tư và doanh nghiệp bất
động sản phân tích, đánh giá và đưa ra quyết định đầu tư thông minh hơn.
Đề tài "Ứng Dụng Khai Phá Dữ Liệu trong Phân Tích Bộ Dữ Liệu về giá nhà"
không chỉ tập trung vào các kỹ thuật phân tích dữ liệu, mà còn khám phá cách mà
những phân tích này có thể hỗ trợ việc ra quyết định trong kinh doanh, nâng cao khả
năng cạnh tranh và đáp ứng nhu cầu ngày càng cao của khách hàng. Thông qua việc
ứng dụng các mô hình học máy và thống kê, chúng ta có thể rút ra những xu hướng và
dự đoán chính xác hơn về các phân lớp nhà ở và nhu cầu khác, từ đó giúp các chủ đầu
tư có sự quyết định chính xác đối với thị trường nhà ở.
1.2. Lý Do Chọn Đề Tài / Tính Cấp Thiết của Đề Tài
Đề tài này được chọn do thị trường nhà ở đang phải đối mặt với nhiều thách
thức, như quản lý chi phí đầu tư và tối ưu hóa trải nghiệm theo nhu cầu của khách
hàng. Khi nhu cầu khách hàng tăng cao, việc hiểu hành vi của họ và các yếu tố ảnh 4
hưởng đến quyết định xây dựng trở nên quan trọng. Khai thác dữ liệu cung cấp công
cụ phân tích mạnh mẽ, giúp các doanh nghiệp điều chỉnh chiến lược giá và cải thiện
dịch vụ. Dự đoán chính xác giá trị bất động sản không chỉ giúp cho khách hàng lựa
chọn một “tổ ấm” lý tưởng mà còn giúp các chủ đầu tư và doanh nghiệp tối ưu hóa chi
phí đầu tư và dự đoán được các thiết kế theo xu hướng hiện nay.
1.3. Mục Đích và Mục Tiêu Nghiên Cứu
Mục Đích Nghiên Cứu: Tìm hiểu và ứng dụng các phương pháp khai
thác dữ liệu để phân tích bộ dữ liệu giá nhà ở và dự đoán giá nhà, nhằm nâng cao hiệu
quả kinh doanh cho các doanh nghiệp và chủ đầu tư.
Mục Tiêu Tổng Quát: Đánh giá cách mà khai thác dữ liệu có thể cải
thiện khả năng dự đoán giá nhà ở và tối ưu hóa các dịch vụ trong thị trường bất động sản.
Mục Tiêu Cụ Thể:
1. Phân Tích Các Yếu Tố Ảnh Hưởng: Xác định và phân tích các
yếu tố liên đến giá nhà ở như diện tích, số phòng, nội thất, hệ thống nóng lạnh,..
2. Áp Dụng Mô Hình Dự Đoán: Sử dụng các mô hình thống kê và
máy học để dự đoán giá nhà trong tương lai dựa trên dữ liệu hiện có.
3. Đánh Giá Hiệu Quả Mô Hình: Đánh giá độ chính xác và tính khả thi của
các mô hình đã áp dụng trong thực tiễn.
1.4. Đối Tượng và Phạm Vi Nghiên Cứu của Đề Tài
Đối Tượng Nghiên Cứu: Các yếu tố liên quan đến như diện tích, số phòng, nội
thất, hệ thống nóng lạnh,.. 5
Phạm Vi Nghiên Cứu: Nghiên cứu sẽ tập trung vào các bộ dữ liệu giá nhà ở trong
một khoảng thời gian xác định
1.5. Phương Pháp Nghiên Cứu
Phương Pháp Nghiên Cứu Lý Thuyết:
Phân Tích – Tổng Hợp Lý Thuyết: Xem xét các lý thuyết và nghiên cứu trước
đó về khai thác dữ liệu trong thị trường bất động sản để xây dựng nền tảng cho nghiên cứu.
Phương Pháp Mô Hình Hóa: Tạo ra các mô hình dự đoán giá nhà ở dựa trên các
yếu tố đã được phân tích.
Phương Pháp Nghiên Cứu Thực Tiễn:
Khảo Sát và Thu Thập Dữ Liệu: Sử dụng các công cụ khảo sát và nguồn dữ liệu
công khai để thu thập thông tin liên quan như diện tích, số phòng, nội thất, hệ thống nóng lạnh,..
(Nguồn dữ liệu: Housing.csv )
Phân Tích Dữ Liệu Thực Tế: sử dụng các công cụ và phần mềm
phân tích dữ liệu như Python, R; thực hiện các bước khai phá dữ
liệu để phân tích, trình bày kết quả từ bộ dữ liệu và đưa ra các kết luận có giá trị.
1.6. Tổng quát nội dung chính của bài
1. A Trích xuất dữ liệu
2. B Làm sạch dữ liệu
3. C Trực quan hóa dữ liệu
4. D Ứng dụng học máy
5. E Đưa ra kết luận 6
1.7. Ý Nghĩa Lý Luận và Thực Tiễn của Đề Tài
Nghiên cứu này làm phong phú lý thuyết về khai thác dữ liệu trong thị trường
bất động sản và cung cấp ứng dụng thực tiễn hữu ích. Kết quả giúp các nhà đầu tư, các
doanh nghiệp cải thiện chiến lược xây dựng, tối ưu hóa dịch vụ và nâng cao sự hài
lòng của khách hàng, đồng thời tiết kiệm chi phí và tăng cường khả năng cạnh tranh PHẦN NỘI DUNG
Sinh viên: Nguyễn Thị Lan Anh- 3125580005
1.1 A.Trích Xuất Dữ Liệu
1. Import các packages cần thiết như: numpy, pandas, matplotlib, #scikit -
learn,… và đọc dữ liệu từ file csv. (pd.read_csv) import pandas as pd
data = pd.read_csv("Housing.csv") print(data)
price area bedrooms bathrooms stories mainroad guestroom basement \
0 13300000 7420 4 2 3 yes no no
1 12250000 8960 4 4 4 yes no no
2 12250000 9960 3 2 2 yes no yes
3 12215000 7500 4 2 2 yes no yes
4 11410000 7420 4 1 2 yes yes yes
.. ... ... ... ... ... ... ... ...
540 1820000 3000 2 1 1 yes no yes
541 1767150 2400 3 1 1 no no no
542 1750000 3620 2 1 1 yes no no
543 1750000 2910 3 1 1 no no no
544 1750000 3850 3 1 2 yes no no
hotwaterheating airconditioning parking prefarea furnishingstatus 0 no yes 2 yes furnished 1 no yes 3 no furnished 2 no no 2 yes semi-furnished 3 no yes 3 yes furnished 7 4 no yes 2 no furnished .. ... ... ... ... ... 540 no no 2 no unfurnished 541 no no 0 no semi-furnished 542 no no 0 no unfurnished 543 no no 0 no furnished 544 no no 0 no unfurnished [545 rows x 13 columns]
2. Khảo sát các dòng đầu và cuối của dữ liệu. (.head(), .tail()) import pandas as pd
x = pd.read_csv('Housing.csv', index_col=0)
print("5 dòng đầu tiên:") print(x.head())
print("\n5 dòng cuối cùng:") print(x.tail()) 5 dòng đầu tiên:
area bedrooms bathrooms stories mainroad guestroom basement \ price 13300000 7420 4 2 3 yes no no 12250000 8960 4 4 4 yes no no
12250000 9960 3 2 2 yes no yes
12215000 7500 4 2 2 yes no yes
11410000 7420 4 1 2 yes yes yes
hotwaterheating airconditioning parking prefarea furnishingstatus price
13300000 no yes 2 yes furnished
12250000 no yes 3 no furnished
12250000 no no 2 yes semi-furnished
12215000 no yes 3 yes furnished
11410000 no yes 2 no furnished 5 dòng cuối cùng:
area bedrooms bathrooms stories mainroad guestroom basement \ price 1820000 3000 2 1 1 yes no yes 1767150 2400 3 1 1 no no no 1750000 3620 2 1 1 yes no no 1750000 2910 3 1 1 no no no 1750000 3850 3 1 2 yes no no
hotwaterheating airconditioning parking prefarea furnishingstatus 8 price
1820000 no no 2 no unfurnished
1767150 no no 0 no semi-furnished
1750000 no no 0 no unfurnished 1750000 no no 0 no furnished
1750000 no no 0 no unfurnished
3. Xuất thông tin cơ bản về dữ liệu (.info()) import pandas as pd
x = pd.read_csv('Housing.csv')
print("=== Thông tin cơ bản về dữ liệu trong Housing.csv ===") x.info()
=== Thông tin cơ bản về dữ liệu trong Housing.csv ===
RangeIndex: 545 entries, 0 to 544
Data columns (total 13 columns):
# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 price 545 non-null int64 1 area 545 non-null int64
2 bedrooms 545 non-null int64
3 bathrooms 545 non-null int64 4 stories 545 non-null int64
5 mainroad 545 non-null object
6 guestroom 545 non-null object
7 basement 545 non-null object
8 hotwaterheating 545 non-null object
9 airconditioning 545 non-null object
10 parking 545 non-null int64
11 prefarea 545 non-null object
12 furnishingstatus 545 non-null object dtypes: int64(6), object(7) memory usage: 55.5+ KB
4. Trích xuất các đặc điểm thống kê mô tả của bộ dữ liệu (.describe()) import pandas as pd
x = pd.read_csv('Housing.csv', index_col=0) h=x.describe() print(h)
area bedrooms bathrooms stories parking
count 545.000000 545.000000 545.000000 545.000000 545.000000 9
mean 5150.541284 2.965138 1.286239 1.805505 0.693578
std 2170.141023 0.738064 0.502470 0.867492 0.861586
min 1650.000000 1.000000 1.000000 1.000000 0.000000
25% 3600.000000 2.000000 1.000000 1.000000 0.000000
50% 4600.000000 3.000000 1.000000 2.000000 0.000000
75% 6360.000000 3.000000 2.000000 2.000000 1.000000
max 16200.000000 6.000000 4.000000 4.000000 3.000000
5. Xuất các cột của dữ liệu (.columns) import pandas as pd
x = pd.read_csv('Housing.csv', index_col=0) he=x.columns print(he)
Index(['area', 'bedrooms', 'bathrooms', 'stories', 'mainroad', 'guestroom',
'basement', 'hotwaterheating', 'airconditioning', 'parking', 'prefarea',
'furnishingstatus'], dtype='object')
6. Xuất thông tin về kích cỡ của bộ dữ liệu (.shape) import pandas as pd
x = pd.read_csv('Housing.csv', index_col=0) li=x.shape
print(f'Kích cỡ của bộ dữ liệu',li)
Kích cỡ của bộ dữ liệu (545, 12)
7. Khảo sát số giá trị của mỗi cột (.nunique()) import pandas as pd
x = pd.read_csv('Housing.csv', index_col=0) be=x.nunique() print(be) area 284 bedrooms 6 bathrooms 4 stories 4 mainroad 2 guestroom 2 basement 2 hotwaterheating 2 10 airconditioning 2 parking 4 prefarea 2 furnishingstatus 3 dtype: int64
1.2 B. Làm Sạch Dữ Liệu
1. Bỏ những cột không cần thiết trong phân tích (.drop… inplace = True, axis =1),
sau đó xuất lại kết quả đặc điểm thống kê mô tả của bộ dữ liệu sau khi dữ liệu được tinh giản. import pandas as pd # Đọc dữ liệu
df = pd.read_csv('Housing.csv', index_col=0)
# Giữ lại những cột giá trị ảnh hưởng tới giá trị bất động sản
cols_to_keep = ['area', 'bedrooms', 'bathrooms', 'stories',
'parking','mainroad', 'guestroom', 'basement', 'hotwaterheating',
'airconditioning','prefarea', 'furnishingstatus']
df = df[cols_to_keep].reset_index()
# Thống kê mô tả các cột số
print("Đặc điểm thống kê mô tả của bộ dữ liệu tinh giản:") print(df.describe())
# Thống kê giá trị phân loại
print("\nTần suất các biến phân loại:")
for col in df.select_dtypes(include='object').columns:
print(f"\n{col}:\n", df[col].value_counts())
Đặc điểm thống kê mô tả của bộ dữ liệu tinh giản:
price area bedrooms bathrooms stories \
count 5.450000e+02 545.000000 545.000000 545.000000 545.000000
mean 4.766729e+06 5150.541284 2.965138 1.286239 1.805505
std 1.870440e+06 2170.141023 0.738064 0.502470 0.867492
min 1.750000e+06 1650.000000 1.000000 1.000000 1.000000
25% 3.430000e+06 3600.000000 2.000000 1.000000 1.000000
50% 4.340000e+06 4600.000000 3.000000 1.000000 2.000000
75% 5.740000e+06 6360.000000 3.000000 2.000000 2.000000
max 1.330000e+07 16200.000000 6.000000 4.000000 4.000000 parking count 545.000000 mean 0.693578 11 std 0.861586 min 0.000000 25% 0.000000 50% 0.000000 75% 1.000000 max 3.000000
Tần suất các biến phân loại: mainroad: mainroad yes 468 no 77 Name: count, dtype: int64 guestroom: guestroom no 448 yes 97 Name: count, dtype: int64 basement: basement no 354 yes 191 Name: count, dtype: int64 hotwaterheating: hotwaterheating no 520 yes 25 Name: count, dtype: int64 airconditioning: airconditioning no 373 yes 172 Name: count, dtype: int64 prefarea: prefarea no 417 yes 128 Name: count, dtype: int64 furnishingstatus: furnishingstatus semi-furnished 227 12 unfurnished 178 furnished 140 Name: count, dtype: int64
2. Kiểm tra xem mỗi cột có bao nhiêu dữ liệu thiếu (.isnull().sum()) và xử lý. import pandas as pd
x = pd.read_csv('Housing.csv', index_col=0) c=x.isnull().sum()
print("Số lượng dữ liệu thiếu trong mỗi cột") Print©
Số lượng dữ liệu thiếu trong mỗi cột area 0 bedrooms 0 bathrooms 0 stories 0 mainroad 0 guestroom 0 basement 0 hotwaterheating 0 airconditioning 0 parking 0 prefarea 0 furnishingstatus 0 dtype: int64
3. Kiểm tra xem mỗi dòng có bao nhiêu dữ liệu trùng lặp (.duplicated().sum()) và xử lý. import pandas as pd
x = pd.read_csv('Housing.csv', index_col=0) n = x.duplicated().sum()
print("Số dòng trùng lặp trong bộ dữ liệu là:", n)
Số dòng trùng lặp trong bộ dữ liệu là: 6 13
1.3 C.Trực Quan Hóa Dữ Liệu
1. Liệu diện tích (area) có ảnh hưởng đến giá nhà không? import seaborn as sns plt.figure(figsize=(8,6))
sns.regplot(data=x, x="area", y="price", scatter_kws={"alpha":0.5}, line_kws={"color":"red"})
plt.title("Đường hồi quy giữa diện tích và giá nhà", fontsize=14)
plt.xlabel("Diện tích (sq.ft)") plt.ylabel("Giá nhà") plt.grid(alpha=0.3) plt.show() *Nhận xét:
- Diện tích (area) có mối quan hệ tuyến tính dương với giá nhà (price) (Càng tăng diện
tích, giá nhà càng có xu hướng tăng)
- Nhưng có một số điểm ngoại lệ (outliers) — nhà có diện tích lớn nhưng giá thấp,
hoặc diện tích nhỏ nhưng giá cao.
Như vây, diện tích của một bất động sản là một trong những yếu tố quan trọng nhất
ảnh hưởng đến giá trị của nó. Thông thường, giá nhà sẽ tăng theo diện tích, vì nhà lớn
hơn thường cung cấp nhiều không gian sống hơn. Diện tích cũng quyết định khả năng 14
sử dụng và tính linh hoạt của bất động sản. Một ngôi nhà có diện tích lớn hơn thường
có nhiều phòng hơn và cung cấp nhiều tiện nghi, do đó, người mua thường sẵn sàng
chi trả nhiều hơn cho những bất động sản này. plt.figure(figsize=(10,5)) plt.subplot(1,2,1)
sns.histplot(x["area"], bins=20, kde=True, color="#4A90E2")
plt.title("Phân bố diện tích nhà") plt.subplot(1,2,2)
sns.histplot(x["price"], bins=20, kde=True, color="#F5A623")
plt.title("Phân bố giá nhà") plt.tight_layout() plt.show() * Nhận xét:
- Phân bố diện tích thường lệch phải (nhiều nhà có diện tích nhỏ – trung bình, ít nhà diện tích rất lớn).
- Giá nhà cũng có xu hướng tương tự, nghĩa là đa số nhà nằm trong khoảng giá trung
bình, một số ít cực kỳ đắt.
Điều này gợi ý rằng dữ liệu không hoàn toàn phân bố đều. 15
2.Mối quan hệ giữa giá trị bất động sản (price) và mức độ hoàn thiện nội thất (furnishingstatus) import pandas as pd
import matplotlib.pyplot as plt
x = pd.read_csv("Housing.csv") avg_price_by_furnish =
x.groupby("furnishingstatus")["price"].mean().sort_values(ascending=False) plt.figure(figsize=(8,6))
avg_price_by_furnish.plot(kind="bar", color=["#4A90E2", "#50E3C2", "#F5A623"], edgecolor='k')
plt.title("Giá nhà trung bình theo tình trạng nội thất", fontsize=14)
plt.xlabel("Tình trạng nội thất", fontsize=12)
plt.ylabel("Giá nhà trung bình", fontsize=12)
for i, v in enumerate(avg_price_by_furnish):
plt.text(i, v, f"{v:,.0f}", ha='center', va='bottom',fontsize=10)
plt.grid(axis='y', linestyle='--', alpha=0.7) plt.show()
Nhìn sơ bộ: giá nhà trung bình tăng dần theo mức độ hoàn thiện nội thất:
- “unfurnished” : 4,013,831
- “semi-furnished”: 4,907,524 16 - “furnished”: 5,495,696 import pandas as pd
import matplotlib.pyplot as plt import seaborn as sns
x = pd.read_csv("Housing.csv")
print(x["furnishingstatus"].value_counts())
print(x.groupby("furnishingstatus")["price"].describe()) furnishingstatus semi-furnished 227 unfurnished 178 furnished 140 Name: count, dtype: int64 count mean std min 25% \ furnishingstatus
furnished 140.0 5.495696e+06 2.117857e+06 1750000.0 3876250.0
semi-furnished 227.0 4.907524e+06 1.596688e+06 1767150.0 3850000.0
unfurnished 178.0 4.013831e+06 1.720247e+06 1750000.0 2870000.0 50% 75% max furnishingstatus
furnished 5075000.0 6650000.0 13300000.0
semi-furnished 4585000.0 5582500.0 12250000.0
unfurnished 3430000.0 4821250.0 10150000.0 * Nhận xét:
- Biểu đồ cho thấy mức độ hoàn thiện của nội thất có tác động đáng kể đến giá bán
trung bình của nhà ở: “furnished” → “semi-furnished” → “unfurnished”.
- Chênh lệch trung bình giữa “furnished” và “unfurnished” thường 20–30%, phản ánh
giá trị gia tăng của việc đầu tư nội thất.
Như vậy, kết quả này phản ánh quy luật chung của thị trường: người mua sẵn sàng trả
thêm cho sự tiện nghi và khả năng sử dụng ngay. Do đó, khi định giá nhà hoặc đầu tư
bất động sản, việc hoàn thiện nội thất là yếu tố tăng giá trị tài sản đáng kể. 17
3.Mối quan hệ giữ giá trị bất động sản (price) và số phòng ngủ (bedrooms), phòng tắm (bathrooms) import pandas as pd import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv('Housing.csv') display(df.head())
print(df[['price','bedrooms','bathrooms']].describe()) p a b ba s m gu b hotwater aircondi rice
rea edrooms throoms tories ainroad estroom asement heating tioning 0 1 7 y n 4 2 3 no no yes 3300000 420 es o 1 1 8 y n 4 4 4 no no yes 2250000 960 es o 2 1 9 y y 3 2 2 no no no 2250000 960 es es 3 1 7 y y 4 2 2 no no yes 2215000 500 es es 4 1 7 y ye y 4 1 2 no yes 1410000 420 es s es price bedrooms bathrooms
count 5.450000e+02 545.000000 545.000000
mean 4.766729e+06 2.965138 1.286239
std 1.870440e+06 0.738064 0.502470
min 1.750000e+06 1.000000 1.000000
25% 3.430000e+06 2.000000 1.000000
50% 4.340000e+06 3.000000 1.000000
75% 5.740000e+06 3.000000 2.000000
max 1.330000e+07 6.000000 4.000000 plt.figure(figsize=(12,6))
sns.boxplot(x='bedrooms', y='price', hue='bathrooms', data=df)
plt.title('Giá nhà phân theo số phòng ngủ và số phòng tắm') 18
plt.xlabel('Số phòng ngủ') plt.ylabel('Giá nhà') plt.show() * Nhận xét:
- Giá trung bình tăng khi số phòng ngủ và phòng tắm tăng
- Trong cùng số phòng ngủ, nhà có nhiều phòng tắm hơn thường có giá cao hơn.
- Ngoài ra, biểu đồ còn thể hiện rõ outliers, ví dụ một số nhà 3 phòng ngủ nhưng giá
rất cao do nhiều phòng tắm hoặc tiện nghi khác.
Như vậy, số lượng phòng ngủ và phòng tắm cũng là yếu tố quyết định giá nhà. Những
bất động sản có nhiều phòng ngủ thường được ưa chuộng hơn vì chúng phù hợp cho
gia đình lớn hoặc nhóm người ở chung. Tương tự, số lượng phòng tắm cũng ảnh
hưởng đến sự tiện nghi và thoải mái của ngôi nhà. Thường thì, nhà có nhiều phòng ngủ
và phòng tắm sẽ có giá cao hơn so với những căn có số lượng ít hơn. Người mua
thường xem xét số lượng phòng ngủ và phòng tắm khi quyết định mua, vì điều này ảnh
hưởng trực tiếp đến chất lượng cuộc sống và sự thoải mái. 19
4. Mối tương quan giữa giá trị bất động sản (price) và sự hiện diện của phòng khách (guestroom) import pandas as pd import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv('Housing.csv') plt.figure(figsize=(8,6))
sns.boxplot(x='guestroom', y='price', data=df)
plt.xlabel('Có phòng khách (0=Không, 1=Có)') plt.ylabel('Giá nhà')
plt.title('Mối liên hệ giữa giá nhà và phòng khách') plt.show()
mean_price = df.groupby('guestroom')['price'].mean() print(mean_price) guestroom no 4.544546e+06 yes 5.792897e+06 Name: price, dtype: float64 * Nhận xét: 20