๊ธฐ์ด ํ๋ก์ ํธ : ์ํ ๊ณ ๊ฐ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ ์๋น์ค ๋ถ์
๐ ์๊ฐํ - ์๋์ด ๋์ ๊ณ ๊ฐ(VIP)๊ณ ๊ฐ์ ์ก์๋ผ!
3. VIP ๊ณ ๊ฐ๋ค์ ์์น ํํฉ ํ์
VIP ๊ณ ๊ฐ๋ค์ ํฌ์๋ฅผ ๋ง์ด ํ๋์ง ์๋๋ฉด ์์น๋ฅผ ํ๋ ํธ์ธ์ง ์์๋ณด์.
โ VIP ๊ณ ๊ฐ๋ค์ ์๋์ด ๋ง์ผ๋ฉด ํฌ์๋ฅผ ๋ง์ด ํ๋๊ฐ?
# ์ฌ์ด์ฆ ์ง์
plt.figure(figsize=(16,9))
# ์ฐ์ ๋ ๊ทธ๋ฆฌ๊ธฐ
sns.scatterplot(data = stat, x='Monthly_Income', y='Amount_invested_monthly', hue = 'age_group', palette = green_palette2, alpha= 0.5)
# ์ ๋ชฉ ๋ถ์ด๊ธฐ
plt.title('Regression Analysis of Monthly Income - Amount of Monthly Investment(VIP)')
# age_group๋ณ ํ๊ท์ ํ์ํ๊ธฐ
grouped = stat.groupby('age_group')
for age_group, group_data in grouped:
z = np.polyfit(group_data['Monthly_Income'], group_data['Amount_invested_monthly'], 1)
slope = round(z[0], 4)
intercept = round(z[1], 2)
plt.text(1000000, 1300 - age_group*5, f"For age_group {age_group}: y = {slope}x + {intercept}")
- ๊ธฐ์ธ๊ธฐ์ ๊ฐ์ด ๋ชจ๋ ๊ทธ๋ฃน์์ ๋งค์ฐ ์๊ฑฐ๋ 0์ ๊ฐ๊น๊ธฐ ๋๋ฌธ์, ์ฃผ์ด์ง ๋ฐ์ดํฐ์์๋ ์๋ณ ์๋๊ณผ ์๋ณ ์ ์ถ์ก ์ฌ์ด์ ๊ฐํ ์ ํ ๊ด๊ณ๊ฐ ์๋ค๊ณ ๋ณผ ์ ์๋ค. VIP ๊ทธ๋ฃน์์๋ ์๋ณ ์๋๊ณผ ์๋ณ ์ ์ถ์ก ๊ฐ์ ์ง์ ์ ์ธ ๊ด๋ จ์ฑ์ด ๋ฎ๋ค.
# else ๊ทธ๋ฃน๋ง ๋ฌถ์ด์ stat ๋ฐ์ดํฐ๋ก
stat = investment_stat[investment_stat['salary_group']=='else']
# ์ฐ์ ๋ ๊ทธ๋ฆฌ๊ธฐ
sns.scatterplot(data = stat, x='Monthly_Income', y='Amount_invested_monthly', hue = 'age_group', palette = green_palette2, alpha= 0.5)
# ์ ๋ชฉ ๋ถ์ด๊ธฐ
plt.title('Regression Analysis of Monthly Income - Amount of Monthly Investment(else)')
# ํ๊ท์ ๊ทธ๋ํ์ ํํํ๊ธฐ
grouped = stat.groupby('age_group')
for age_group, group_data in grouped:
z = np.polyfit(group_data['Monthly_Income'], group_data['Amount_invested_monthly'], 1)
slope = round(z[0], 4)
intercept = round(z[1], 2)
plt.text(2500, 1300 - age_group*5, f"For age_group {age_group}: y = {slope}x + {intercept}")
- ๊ทธ๋ฌ๋ ํน์ดํ ์ ์, else ๊ทธ๋ฃน์ ๊ฒฝ์ฐ VIP ๊ณ ๊ฐ๋ค์ ๋นํด ์๋ณ ์๋๊ณผ ์ ์ถ์ก๊ฐ์ ์ ํ์ฑ์ด ๋๊ณ ์์ ๊ด๊ณ๋ฅผ ๋๊ณ ์๊ณ VIP ๊ณ ๊ฐ๋ค์ ๊ฒฝ์ฐ ์ ํ์ฑ์ ๋ฎ์ง๋ง ์๋ณ ์๋์ก๊ณผ ์ ์ถ์ก์ด ์์ ์ ํ๊ด๊ณ๋ผ๋ ๊ฒ์ด๋ค.
โ ์๋ณ ์์น๊ธ์ 50๋๊ฐ ๊ฐ์ฅ ๋๋ค.
# 'salary_group'์ median ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ ์์๋ฅผ ์์ฑํฉ๋๋ค.
median_order = stat.groupby('age_group')['Monthly_Balance'].median().sort_values(ascending=False).index
# median ๊ฐ์ ๋ฐ๋ผ ์ ๋ ฌ๋ ์์๋ก boxplot์ ๊ทธ๋ฆฝ๋๋ค.
sns.boxplot(data=stat, x='age_group', y='Monthly_Balance', palette=green_palette2, order=median_order)
๐ฑ๏ธ PPT ๋ง๋ค๊ธฐ