ํ์ด์ฌ ๋ฐ์ดํฐ ๋ถ์๊ฐ ํ์: 5๊ฐ์ง ์๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์๋ฒฝ ํ์ฉ๋ฒ ๐๐
๐ ํน์ ๋ฐ์ดํฐ ๋ถ์์ ํ๋ฉด์ "๊ทธ๋ํ๋ฅผ ๋ญ๋ก ๋ง๋ค์ด์ผ ํ ๊น?" ๊ณ ๋ฏผํด๋ณธ ์ ์๋์? ๋๋ "์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ๋ฉ์ง๊ฒ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ๋ฒ์ด ๋ญ๊น?"๋ผ๋ ๊ถ๊ธ์ฆ! ๐ค ์ค๋์ ๋ฐ๋ก ๊ทธ๋ฐ ๊ณ ๋ฏผ๋ค์ ํด๊ฒฐํด์ค ‘ํ์ด์ฌ ๋ฐ์ดํฐ ์๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ 5๊ฐ์ง’์ ๋ํด ํํค์ณ๋ณด๊ฒ ์ต๋๋ค! ๐งโ๏ธโจ๐ป
๐ ๋ฐ์ดํฐ ์๊ฐํ๋ ๋ถ์์ ๊ฝ! ๊ฝ์ด ํผ๊ธฐ ์ํด์ ์ด๋ค ๋๊ตฌ๋ค์ด ํ์ํ ๊น์? ๋ฐ๋ก ์ด๋ฒ ๊ธ์์ ์๊ฐํ๋ ๋ค์ฏ ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค! ๐
๊ทธ๋ผ, ๋๊น์ง ์ฝ์ผ๋ฉฐ ์์ํ ํ์ฉ ๋ ธํ์ฐ์ ํ์ ์ฑ๊ธฐ์ธ์! ๐๐ฏ
๐ 1. Matplotlib — ๊ธฐ์ด๋ถํฐ ๋ํ์๊น์ง! ๐
๐ ์ ์ค์ํ๊ฐ?
ํ์ด์ฌ ๋ฐ์ดํฐ ์๊ฐํ์ ‘์์ด’ ๊ฒฉ, Matplotlib์ ๊ฑฐ์ ‘๋ฐ์ดํฐ ์๊ฐํ์ ๊ธฐ๋ณธ ํต์ฅ’์
๋๋ค. ๐ฆ
๐ง ์ด๋ฐ ๋ถ๊ป ์ถ์ฒ!
- ์ฒ์ ํ์ด์ฌ ์๊ฐํ๋ฅผ ๋ฐฐ์ฐ๋ ์ด๋ณด์ โ
- ์ปค์คํฐ๋ง์ด์ง์ด ์ฒ ์ ํ ํ์ํ๊ฑฐ๋, ์ฌ์ธํ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๊ณ ์ถ์ ๋ถ โญ
๐ ๏ธ ํ์ฉ ํ & ํต์ฌ ๊ธฐ๋ฅ
- โ ๊ธฐ๋ณธ ๊ทธ๋ํ: ์ ๊ทธ๋ํ, ๋ง๋๊ทธ๋ํ, ์ฐํฌ๋ ๋ฑ ์๊ธดํ ์ฐจํธ ๋ชจ๋ ๊ฐ๋ฅ
- โ ์ปค์คํฐ๋ง์ด์ง: ์์, ํฐํธ, ์ถ, ๋ ์ด๋ธ ์ธ์ธํ๊ฒ ์กฐ์ ๊ฐ๋ฅ โ๏ธ
- โญ ์๋ธํ๋กฏ ๋ง๋ค๊ธฐ: ์ฌ๋ฌ ์ฐจํธ ํ ํ๋ฉด์ ๋ฐฐ์น, ๋ณต์กํ ๋ฐ์ดํฐ ์ง๊ดํ ๊ฐ๋ฅ
- โ ๊ทธ๋ํ ์ ์ฅ & ๊ณต์ : PNG, PDF, SVG ๋ฑ ๋ค์ํ ์ด๋ฏธ์ง ํฌ๋งท ์ง์
โ๏ธ ์ฌ์ฉ ์์ (์์ )
import matplotlib.pyplot as plt
๋ก ์์!- ๋ฐ์ดํฐ ์ค๋น & ์ฐจํธ ์ ํ (plot(), bar(), scatter())
plt.show()
์ผ๋ก ์๊ฐํ ์ถ๋ ฅ!
๐ 2. Seaborn — ์๋ฆ๋ต๊ณ ๊ฐ๋ ฅํ ํต๊ณ ๊ทธ๋ํ ๐
๐ ์ ์ ๋ช
ํ๊ฐ?
Matplotlib๋ณด๋ค ๋ ์ธ๋ จ๋๊ณ ์๊ฐ์ ์ผ๋ก ์์ ๊ทธ๋ํ๋ฅผ ๋น ๋ฅด๊ฒ ๋ง๋ค ์ ์์ด์! ํต๊ณ์ ๋ฐ์ดํฐ ๋ถ์์ ํนํ๋ ๊ธฐ๋ฅ์ด ๊ฐ๋! ๐โจ
๐ง ์ด๋ฐ ๋ถ๊ป ์ถ์ฒ!
- ๋ถ์์ ์์๊ฒ ๋ณด์ฌ์ฃผ๊ณ ์ถ๊ฑฐ๋, ํต๊ณ์ ๋ถํฌ๋ฅผ ํ๋์ ํ์ ํ๊ณ ์ถ์ ๋ถ โ
- ๋ฐ์ดํฐ ๊ฐ ๊ด๊ณ๋ฅผ ์ง๊ด์ ์ผ๋ก ํ์ ํ๋ ค๋ ๋ฐ์ดํฐ ๊ณผํ์ โญ
๐ ๏ธ ํ์ฉ ํ & ํต์ฌ ๊ธฐ๋ฅ
- โ
์ฝ๊ฒ ๋ฐฐํฌํ ์ ์๋ ์ฐจํธ:
sns.scatterplot()
,sns.boxplot()
,sns.heatmap()
๋ฑ - โ
์คํ์ผ ํ
ํ๋ฆฟ:
sns.set_theme()
์ผ๋ก ๊น๋ํ ๋ฐฐ๊ฒฝ๊ณผ ์์ ์ค์ ๊ฐ๋ฅ ๐จ - โญ ์๊ด๊ด๊ณ ๋ถ์: heatmap์ผ๋ก ํํธ๋งต ๋ง๋ค์ด ๊ด๊ณ ํ๋์ ํ์ !
- โ ํ์ดํ๋กฏ: ์ฌ๋ฌ ๋ณ์ ๊ฐ ์ฐ์ ๋์ ํํธ๋งต์ด ์์ผ๋ก! ๐ค
โ๏ธ ์ค์ต ์์
import seaborn as sns
ํ,sns.lvplot(data)
๋ sns.pairplot(df)
ํ์ฉํ๋ ๊ฒ๋ ๊ฟํ!
๐ 3. Plotly — ์ธํฐ๋ํฐ๋ธํ ํ๋ คํ ๊ทธ๋ํ ๐ฅ๏ธโจ
๐ ์ ์ ํํ๋๊ฐ?
์น ๊ธฐ๋ฐ ์ธํฐ๋ํฐ๋ธ ๊ทธ๋ํ์ ๋! ๋ง์ฐ์ค ์ค๋ฒ, ์ค์ธ/์์, ์ ํ ๊ธฐ๋ฅ๊น์ง ๊ฐ์ถ ‘๊ฒ์ ์ฒด์ธ์ ’์
๋๋ค! ๐
๐ง ์ด๋ฐ ๋ถ๊ป ์ถ์ฒ!
- ๋ณด๊ณ ์ ๋๋ ๋์๋ณด๋์ ์๋๊ฐ ๋์น๋ ๊ทธ๋ํ๋ฅผ ๋ฃ๊ณ ์ถ์ ๊ฐ๋ฐ์ โ
- ์ฌ์ฉ์์ ์ํธ์์ฉํ๋ฉฐ ๋ฐ์ดํฐ์ ์ด์ผ๊ธฐ๋ฅผ ์ ๋ฌํ๋ ค๋ ๋ถ์๊ฐ โญ
๐ ๏ธ ํ์ฉ ํ & ํต์ฌ ๊ธฐ๋ฅ
- โ ํด๋ฆญ/์ค ๊ฐ๋ฅ: ๋ฐ์ดํฐ ํฌ์ธํธ ์์ธ ์ ๋ณด ์ ๊ณต ๊ฐ๋ฅ!
- โ ๋ค์ํ ์ฐจํธ: ์ ์ฐจํธ, ์ฐํฌ๋, ํ์ด ์ฐจํธ ๋ฑ ๊ฑฐ์ ๋ฌดํ!
- โญ HTML/์น ์ ์ฅ: ์ฝ๊ฒ ๋ฐฐํฌ ๊ฐ๋ฅํ HTML ํ์ผ๋ก ๋ง๋ค์ด ๊ณต์ ๐
- โ Dash์ ํจ๊ป ์ฐ๊ธฐ: ๋ ๋ณต์กํ ๋์๋ณด๋ ๊ฐ๋ฐ์ ์ต์ ! ๐
โ๏ธ ๊ฐ๋จ ์ฌ์ฉ๋ฒ
import plotly.express as px
px.scatter()
,px.bar()
,px.line()
๋ฑ ํ์ฉ!- ์นํ์ด์ง ๋๋ ๋ ธํธ๋ถ์์ ๋ฐ๋ก ์ธํฐ๋ํฐ๋ธ ํ์ถ!
๐ 4. Altair — ์ ์ธํ ์๊ฐํ์ ์ ์ธ๊ณ ๐ฎ
๐ ์ ์ธ๊ธฐ์ผ๊น?
‘์ ์ธํ ํ๋ก๊ทธ๋๋ฐ’์ผ๋ก ๊ฐ๋จํ ๋ณต์กํ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆด ์ ์์ฃ ! ์ง๊ด์ ์ด๊ณ ๊น๋ํ ๋ฌธ๋ฒ, ๊ทธ๋ฆฌ๊ณ ๊น๋ํ ์๊ฐํ ์คํ์ผ์ด ์ฅ์ ! ๐ฏ
๐ง ์ด๋ฐ ๋ถ๊ป ์ถ์ฒ!
- ์๊ฐํ ์ฝ๋๋ฅผ ์งง๊ณ ๋ช ๋ฃํ๊ฒ ํ๊ณ ์ถ์ ๋ถ โ
- ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๊น๋ํ๊ฒ ํํํ๊ณ ์ถ์ ๋ถ์๊ฐ โญ
๐ ๏ธ ํ์ฉ ํ & ํต์ฌ ๊ธฐ๋ฅ
- โ
๊ฐ๋จํ ๋ฌธ๋ฒ:
Chart(data).mark_bar().encode()
์ ๊ฐ์ ์ ์ธ์ ๋ฐฉ์ → ์ดํดเธเนเธฒเธข! - โ ๋ค์ํ ์ฐจํธ: ์ฐจํธ ์กฐํฉ๋ ์ฌ์์ ์ฌ๋ฌ ๊ทธ๋ํ ๊ฒน์ณ์ ํํ ๊ฐ๋ฅ!
- โญ ๋ฐ์ํ/์ธํฐ๋ํฐ๋ธ: ๋ณ๋ ์ค์ ์์ด ๋ฐ์ํ, ๋ํํ ๊ฐ๋ฅ!
โ๏ธ ์์ ์๋ด
๊ตฌ๋ฌธ์ ๊ฐ๊ฒฐ!
python
import altair as alt
chart = alt.Chart(df).mark_point().encode(
x='sepalLength', y='sepalWidth', color='species'
)
chart.show()
๐ 5. Bokeh — ์ค์๊ฐ ๋ฐ์ดํฐ ์๊ฐํ & ๋ํํ ๋์๋ณด๋ ๊ตฌ์ถ ๐ฑ๏ธ๐
๐ ์ ์ฐ๋์?
์ค์๊ฐ ์
๋ฐ์ดํธ์ ๋ฐ์ด๋ ๋ํํ ๊ธฐ๋ฅ์ผ๋ก ๋์๋ณด๋์ ์น์ฑ ์ ์์ ํนํ! ์์ฃผ ์ง๊ด์ ์ด๋ฉฐ ์น์ ๋ฐ๋ก ๋ฐฐํฌ ๊ฐ๋ฅ! ๐
๐ง ์ด๋ฐ ๋ถ๊ป ์ถ์ฒ!
- ๋์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ณด์ฌ์ค์ผ ํ๋ ํ๋ก์ ํธโ
- ์ฌ์ฉ์ ์ฐธ์ฌํ ์ธํฐ๋ํฐ๋ธ ๋์๋ณด๋๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๋ถ์๊ฐ โญ
๐ ๏ธ ํ์ฉ ํ & ํต์ฌ ๊ธฐ๋ฅ
- โ ์ค์๊ฐ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ: ๋ฐ์ดํฐ ์คํธ๋ฆผ๋ ๊ฐ๋จํ๊ฒ ๋ฐ์ ๊ฐ๋ฅ!
- โ ๋ํํ ์์ ฏ: ์ ํ์ฐฝ, ์ฌ๋ผ์ด๋, ํํฐ ๊ธฐ๋ฅ ์ฝ์ ๊ฐ๋ฅ ๐ฑ๏ธ
- โญ ์น ๋ฐฐํฌ ์ฉ์ด: HTML, ์๋ฒ์ ์ฐ๊ณ๋ ๊ฐ๋จ!
- โ ํ๋ฌํฐ์ ์ฐ๋ ๊ฐ๋ฅ: ๋ชจ๋ฐ์ผ/์น ๋ชจ๋ ํธํ ๊ฐ๋ฅ!
โ๏ธ ์ฌ์ฉ ๊ฐ์ด๋
from bokeh.plotting import figure, show
figure()
,add_tools()
,show()
ํ์ฉ๋ฒ ์ตํ๊ธฐ!- ํ์์ ๋ฐ๋ผ ์ปค์คํฐ๋ง์ด์ง ํ ๋ฐฐํฌ!
โจ ๊ฒฐ๋ก ! ๋ฐ์ดํฐ ์๊ฐํ์ ๊ฝ, ์ค๋๋ถํฐ ์ค์ฒํ์ ๐ธ๐ฏ
โ ์ด๋ฒ ๊ธ์ ํต์ฌ ์ ๋ฆฌ!
- ๐ฃ Matplotlib: ๊ธฐ์ด๏ผ์ฌ์ธํ ์ปค์คํฐ๋ง์ด์ง ๊ฐ๋ฅ, ๋ชจ๋ ๋ถ์์ ์์
- ๐ต Seaborn: ์ธ๋ จ๋ ๊ธฐ๋ณธ ํต๊ณ ๊ทธ๋ํ, ๋น ๋ฅธ ๋ถ์ ์ฉ๋์ ๋ฑ!
- ๐ Plotly: ์ธํฐ๋ํฐ๋ธ ๊ทธ๋ํ๋ก ๋ณด๊ณ ์, ๋์๋ณด๋์ ์ต์ !
- ๐ข Altair: ์ ์ธํ ๋ฌธ๋ฒ์ผ๋ก ๊น๋ํ ์ฐจํธ ์ ์, ์ฝ๋ ๊ฐ๊ฒฐ์ฑ!
- ๐ด Bokeh: ์ค์๊ฐ, ์น ๊ธฐ๋ฐ ๋ํํ ๋์๋ณด๋์ ๊ฐ์ !
๐ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํผํผํ ํ๊ณ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ๋ฒ์ ์ตํ๋ค๋ฉด, ๋ฐ์ดํฐ ๋ถ์๊ฐ๋ก์ ๊ฒฝ์๋ ฅ UP! ๐
โ
๊ฐ์ธTIP!
์ฒ์์ ํ๋์ฉ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐฐ์ฐ๊ธฐ! ๊ทธ๋ฆฌ๊ณ ์ค์ต์ ํตํด ๋๋ง์ ์๊ฐํ ํฌํธํด๋ฆฌ์ค ๋ง๋ค๊ธฐ! ๋ฉ์ง ๊ทธ๋ํ๋ก ๋ฐ์ดํฐ์ ์ด์ผ๊ธฐ๋ฅผ ์์ํ๊ฒ ์ ๋ฌํ์ธ์! ๐ฅ๐
๊ทธ๋ผ, ์ค๋๋ ๋ฐ์ดํฐ์ ํจ๊ป ๋น๋๋ ๋ถ์๊ฐ ๋์๊ธธ! ๐โจ
๐ ๊ถ๊ธํ ์ ์ด๋ ์ด๋ ค์ด ๋ถ๋ถ ์๋์? ๋๊ธ๋ก ๋จ๊ธฐ๊ฑฐ๋, ๋ ๊น์ ๊ฐ์ข ์ถ์ฒ๋ ๋๋ฆด๊ฒ์! ์ง๊ธ ๋ฐ๋ก ์ค์ตํด๋ณด์ธ์! ๐๐
์ด์ ๊ธ ๋ณด๊ธฐ!!