์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- TIL
- ์๋์ฐ ํจ์
- sql
- ๋ฐ์ดํฐ๋ถ์
- ์ฝ๋ฉ
- ํ์ด์ฌ
- sqld
- ์ฝ๋์นดํ
- ๋ ํ
- ๋ฐ์ดํฐ ๋ถ์
- ์บ๊ธ
- ๋ง์ผํ
- ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋จธ์ ๋ฌ๋
- Today
- Total
SQL & Python Study
[D+27][ํ๋ก์ ํธ #2-1] ๋กค(LoL) ์ค๋ธ์ ํธ, ํฌ/๋ฐ์ค์ ์นํจ์ ์๊ด ๊ด๊ณ ๋ณธ๋ฌธ
[D+27][ํ๋ก์ ํธ #2-1] ๋กค(LoL) ์ค๋ธ์ ํธ, ํฌ/๋ฐ์ค์ ์นํจ์ ์๊ด ๊ด๊ณ
๊น์ฎ์ 2024. 6. 21. 13:24๐ INDEX
01. ์ฌ์ฉํ ๋ฐ์ดํฐ ํ์ธ
02. ํ์ํ ์ปฌ๋ผ ์์ฑ
03. ๋ด๋น ๋ถ์ ์ฃผ์ ์ ์ ๋ฐ 1์ฐจ EDA
- ์ค๋ธ์ ํธ์ ์นํจ์ ์๊ด๊ด๊ณ ๋ถ์
- ํฌ, ๋ฐ์ค์ ์นํจ์ ๊ด๊ณ ๋ถ์
๐ ํ๋ก์ ํธ ๊ฐ์
01. ์ฌ์ฉํ ๋ฐ์ดํฐ ํ์ธ
- info(), describe() ๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ํ์ธ.
- ์ด 180928๊ฐ์ ๋ฐ์ดํฐ๋ก 49๊ฐ ์ปฌ๋ผ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์.
- ๊ฒฐ์ธก์น๋ ์์์ผ๋, 900์ด ์ด์ ์ ๊ฒ์์ด ๋๋ ๊ฒฝ๊ธฐ๋ค์ด ์กด์ฌ(9496๊ฑด)
- ๊ฒ์ ๊ท์น์ 15๋ถ(900์ด) ์ด์ ์ ๊ธฐ๊ถ์ ์งํํ ์ ์๊ธฐ ๋๋ฌธ์, ํน์ด ํ๋ ์ด๋ก ๊ฐ์ฃผ
- ์ถํ ๊ฒ์ ํ๋ ์ด ์๊ฐ๋ณ๋ก ์ง๋จ์ ๋๋์ด ํ์ธํ๋ ๊ฒ์ผ๋ก ๋ ผ์.
- ๊ฐ ํ๋ ์ด์ด์ ํฌ ์, ๋ฐ์ค ์, ๋ฐ๋ฏธ์ง ํผํด๋, ๊ณจ๋ ์ด๋, ์์ผ ์ ์, ๊ตฐ์ค ์ ์ด ์๊ฐ(์ด)์ ์ ์ ์์์ผ๋, ์ฑํผ์ธ์ ํ์ ํ ์ ์์์. ํ๋ ์ด์ด ๋ํ 1~5๋ก ๋๋ค ํ๊ฒ ๋ค์ด๊ฐ ์์ด์ ์ฑํผ์ธ์ ์ ์ถํ๊ธฐ ์ด๋ ค์ ๋ ๋ฐ์ดํฐ.
02. ํ์ํ ์ปฌ๋ผ ์์ฑ
- ๋ฐ์ดํฐ ๋ถ์์ ํ์ํ ์ปฌ๋ผ ์ถ๊ฐ ์์ฑ
*ํ์๋ค๋ผ๋ฆฌ ๋์ผํ ๋ณ์์ ์ปฌ๋ผ์ ์ ์งํ ์ ์๋๋ก ๊ตฌ๊ธ ์คํ๋ ๋ ์ํธ๋ฅผ ํ์ฉํด ์ฝ๋๋ฅผ ๊ณต์ ํ์ด์.
03. ๋ด๋น ๋ถ์ ์ฃผ์ ์ ์ ๋ฐ EDA
โ ์ค๋ธ์ ํธ์ ์นํจ์ ์๊ด๊ด๊ณ ๋ถ์ - ํํธ๋งต(Heatmap)
- ๊ฐ ์์ธ ๊ฐ์ ์๊ด๊ณ์๋ฅผ ๊ตฌํ๊ณ ํํธ๋งต์ผ๋ก ์๊ฐํ ํด์ฃผ์์ต๋๋ค.
ํํธ๋งต์ ํตํด์ ์๊ฒ ๋ ๋ด์ฉ์ ๋ ธ์ ์ ์ ๋ฆฌํด์ ํ์๋ค์๊ฒ ๊ณต์ ํ์ด์! - sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
- annot=True ํํธ๋งต ์ ์ ๊ฐ ํ์ ์ฌ๋ถ
- cmap='coolwarm' ํํธ๋งต ์์ ํ๋ ํธ ์ง์
# ์ฒซ ๋ฒ์งธ ์ค๋ธ์ ํธ ํ๋ ์ฌ๋ถ์ ์นํจ ์๊ด๊ด๊ณ - ํํธ๋งต
first_object_win_df = df[['win','firstTower', 'firstInhibitor', 'firstBaron', 'firstDragon', 'firstRiftHerald']]
correlation_matrix = first_object_win_df.corr()
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('First object and Win correlation Matrix Heatmap')
plt.show()
# ์ค๋ธ์ ํธ์ ์นํจ์ ์๊ด๊ด๊ณ ํํธ๋งต
object_win_df = df[['win','firstTower', 'firstInhibitor', 'firstBaron', 'firstDragon', 'firstRiftHerald', 'towerKills', 'inhibitorKills', 'baronKills', 'dragonKills', 'riftHeraldKills']]
object_correlation_matrix = item_win_df.corr()
plt.figure(figsize=(10, 8))
sns.heatmap(object_correlation_matrix, annot=True, cmap='coolwarm')
plt.title('Object and Win correlation Matrix Heatmap')
plt.show()
โ ํฌ, ๋ฐ์ค์ ์นํจ์ ๊ด๊ณ ๋ถ์ - ๋ฐ์ดํฐ ์๊ฐํ
- ํฌ, ๋ฐ์ค์ ์นํจ ๊ด๊ณ๋ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์๊ฐํํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ํ์ ํ์ด์.
- ๋ฐ์ค ํ๋กฏ - ํฌ, ๋ฐ์ค์ ์ด์์น๊ฐ ํ ํ๋ ๊ฒ์ด ์๋ ์ค ์ง์ด์ ธ ์์ด ๋ณ๋ ์ญ์ X
- ํ์คํ ๊ทธ๋จ - ํฌ ์์ ๋ฐ์ค ์ ๋ชจ๋ 10~30 ๊ตฌ๊ฐ์ ๊ฐ์ฅ ๋ง์ด ๋ถํฌํ๊ณ ์์ผ๋ฉฐ, ์ฝ๊ฐ ์น์ฐ์น ์ ๊ท ๋ถํฌ ๋ชจ์์ ๋ฐ๋ฆ.
- ํํธ๋งต & ๋ง๋ ๊ทธ๋ํ - ํฌ ์๋ 0.51 ์์ ์๊ด๊ด๊ณ, ๋ฐ์ค ์๋ - 0.5 ์์ ์๊ด๊ด๊ณ๋ฅผ ๊ฐ์์ ํ์ธ
- ํผ๋ฒ ํ
์ด๋ธ
- ์ ์ฒด ํฌ ์(`total_kills`)๊ฐ 20 ์ดํ์ธ ๊ตฌ๊ฐ์์๋ ์น๋ฆฌํ ํ๋ฅ ์ด 32%๋ก ๋ฎ์.
ํนํ, ํฌ ์๊ฐ 10 ๋ฏธ๋ง์ธ ๊ฒฝ์ฐ์ ์น๋ฆฌํ ํ๋ฅ ์ด 0.09%๋ก ๊ต์ฅํ ๋ฎ์์ง. - ๋ฐ๋ฉด, ํน์ดํ๋ ์ ์ ์ ์ฒด ํฌ์(`total_kills`) 31 ์ด์ ๊ตฌ๊ฐ๋ถํฐ๋ ์ด๊ธธ ํ๋ฅ ์ด 80% ๋๋ก ํฌ๊ฒ ์ฐจ์ด ๋์ง ์์.
- ์ ์ฒด ํฌ ์(`total_kills`)๊ฐ 20 ์ดํ์ธ ๊ตฌ๊ฐ์์๋ ์น๋ฆฌํ ํ๋ฅ ์ด 32%๋ก ๋ฎ์.
# ๋ฐ์คํ๋กฏ - ์ด์์น ํ์ธ
sns.boxplot(y='total_kills', data=df)
plt.title('Total kills box plot')
sns.boxplot(y='total_deaths', data=df, color='green')
plt.title('Total deaths box plot')
# ํ์คํ ๊ทธ๋จ - ๋ถํฌ ํ์ธ
sns.histplot(x='total_kills', data=df)
plt.title('Total kills histogram')
sns.histplot(x='total_deaths', data=df, color='green')
plt.title('Total deaths histogram')
# ํฌ์์ ์นํจ ๋ง๋ ๊ทธ๋ํ (ํ๋์ ๊ทธ๋ํ)
sns.barplot(x='total_kills', y='win', data=df)
plt.title('Total kills and win barplot')
plt.xticks(rotation=45) # x์ถ ๋ผ๋ฒจ์ 45๋ ํ์
plt.show()
sns.barplot(x='win', y='total_kills', data=df)
plt.title('Total kills and win barplot')
plt.show()
# ๋ฐ์ค ์์ ์นํจ ๋ง๋ ๊ทธ๋ํ (์ด๋ก์)
sns.barplot(x='total_deaths', y='win', data=df, color='green')
plt.title('total_deaths and win barplot')
plt.show()
sns.barplot(x='win', y='total_deaths', data=df, color='green')
plt.title('total_deaths and win barplot')
plt.show()
# ์ ์ฒด ํฌ์์ ๋ฐ์ค ์, ์นํจ ๊ฐ์ ์๊ด๊ด๊ณ ๋ถ์
kill_death_win_df = df[['win','total_kills', 'total_deaths']]
correlation_matrix = kill_death_win_df.corr()
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('Kill, Death and Win correlation Matrix Heatmap')
plt.show()
# total_kills ์์ ๋ฐ๋ฅธ ํด๋์ค ๋ถ๋ฅ ํจ์ ์์ฑ
def assign_class(kills):
if kills <= 10:
return '00-10 ๊ตฌ๊ฐ'
elif kills <= 20:
return '11-20 ๊ตฌ๊ฐ'
elif kills <= 30:
return '21-30 ๊ตฌ๊ฐ'
elif kills <= 40:
return '31-40 ๊ตฌ๊ฐ'
elif kills <= 50:
return '41-50 ๊ตฌ๊ฐ'
elif kills <= 60:
return '51-60 ๊ตฌ๊ฐ'
else:
return '70 ์ด์ ๊ตฌ๊ฐ'
# ํฌ ์์ ๋ฐ๋ฅธ ํด๋์ค ํ ๋น ์นผ๋ผ ์์ฑ ๋ฐ ํผ๋ฒ ํ
์ด๋ธ ์ ์
df['kills_class'] = df['total_kills'].apply(assign_class)
df.pivot_table(index='kills_class', values=['win','total_deaths'], aggfunc={'count', 'mean'}).sort_index().round(2)
[ Today I Learned ]
ํ์๋ค๊ณผ ์ ํํ ๋๋ฒ์งธ ํ๋ก์ ํธ ์ฃผ์ ๋ <๋ฆฌ๊ทธ ์ค๋ธ ๋ ์ ๋(LOL) ๋ฐธ๋ฐ์ค ๋ถ์>์ ๋๋ค!
๋ฐ์ดํฐ ๋ถ์์ ๊ธฐ๋ฐ์ผ๋ก ์นํจ ์์ธก ๋ถ๋ฅ ๋ชจ๋ธ์ ๊ตฌ์ถํ๋ ๊ฒ์ด ์ด๋ฒ ํ๋ก์ ํธ ๋ชฉํ ์ ๋๋ค.
์ฌ์ค ์ <๊ฟ์ ์ ์>๊ณผ ๊ฐ์ ๋ชจ๋ฐ์ผ ํผ์ฆ ๊ฒ์๋ง ์ฆ๊ธฐ๋ ๋ผ์ดํธ ์ ์ ์ด๊ธฐ ๋๋ฌธ์ ๋กค์ ์ ํ ๋ชจ๋ฆ ๋๋ค.
ํ์ง๋ง, ๋กค์ ๋ชฐ๋ผ๋ ํ์ด์ปค ์ ์๋ฅผ ๋งค์ฐ ์ข์ํ๊ณ , ์ง๊ธ ๊ธฐํ๊ฐ ์๋๋ฉด ๊ฒ์ ์ฃผ์ ์ ๋ฐ์ดํฐ ๋ถ์์ ํด๋ณผ ์ ์๋ ๊ธฐํ๊ฐ ์์ ๊ฒ ๊ฐ์ ์ค๋ ๋ ๋ง์์ผ๋ก ํด๋น ์ฃผ์ ๋ฅผ ์ ํํ๊ฒ ๋์ต๋๋ค. ์ฌ์ค ๋ฏผ์ฃผ์ฃผ์ ๊ตญ๊ฐ ๋ค์๊ฒฐ ์์น์ ์ํด ํด๋น ์ฃผ์ ๋ฅผ ์ฒซ์งธ ๋ ์ ํ๋ก์ ํธ ์ฃผ์ ๋ฅผ ์ ์ ํ๊ณ ๋ถ์ ๋ฐฉํฅ์ ๋ํด ์ด์ผ๊ธฐ ๋๋๊ณ , ๊ฐ์ ์ธ๋ถ ์ฃผ์ ๋ฅผ ๋งก์ EDA๋ฅผ ์งํํ๋๋ฐ์! ํ์คํ ๊ฒ์ ๋ฐ์ดํฐ๋ผ์ ๊ทธ๋ฐ์ง ๊ทธ ๊ณผ์ ์ด ๋๊ฒ ์ฌ๋ฐ๊ธด ํ์ต๋๋ค ใ
ใ
ํ์ ๋ถ๋ค์ด ์น์ ํ์
์ ์จ๋ ์ด๋ ๋ฅ์์ค ๊ฐ์ ๊ฒ์ ์ฉ์ด์ ๊ท์น๋ ์ค๋ช
ํด ์ฃผ์
์ ์ ๋ง ์ฌ๋ฏธ์์์ด์! '์ฃผ๋ง์ ์๊ฐ๋๋ฉด PC๋ฐฉ ๊ฐ์ ํ๋ฒ ํด๋ณผ๊น? '๋ ์๊ฐํ์ง๋ง ํ์ง๋ง ์ ๋ ํธ๋กค์ด ๋ ๊ฒ ๋ถ๋ช
ํ๊ธฐ์ ๋ค๋ฅธ ์ ์ ๋ถ๋ค์ ์ํด ์ฐธ๊ฒ ์ต๋๋ค. ์ ์ ์์ด์ TIL ์์ฑ์ด ์กฐ๊ธ ๋ฆ์ด์ก์ง๋ง ์ด๋ฒ ํ๋ก์ ํธ๋ ๊ผผ๊ผผํ ๊ธฐ๋กํด ๋ณด๊ฒ ์ต๋๋ค.
(tmi) ์๋ก ๋ฐ๊พผ ZEP ์๋ฐํ๊ฐ ๋๋ฌด ๊ท์ฌ์yo!
*<์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ> ๋ฐ์ดํฐ ๋ถ์ ๋ถํธ์บ ํ 2๊ธฐ ํ๋ก์ ํธ ์งํ ๊ด๋ จ ์๋ฐ์ ํฌ์คํ ์ ๋๋ค.
'๐ตโโ๏ธTeam Project > ๊ฒ์ ๋ฐ์ดํฐ ๋ถ์ ํ๋ก์ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+28][ํ๋ก์ ํธ #2-2] ๋กค(LoL) ๊ฒฝ๊ธฐ ์๊ฐ์ ๋ฐ๋ฅธ ์น๋ฆฌ ์์ธ ๋ถ์๊ณผ ์๊ฐํ (2) | 2024.07.12 |
---|