๐Ÿ•ท๏ธ Crawler Inspector

URL Lookup

Direct Parameter Lookup

Raw Queries and Responses

1. Shard Calculation

Query:
Response:
Calculated Shard: 185 (from laksa146)

2. Crawled Status Check

Query:
Response:

3. Robots.txt Check

Query:
Response:

4. Spam/Ban Check

Query:
Response:

5. Seen Status Check

โ„น๏ธ Skipped - page is already crawled

๐Ÿ“„
INDEXABLE
โœ…
CRAWLED
4 days ago
๐Ÿค–
ROBOTS ALLOWED

Page Info Filters

FilterStatusConditionDetails
HTTP statusPASSdownload_http_code = 200HTTP 200
Age cutoffPASSdownload_stamp > now() - 6 MONTH0.1 months ago
History dropPASSisNull(history_drop_reason)No drop reason
Spam/banPASSfh_dont_index != 1 AND ml_spam_score = 0ml_spam_score=0
CanonicalPASSmeta_canonical IS NULL OR = '' OR = src_unparsedNot set

Page Details

PropertyValue
URLhttps://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/
Last Crawled2026-04-04 05:59:48 (4 days ago)
First Indexed2022-11-26 18:54:14 (3 years ago)
HTTP Status Code200
Meta TitleํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Seaborn ์‚ฌ์šฉ๋ฒ• ๊ธฐ์ดˆํŽธ - Snug Archive
Meta DescriptionํŒŒ์ด์ฌ(Python)์—๋Š” Matplotlib(๋งทํ”Œ๋กฏ๋ฆฝ), Plotly(ํ”Œ๋กœํ‹€๋ฆฌ), GGplot(์ง€์ง€ํ”Œ๋กฏ) ๋“ฑ ๋‹ค์–‘ํ•œ ์‹œ๊ฐํ™”โ€ฆ
Meta Canonicalnull
Boilerpipe Text
1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Last Updatedย ย  2024-09-10 Publishedย ย  2022-06-05 Python Seaborn 8๋ถ„ ๋ชฉ์ฐจ Seaborn์œผ๋กœ ์ผ๋ณ€๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™” ํ•ด๋ณด์ž ํŒŒ์ด์ฌ(Python)์—๋Š” Matplotlib(๋งทํ”Œ๋กฏ๋ฆฝ) , Plotly(ํ”Œ๋กœํ‹€๋ฆฌ), GGplot(์ง€์ง€ํ”Œ๋กฏ) ๋“ฑ ๋‹ค์–‘ํ•œ ์‹œ๊ฐํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. Matplotlib์€ ์ „ ์„ธ๊ณ„์˜ ๋ฐ์ดํ„ฐ ๊ณผํ•™์ž๋“ค์ด ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ฐํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Plotly๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ plotly.js๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ, ๊ทธ๋ž˜ํ”„์˜ ํŠน์ • ๋ถ€๋ถ„์„ ํ™•๋Œ€/์ถ•์†Œํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•˜๋Š” ๋“ฑ ์›น ์ƒ์—์„œ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. GGplot์€ R์˜ ggplot2 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐœ๋ฐœ๋˜์–ด, ๊ธฐ์กด์˜ R ์‚ฌ์šฉ์ž๋“ค์ด ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Seaborn์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”? ๋˜, ๋งŽ์€ ์‹œ๊ฐํ™” ๋„๊ตฌ ์ค‘์—์„œ Seaborn์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? Seaborn์€ Matplotlib์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋œ ๊ณ ์ˆ˜์ค€(high-level) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Seaborn์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ๊ฐ„๊ฒฐํ•จ์ž…๋‹ˆ๋‹ค. Seaborn์„ ์ด์šฉํ•˜๋ฉด ๋น„๊ต์  ์งง์€ ์ฝ”๋“œ๋กœ๋„ ํ†ต๊ณ„ํ•™์˜ ์ฃผ์š” ๊ทธ๋ž˜ํ”„๋ฅผ ๋น ๋ฅด๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„๋ฅผ ์„ธ๋ถ€ ์„ค์ • ์—†์ด ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๊ทธ๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด Matplotlib๋ณด๋‹ค Seaborn์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. Seaborn์˜ ์‚ฌ์šฉ๋ฒ•์€ ๊ธฐ์ดˆํŽธ๊ณผ ์‹ฌํ™”ํŽธ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๊ธฐ์ดˆํŽธ์—์„œ๋Š” Seaborn์„ ์„ค์น˜ํ•˜๊ณ  ์‹ค์Šต์„ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ•๊ณผ ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ์ธ 1์ฐจ์› ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Seaborn ์‚ฌ์šฉ๋ฒ• ์‹ฌํ™”ํŽธ ์—์„œ๋Š” ๋ณ€๋Ÿ‰์ด 2๊ฐœ ์ด์ƒ์ธ ๋‹ค์ฐจ์› ๊ทธ๋ž˜ํ”„๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธํŽธ์—์„œ ๋‹ค๋ฃฐ ์ „์ฒด ๊ทธ๋ž˜ํ”„์˜ ๊ฐœ์š”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Seaborn 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๋กœ๋“œ๋งตย  ๊ทธ๋Ÿผ Seaborn์œผ๋กœ 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”๋ฅผ ํ•˜๊ธฐ ์ „์— ์ค€๋น„ํ•  ์‚ฌํ•ญ๋ถ€ํ„ฐ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ค€๋น„ํ•˜๊ธฐ ์•ˆ๋‚ด ์‚ฌํ•ญ Seaborn์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ค€๋น„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ์งธ, ์‹ค์Šต ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธ์Šค(Data Science)๋ฅผ ์œ„ํ•œ ํ†ตํ•ฉ๊ฐœ๋ฐœํ™˜๊ฒฝ(IDE)์—๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ ์ŠคํŒŒ์ด๋”(Spyder), ์•„ํ†ฐ(Atom), ํŒŒ์ด์ฐธ(PyCharm) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ(Jupyter Notebook)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ์˜ ์ž์„ธํ•œ ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ•์€ ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ ๋ฅผ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. ๋‘˜์งธ, ํ†ต๊ณ„ ์šฉ์–ด์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์šฉ์–ด๋Š” ๊ฐ„๋žตํžˆ ์„ค๋ช…ํ•  ์˜ˆ์ •์ด๋‚˜, ๊ฐœ๋…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์ด๋‚˜ ์ˆ˜์‹์€ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ†ต๊ณ„ ์šฉ์–ด๋ฅผ ์ฐธ์กฐํ•˜๋ฉด์„œ ๊ธ€์„ ์ฝ๊ณ  ์‹ถ์€ ๋ถ„๋“ค์€ ํ™•๋ฅ ๊ณผ ํ†ต๊ณ„ ๊ธฐ์ดˆ ์šฉ์–ด ๋ฅผ ํ•จ๊ป˜ ์ฝ์œผ์‹œ๊ธฐ๋ฅผ ๊ถŒํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์…‹์งธ, Seaborn ํ•จ์ˆ˜์˜ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค. Seaborn์˜ ์‹œ๊ฐํ™” ํ•จ์ˆ˜๋Š” ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€(figure-level)์˜ ํ•จ์ˆ˜์™€ ์ถ• ์ˆ˜์ค€(axes-level)์˜ ํ•จ์ˆ˜๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€์˜ ํ•จ์ˆ˜๋Š” ์ƒ์œ„ ํ•จ์ˆ˜๋กœ ๊ทธ๋ž˜ํ”„์˜ ์ข…๋ฅ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜๋Š” ๊ฐ ๊ทธ๋ž˜ํ”„์˜ ์ข…๋ฅ˜์— ํŠนํ™”๋œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜๋Š” 1๊ฐ€์ง€ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฐ ๋งž์ถคํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‘ ์ข…๋ฅ˜์˜ ํ•จ์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ธฐ์ค€์€ Grid ์˜ ์ƒ์„ฑ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. displot() , catplot() , relplot() ํ•จ์ˆ˜๋Š” ๋ชจ๋‘ ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€ ํ•จ์ˆ˜์ด๋ฉฐ seaborn.axisgrid.FacetGrid ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, countplot() , hisplot() , striplot() ๋“ฑ๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋Š” ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜์ด๋ฉฐ ๊ฒฐ๊ณผ๋กœ AxesSubplot ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. FacetGrid ๋Š” ์—ฌ๋Ÿฌ ๊ทธ๋ž˜ํ”„๋ฅผ ํฌํ•จํ•˜๋Š” ์ƒ์œ„ ๊ทธ๋ž˜ํ”„๋กœ, FacetGrid ์—์„œ ํŠน์ • ํ•˜์œ„ AxesSubplot ๊ทธ๋ž˜ํ”„๋งŒ ์ถ”์ถœํ•ด ์›ํ•˜๋Š” ์กฐ๊ฑด์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜์ด ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ ๋ณดํ†ต ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€ ํ•จ์ˆ˜์™€ ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜์˜ ์˜ต์…˜์€ ์„œ๋กœ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, Matplotlib ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด๋‚˜ ํ•œ ๊ทธ๋ž˜ํ”„ ์œ„์— ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ฒน์ณ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ๋Š” ์ถ• ์ˆ˜์ค€์˜ ํ•จ์ˆ˜๊ฐ€ ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€ ํ•จ์ˆ˜๋ณด๋‹ค ์กฐ๊ธˆ ๋” ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€์˜ ํ•จ์ˆ˜๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ดํŽด๋ณด๋˜, ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€์œผ๋กœ ๊ทธ๋ฆด ์ˆ˜ ์—†๋Š” ๊ทธ๋ž˜ํ”„๋Š” ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ง€๊ธˆ๋ถ€ํ„ฐ Seaborn์„ ์„ค์น˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ํ•˜๊ธฐ 1) ํŒŒ์ด์ฌ ๋ฐ pip ์„ค์น˜ ์—ฌ๋ถ€ ํ™•์ธ Seaborn์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํŒŒ์ด์ฌ๊ณผ ํŒŒ์ด์ฌ์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋งค๋‹ˆ์ €์ธ pip ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์‹œ์Šคํ…œ์— ํŒŒ์ด์ฌ๊ณผ pip ์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. python python - V pip - v ํŒŒ์ด์ฌ๊ณผ pip ์ด ์ž˜ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด Seaborn์„ ์„ค์น˜ํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ Seaborn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 2) ํŒจํ‚ค์ง€ ์„ค์น˜ ํ„ฐ๋ฏธ๋„์— pip install ์ด๋ผ๋Š” ๋ช…๋ น์–ด ๋‹ค์Œ ์„ค์น˜ํ•˜๋ ค๋Š” ํŒจํ‚ค์ง€์˜ ์ด๋ฆ„์ธ seaborn ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. python pip install seaborn ํŒŒ์ด์ฌ/R ๋ฐฐํฌํŒ์ธ ์•„๋‚˜์ฝ˜๋‹ค(Anaconda)๋กœ ์ž‘์—…ํ•˜์‹œ๋Š” ๋ถ„๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์ด pip ๋ช…๋ น์–ด ๋Œ€์‹  conda ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. python conda install seaborn 3) ์„ค์น˜ ํ™•์ธ ์„ค์น˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ์ž˜ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€์˜ ์„ค์น˜ ์—ฌ๋ถ€๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์„ค์น˜๋œ ํŒจํ‚ค์ง€์˜ ๋ฒ„์ „ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์„œ ์„ค์น˜๋œ Seaborn์˜ ๋ฒ„์ „ ์ •๋ณด๊ฐ€ ๋ณด์ด๋ฉด Seaborn์ด ์ž˜ ์„ค์น˜๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. python import seaborn as sns sns . __version__ ๊ทธ๋ž˜ํ”„๋ฅผ ์ถœ๋ ฅํ•ด์„œ ์„ค์น˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. python import seaborn as sns df = sns . load_dataset ( 'penguins' ) sns . pairplot ( df , hue = 'species' ) Seaborn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜๋ฅผ ์™„๋ฃŒํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ์€ ๊ธฐ๋ณธ์ ์ธ ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ • ๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ •์€ ๊ทธ๋ž˜ํ”„ ์ „์—ญ์— ์ ์šฉ๋˜๋Š” ์Šคํƒ€์ผ๋ง(styling)์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ณ„ ํ™˜๊ฒฝ ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ํŒŒ์ด์ฌ Matplotlib ์‚ฌ์šฉ๋ฒ•(์˜ˆ์ •)์„ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. python import numpy as np import pandas as pd import matplotlib . pyplot as plt from matplotlib import rcParams import seaborn as sns import warnings def setting_styles_basic ( ) : rcParams [ 'font.family' ] = 'Malgun Gothic' rcParams [ 'axes.unicode_minus' ] = False setting_styles_basic ( ) warnings . filterwarnings ( 'ignore' ) Matplotlib์„ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  Seaborn์œผ๋กœ ํ™˜๊ฒฝ ์„ค์ •์„ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ์Šคํƒ€์ผ๋ง Seaborn์—์„œ ๋ชจ๋“  ์Šคํƒ€์ผ๋ง์„ ํ•œ ๋ฒˆ์— ์„ค์ •ํ•˜๋ ค๋ฉด set_theme() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. set_theme: ๊ทธ๋ž˜ํ”„ ์ „๋ฐ˜ ๋ฐ ๋งค์ฒด๋ณ„ ์Šค์ผ€์ผ(scale), ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ ์ง€์ • ๋‹ค์Œ ํ•จ์ˆ˜๋Š” set_theme() ์˜ ์ผ์„ ์—ญํ•  ๋ถ„๋‹ดํ•ฉ๋‹ˆ๋‹ค. set_style: ๊ทธ๋ž˜ํ”„ ์ „๋ฐ˜ ์Šคํƒ€์ผ ์ง€์ • set_context: ๋งค์ฒด๋ณ„ ์Šค์ผ€์ผ ์ง€์ • set_palette: ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ ์ง€์ • set_theme set_theme() ํ•จ์ˆ˜๋Š” ๊ทธ๋ž˜ํ”„ ์ „๋ฐ˜์— ์ ์šฉ๋˜๋Š” ํ…Œ๋งˆ(theme)๋ฅผ ์ง€์ •ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. set_theme() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ทธ๋ž˜ํ”„ ์ „์—ญ์˜ ์Šคํƒ€์ผ๋ง์„ ์ง€์ •ํ•˜๋Š” set_style() ํ•จ์ˆ˜์™€ ์‚ฌ์šฉํ•  ๋งค์ฒด์— ์ ํ•ฉํ•˜๋„๋ก ๊ทธ๋ž˜ํ”„์˜ ์Šค์ผ€์ผ์„ ์กฐ์ •ํ•˜๋Š” set_context() ํ•จ์ˆ˜๋กœ ํ•˜๋Š” ์ผ์„ ํ•œ ๋ฒˆ์— ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. python custom_params = { "axes.spines.right" : False , "axes.spines.top" : False } sns . set_theme ( context = 'notebook' , style = 'darkgrid' , palette = 'deep' , font = 'Malgun Gothic' , font_scale = 1 , rc = custom_params ) context context ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์‚ฌ์šฉํ•˜๋Š” ๋งค์ฒด์— ์ ํ•ฉํ•œ ๊ทธ๋ž˜ํ”„์˜ ์Šค์ผ€์ผ์„ ์กฐ์ •ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ ๋งค์ฒด์— ์ ํ•ฉํ•˜๊ฒŒ ๋ผ๋ฒจ๊ณผ ๊ทธ๋ž˜ํ”„์˜ ํฌ๊ธฐ๋ฅผ ๋งž์ถค ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. notebook: ๊ธฐ๋ณธ ์„ค์ • paper: ๋…ผ๋ฌธ, ๋ณด๊ณ ์„œ talk: ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ poster: ํฌ์Šคํ„ฐ style style ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” Seaborn์˜ ๊ธฐ๋ณธ ๋‚ด์žฅ ํ…Œ๋งˆ(built-in themes)๋ฅผ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ๋‚ด์žฅ ํ…Œ๋งˆ์—๋Š” ์ด 5๊ฐ€์ง€ ํ…Œ๋งˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. darkgrid: ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ + ๊ทธ๋ฆฌ๋“œ whitegrid: ํฐ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ + ๊ทธ๋ฆฌ๋“œ dark: ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ white: ํฐ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ ticks: ํฐ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ + ๋ˆˆ๊ธˆ palette palette ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ƒ‰์„ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ๋Š” ์ด 6๊ฐ€์ง€( deep , muted , pastel , bright , dark , colorblind )์ž…๋‹ˆ๋‹ค. ํŠน์ • ํŒ”๋ ˆํŠธ๋ฅผ ์„ ํƒํ•˜๋ ค๋ฉด color_palette() ํ•จ์ˆ˜๋ฅผ, ์„ ํƒํ•œ ํŒ”๋ ˆํŠธ์˜ ์ƒ‰์ƒ์„ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด palplot() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. python palette = sns . color_palette ( 'deep' ) sns . palplot ( palette ) font, font_scale font ์™€ font_scale ์€ ๊ฐ๊ฐ ๊ธ€๊ผด์˜ ์ข…๋ฅ˜์™€ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์ž…๋‹ˆ๋‹ค. Matplotlib์˜ rcParams ์—์„œ font.family ์™€ font.size ๊ฐ€ ํ•˜๋Š” ์ผ๊ณผ ๋™์ผํ•œ ์ผ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. python from matplotlib import rcParams rcParams [ 'font.family' ] = 'Malgun Gothic' rcParams [ 'font.size' ] = 18 Matplotlib์˜ rcParams ์—์„œ์ฒ˜๋Ÿผ ๊ทธ๋ž˜ํ”„์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ ์ „๋ฐ˜์„ ์กฐ์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด rc ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. rc rc ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ถ•(axes), ๊ทธ๋ฆฌ๋“œ(grid), ๋ˆˆ๊ธˆ(ticks), ๊ธ€๊ผด(font) ๋“ฑ ๊ทธ๋ž˜ํ”„์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ „๋ฐ˜์„ ์กฐ์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์ž…๋‹ˆ๋‹ค. plotting_context() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ๊ทธ๋ž˜ํ”„์— ์ ์šฉ๋˜๊ณ  ์žˆ๋Š” ์„ค์ •๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. rc ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ค์ •๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. python sns . plotting_context ( ) { 'axes.facecolor' : 'white' , 'axes.edgecolor' : 'black' , 'axes.grid' : False , 'axes.axisbelow' : 'line' , 'axes.labelcolor' : 'black' , 'figure.facecolor' : 'white' , 'grid.color' : '#b0b0b0' , 'grid.linestyle' : '-' , 'text.color' : 'black' , 'xtick.color' : 'black' , 'ytick.color' : 'black' , 'xtick.direction' : 'out' , 'ytick.direction' : 'out' , 'lines.solid_capstyle' : < CapStyle . projecting : 'projecting' > , 'patch.edgecolor' : 'black' , 'patch.force_edgecolor' : False , 'image.cmap' : 'viridis' , 'font.family' : [ 'sans-serif' ] , 'font.sans-serif' : [ 'DejaVu Sans' , 'Bitstream Vera Sans' , 'Computer Modern Sans Serif' , 'Lucida Grande' , 'Verdana' , 'Geneva' , 'Lucid' , 'Arial' , 'Helvetica' , 'Avant Garde' , 'sans-serif' ] , 'xtick.bottom' : True , 'xtick.top' : False , 'ytick.left' : True , 'ytick.right' : False , 'axes.spines.left' : True , 'axes.spines.bottom' : True , 'axes.spines.right' : True , 'axes.spines.top' : True } ์—ฌ๊ธฐ์„œ axes.spines ์€ ๊ทธ๋ž˜ํ”„์˜ ์ถ•์„ ๋‚˜ํƒ€๋‚ด๊ฑฐ๋‚˜ ์ˆจ๊ธฐ๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด Seaborn์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ„(top), ์•„๋ž˜(bottom), ์™ผํŽธ(left), ์˜ค๋ฅธํŽธ(right) ์ด 4๊ฐœ์˜ ์ถ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋งŒ์ผ ์œ„์ชฝ ์ถ•๊ณผ ์˜ค๋ฅธ์ชฝ ์ถ•์„ ์ˆจ๊ธฐ๊ณ  ์‹ถ๋‹ค๋ฉด despine() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. despine() ํ•จ์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ๊ทธ๋ž˜ํ”„ ํ•จ์ˆ˜ ๋‹ค์Œ์— ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. python sns . countplot ( . . . ) sns . despine ( ) ๋งŒ์ผ ํŠน์ • ์ถ•์„ ์ˆจ๊ธฐ๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ˆจ๊ธฐ๊ณ  ์‹ถ์€ ๋ฐฉํ–ฅ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— True ๊ฐ’์„ ์ „๋‹ฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. python sns . countplot ( . . . ) sns . despine ( left = True , bottom = True ) set_style set_style() ํ•จ์ˆ˜๋กœ๋Š” ๊ทธ๋ž˜ํ”„ ์ „๋ฐ˜์— ์ ์šฉ๋  ํ…Œ๋งˆ์™€ ๊ทธ๋ž˜ํ”„์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. python rc = { 'grid.color' : '.5' , 'grid.linestyle' : ':' } sns . set_style ( 'whitegrid' , rc = None ) set_context set_context() ํ•จ์ˆ˜๋กœ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์Šค์ผ€์ผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. python sns . set_context ( 'notebook' , font_scale = 1.25 , rc = { 'grid.color' : '.6' } ) set_palette set_palette() ํ•จ์ˆ˜๋กœ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. python sns . set_palatte ( 'colorblind' ) ๊ทธ๋ž˜ํ”„๋ณ„ ์Šคํƒ€์ผ๋ง ๊ทธ๋ž˜ํ”„๋ณ„ ์Šคํƒ€์ผ๋ง์„ ํ•˜๋ ค๋ฉด set() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ถ• ๋ฒ”์œ„ ์ œํ•œํ•˜๊ธฐ: xlim, ylim Seaborn์—์„œ x์ถ•๊ณผ y์ถ•์˜ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด xlim , ylim ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. python sns . countplot ( . . . ) . set ( xlim = ( 1 , 10 ) , ylim = ( 0 , 20 ) ) ์ถ• ๋ผ๋ฒจ ์ˆจ๊ธฐ๊ธฐ: xlabel, ylabel Seaborn์—์„œ ์ถ•์— ์žˆ๋Š” ๋ผ๋ฒจ์„ ์ˆจ๊ธฐ๋ ค๋ฉด xlabel , ylabel ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. python ax = sns . heatmap ( . . . ) ax . set ( xlabel = "" , ylabel = "" ) ์ถ• ์œ„์น˜ ๋ฐ”๊พธ๊ธฐ ์ถ• ์œ„์น˜๋ฅผ ์กฐ์ •ํ•˜๋ ค๋ฉด ax.axis.tick_top ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. python ax = sns . heatmap ( . . . ) ax . xaxis . tick_top ( ) ax . yaxis . tick_left ๊ทธ๋ž˜ํ”„ ํฌ๊ธฐ ์กฐ์ •ํ•˜๊ธฐ Seaborn์—์„œ ๊ฐœ๋ณ„ ๊ทธ๋ž˜ํ”„์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋ ค๋ฉด rc ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. python sns . barplot ( . . . ) sns . set ( rc = { 'figure.figsize' : ( 10 , 7 ) } ) ์„ค์น˜์™€ ๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ •์„ ๋ชจ๋‘ ๋งˆ์ณค๋‹ค๋ฉด ์ด์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉ(loading)ํ•ด์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ Seaborn์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ๊ณ , ๋‚ด์žฅ ๋ฐ์ดํ„ฐ(built-in data)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 1) ๋ฐ์ดํ„ฐ ์„ ํƒ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด pandas๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. CSV ํŒŒ์ผ๊ณผ ์—‘์…€ ํŒŒ์ผ์„ DataFrame ๊ฐ์ฒด๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. python import pandas as pd df = pd . read_csv ( 'data.csv' ) df = pd . read_excel ( 'data.xlsx' ) pandas์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ์ž์„ธํ•œ ๋ฐฉ๋ฒ•์€ Python pandas ๋ฐ์ดํ„ฐ ์ƒ์„ฑ, ๋กœ๋”ฉ๊ณผ ์ €์žฅ, ์ƒ‰์ธ ๊ด€๋ฆฌํ•˜๋Š” ๋ฒ• ์—์„œ '๋กœ๋”ฉ ๋ฐ ์ €์žฅ' ํŽธ์„ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. ์—ฌ๊ธฐ์„œ๋Š” Seaborn์˜ ๋‚ด์žฅ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด์žฅ ๋ฐ์ดํ„ฐ Seaborn์—๋Š” ๋‹ค์–‘ํ•œ ๋‚ด์žฅ ๋ฐ์ดํ„ฐ์…‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ๋‚ด์— ์–ด๋–ค ๋‚ด์žฅ ๋ฐ์ดํ„ฐ์…‹์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๋ ค๋ฉด get_dataset_names() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. python sns . get_dataset_names ( ) [ 'anagrams' , 'anscombe' , 'attention' , 'brain_networks' , 'car_crashes' , 'diamonds' , 'dots' , 'exercise' , 'flights' , 'fmri' , 'gammas' , 'geyser' , 'iris' , 'mpg' , 'penguins' , 'planets' , 'taxis' , 'tips' , 'titanic' ] ์ด ๋ฐ์ดํ„ฐ์…‹ ์ค‘์—์„œ ๋ช‡ ๊ฐ€์ง€๋ฅผ ์„ ํƒํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 2) ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ Seborn์˜ ๋‚ด์žฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•˜๋ ค๋ฉด load_dataset() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. pandas๋ฅผ ์ด์šฉํ•ด ๊ฐ€์ ธ์˜จ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ load_dataset() ํ•จ์ˆ˜๋กœ ๋ถˆ๋Ÿฌ์˜จ ๋ฐ์ดํ„ฐ ํ˜•์‹๋„ DataFrame ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋‹ค์Œ ๋ฐ์ดํ„ฐ์…‹์„ ๋ถˆ๋Ÿฌ์™€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. python df_titanic = sns . load_dataset ( 'titanic' ) df_iris = sns . load_dataset ( 'iris' ) df_penguins = sns . load_dataset ( 'penguins' ) df_tips = sns . load_dataset ( 'tips' ) df_diamonds = sns . load_dataset ( 'diamonds' ) df_planets = sns . load_dataset ( 'planets' ) 3) ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ํŒŒ์•… ๋ฐ์ดํ„ฐ์…‹์ด ์ž˜ ์ค€๋น„๋˜์—ˆ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ„๋‹จํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. pandas์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๋Š” ์ž์„ธํ•œ ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด Python pandas ๋ฐ์ดํ„ฐ ํ™•์ธ, ์ •๋ ฌ, ์„ ํƒํ•˜๋Š” ๋ฒ• ์—์„œ "๋ฐ์ดํ„ฐ ํ™•์ธ" ๋ถ€๋ถ„์„ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. python df . shape df . head ( ) df [ 'class' ] ๋ฐ์ดํ„ฐ์…‹์ด ์ž˜ ์ค€๋น„๋˜์—ˆ๋‹ค๋ฉด ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹œ๊ฐํ™”๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธํŽธ์—์„œ ์‹œ๊ฐํ™”ํ•  ๋ฐ์ดํ„ฐ๋Š” 1์ฐจ์› ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. 1์ฐจ์› ๋ฐ์ดํ„ฐ๋ž€ ์†์„ฑ(attribute)์ด 1๊ฐœ์ธ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. Numpy ๋ฐฐ์—ด์—์„œ ์›์†Œ๋ฅผ ํ•œ ์ค„๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ, ์—‘์…€์—์„œ ์—ด(columns)์ด 1๊ฐœ์ธ ๋ฐ์ดํ„ฐ, ๋…๋ฆฝ๋ณ€์ˆ˜(independent variable) ๋˜๋Š” ๋ณ€๋Ÿ‰(variate)์ด 1๊ฐœ์ธ ๋ฐ์ดํ„ฐ๋ผ๊ณ ๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1์ฐจ์› ๋ฐ์ดํ„ฐ๋Š” ์ˆ˜์น˜ํ˜•๊ณผ ๋ฒ”์ฃผํ˜•์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์ˆ˜์น˜ํ˜•์€ ๋ณ€์ˆ˜๊ฐ€ ์‹ค์ˆซ๊ฐ’์ธ ์—ฐ์†์  ๋ณ€์ˆ˜(continous variables)์™€ ์ •์ˆซ๊ฐ’์ธ ์ด์‚ฐ์  ๋ณ€์ˆ˜(discrete variables)์ธ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ๋ฒ”์ฃผํ˜•์€ ๋ณ€์ˆ˜๊ฐ€ ์นดํ…Œ๊ณ ๋ฆฌ(category)์ฒ˜๋Ÿผ ๋ถ„๋ฅ˜๋œ ์งˆ์  ๋ณ€์ˆ˜(qualitative variables)๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ 1์ฐจ์› ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ์‹œ๊ฐํ™”ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: ๋ฒ”์ฃผํ˜• ์ผ๋ณ€๋Ÿ‰ ๋ฒ”์ฃผํ˜• ์ž๋ฃŒ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ๋Š” ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„(bar graph)์™€ ํŒŒ์ด ์ฐจํŠธ(pie chart)๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, Seaborn์—๋Š” ํŒŒ์ด ์ฐจํŠธ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ํŒŒ์ด ์ฐจํŠธ๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด Matplotlib์„ ์ด์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋ฐฉ๋ฒ•์€ ํŒŒ์ด์ฌ Matplotlib ์‚ฌ์šฉ๋ฒ•(์˜ˆ์ •)์„ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. ์—ฌ๊ธฐ์„œ๋Š” Seaborn์œผ๋กœ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1) ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„: countplot() Seaborn์œผ๋กœ ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ํ•จ์ˆ˜๋Š” countplot() ์ž…๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ๊ฐ ๋ฒ”์ฃผ์— ์†ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋นˆ๋„(๊ฐœ์ˆ˜)๋ฅผ ๋ง‰๋Œ€์˜ ๋†’์ด๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ์ˆ˜์ง ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ถ€ํ„ฐ ๊ทธ๋ ค๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ˆ˜์ง ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ๊ธฐ๋ณธ Seaborn์œผ๋กœ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ธฐ๋ณธ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. python sns . countplot ( df_titanic [ 'class' ] ) sns . countplot ( x = df_titanic [ 'class' ] ) sns . countplot ( x = 'class' , data = df_titanic ) ์ฝ”๋“œ1์— ์•„๋ž˜์™€ ๊ฐ™์ด ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. color: ๋ง‰๋Œ€ ์ƒ‰ ์ง€์ • edgecolor: ๋ง‰๋Œ€ ํ…Œ๋‘๋ฆฌ์ƒ‰ ์ง€์ • palette: ๊ทธ๋ž˜ํ”„ ์ƒ‰ ์ง€์ • alpha: ๊ทธ๋ž˜ํ”„ ํˆฌ๋ช…๋„ ์ง€์ • linewidth: ๊ทธ๋ž˜ํ”„ ๊ตต๊ธฐ ์ง€์ • palette ์˜ ๋‹ค์–‘ํ•œ ์˜ต์…˜์€ Seaborn ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€ color palette ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. python sns . countplot ( x = 'class' , data = df_titanic , color = 'skyblue' ) sns . countplot ( x = 'class' , data = df_titanic , palette = 'Set3' ) sns . countplot ( x = 'class' , data = df_titanic , facecolor = ( 0 , 0 , 0 , 0 ) , linewidth = 5 , edgecolor = sns . color_palette ( 'dark' , 3 ) ) ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. countplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ย  countplot() ํ•จ์ˆ˜ ์™ธ์—๋„ catplot() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. catplot() ํ•จ์ˆ˜๋Š” ์ˆ˜์น˜ํ˜• ๋ณ€์ˆ˜์™€ ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•จ์ˆ˜์ด์ง€๋งŒ, kind='count' ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋นˆ๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ฝ”๋“œ1๊ณผ ๋™์ผ). python sns . catplot ( x = 'class' , kind = 'count' , data = df_titanic ) catplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ย  ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ๋งŒ์ผ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด order ํŒŒ๋ผ๋ฏธํ„ฐ์— df.value_counts().index ์ฝ”๋“œ๋ฅผ ๋”ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. df.value_counts().index ๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋นˆ๋„๊ฐ€ ๋†’์€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์ค๋‹ˆ๋‹ค. ์˜ˆ์‹œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. python sns . countplot ( x = 'class' , data = df_titanic , order = df_titanic [ 'class' ] . value_counts ( ) . index ) ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ย  ์š”์•ฝ๊ฐ’ ํ‘œ์‹œ ๊ฐ ๋ง‰๋Œ€ ์œ„์— ์š”์•ฝ๊ฐ’์„ ์ˆซ์ž๋กœ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•œ ๋’ค ax.bar_label(ax.containers[0]) ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. python ax = sns . countplot ( df_titanic [ 'class' ] ) ax . bar_label ( ax . containers [ 0 ] ) ์š”์•ฝ๊ฐ’์„ ํ‘œ์‹œํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ย  ์ƒ‰๊น” ๊ฐ•์กฐ ํŠน์ • ๋ง‰๋Œ€์˜ ์ƒ‰๊น”์„ ๊ฐ•์กฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ€์žฅ ๋นˆ๋„์ˆ˜๊ฐ€ ๋†’์€ ๋ง‰๋Œ€๋งŒ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด numpy ์™€ barplot() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. python values = np . array ( df_titanic [ 'class' ] . value_counts ( ) ) idx = np . array ( df_titanic [ 'class' ] . value_counts ( ) . index ) palette = [ 'skyblue' if ( x == max ( values ) ) else 'lightgrey' for x in values ] sns . barplot ( x = idx , y = values , palette = palette ) ํŠน์ • ๋ง‰๋Œ€๋ฅผ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ๊ฐ•์กฐํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ย  ์ˆ˜ํ‰ ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ Seaborn์œผ๋กœ ์ผ๋ณ€๋Ÿ‰ ๋ฒ”์ฃผํ˜• ์ž๋ฃŒ์— ๋Œ€ํ•œ ๊ฐ€๋กœ ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด countplot() ํ•จ์ˆ˜์— x ๋งค๊ฐœ๋ณ€์ˆ˜ ๋Œ€์‹  y ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. python sns . countplot ( y = 'class' , data = df_titanic ) sns . catplot ( y = 'class' , kind = 'count' , palette = 'ch:.25' , data = df_titanic ) countplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜ํ‰ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ย  ์ง€๊ธˆ๊นŒ์ง€ ์ผ๋ณ€๋Ÿ‰ ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋กœ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ์ผ๋ณ€๋Ÿ‰ ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 2) ์ƒ์ž ๊ทธ๋ฆผ ์ƒ์ž ๊ทธ๋ฆผ(๋™์˜์–ด: box plot, ๋ฐ•์Šค ํ”Œ๋กฏ, ๋ฐ•์Šค ๊ทธ๋ž˜ํ”„, ์ƒ์ž ๊ทธ๋ž˜ํ”„)์€ ๋ฐ์ดํ„ฐ์˜ 5๊ฐ€์ง€ ํ†ต๊ณ„๋Ÿ‰(์ตœ์†Ÿ๊ฐ’, ์ œ1 ์‚ฌ๋ถ„์œ„, ์ œ 2์‚ฌ๋ถ„์œ„, ์ œ 3์‚ฌ๋ถ„์œ„, ์ตœ๋Œ“๊ฐ’)์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ์ƒ์ž๊ทธ๋ฆผ์€ ๋ฐ์ดํ„ฐ์˜ ์ „์ฒด์ ์ธ ๋ถ„ํฌ์™€ ์ด์ƒ์น˜๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. boxplot() ์ƒ์ž๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋ ค๋ฉด boxplot() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. python sns . boxplot ( data = df_iris , x = 'sepal_length' ) boxplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ƒ์ž ์ˆ˜์—ผ ๊ทธ๋ฆผย  catplot() ํ•จ์ˆ˜์— kind='box' ์˜ต์…˜์„ ์ฃผ์–ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. python sns . catplot ( data = df_iris , x = 'sepal_length' , kind = 'box' ) boxenplot() ๋ฐ์ดํ„ฐ์…‹์˜ ๋ฐ์ดํ„ฐ ๋ฒ”์œ„๊ฐ€ ํด ๊ฒฝ์šฐ์—๋Š” boxenplot() ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. boxenplot() ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ๋งŽ์€ ๋ถ„์œ„๋กœ ๋‚˜๋ˆ„์–ด ํฌ๊ธฐ๊ฐ€ ํฐ ๋ฐ์ดํ„ฐ์…‹์˜ ๋ฒ”์ฃผ๋ฅผ ์ƒ์ž๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•ด ์ค๋‹ˆ๋‹ค. python sns . boxenplot ( data = df_diamonds , x = 'price' ) boxenplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ƒ์ž๊ทธ๋ฆผย  catplot() ํ•จ์ˆ˜์— kind='boxen' ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. python sns . catplot ( data = df_diamonds , x = 'price' , kind = 'boxen' ) violinplot() ์ƒ์ž ๊ทธ๋ฆผ๊ณผ ์ปค๋„๋ฐ€๋„์ถ”์ •์œผ๋กœ ๊ตฌํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜๋ฅผ ํ•ฉ์ณ์„œ ๊ทธ๋ฆฌ๋ ค๋ฉด violinplot() ์„ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. python sns . violinplot ( data = df_iris , x = 'sepal_length' ) violinplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๋ฐ”์ด์˜ฌ๋ฆฐ ํ”Œ๋กฏย  python sns . catplot ( data = df_iris , x = 'sepal_length' , kind = 'violin' ) ์œ„ ๊ทธ๋ž˜ํ”„์—์„œ ๊ฐ€์šด๋ฐ ํฐ์ƒ‰ ์ ์€ ์ค‘์•™๊ฐ’(median)์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋˜ํ•œ, ํฐ์ƒ‰ ์ ์„ ๋‘˜๋Ÿฌ์‹ผ ๋‘๊บผ์šด ์„ ์€ ์‚ฌ๋ถ„์œ„ ๋ฒ”์œ„๋ฅผ, ๋‘๊บผ์šด ์„ ์—์„œ ์–‘ ๋์œผ๋กœ ์ด์–ด์ง€๋Š” ์–‡์€ ์„ ์€ 95% ์‹ ๋ขฐ ๊ตฌ๊ฐ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: ์ˆ˜์น˜ํ˜• ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ๋Š” ๋ถ„ํฌ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. 1) ์ ๊ทธ๋ž˜ํ”„: stripplot(), swarmplot() ์ ๊ทธ๋ž˜ํ”„(๋™์˜์–ด: dot graph, strip chart, ์ ๋„ํ‘œ)๋Š” ๋ฐ์ดํ„ฐ์˜ ์‹ค์ œ ์œ„์น˜๋ฅผ ์ (dots)์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ ๊ทธ๋ž˜ํ”„๋Š” ๋ฐ์ดํ„ฐ์˜ ์‹ค์ œ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. Seaborn์œผ๋กœ ์ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด stripplot() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. python sns . stripplot ( data = df_iris , x = 'sepal_length' ) sns . stripplot ( x = df_iris [ 'sepal_length' ] ) stripplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ ๊ทธ๋ž˜ํ”„ย  catplot() ํ•จ์ˆ˜์— kind='strip' ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. python sns . catplot ( data = df_iris , x = 'sepal_length' , kind = 'strip' ) ๋‹ค๋งŒ ์ ๊ทธ๋ž˜ํ”„์˜ ๊ฒฝ์šฐ ํ‘œํ˜„ํ•  ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋“ค์ด ๋งŽ์•„์ง€๋ฉด ์ ๋“ค์ด ๊ฒน์ณ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ๋Š” swarmplot() ์„ ์ด์šฉํ•ด ์ž๋ฃŒ๋ฅผ ํฉํŠธ๋ ค์„œ(jittering) ์  ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์„ ์กฐ์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. python sns . swarmplot ( data = df_iris , x = 'sepal_length' ) swarmplot() ํ•จ์ˆ˜๋กœ ํํŠธ๋ ค ๊ทธ๋ฆฐ ์ ๊ทธ๋ž˜ํ”„ย  2) ์„ ๋ถ„๊ทธ๋ž˜ํ”„: rugplot() ์„ ๋ถ„๊ทธ๋ž˜ํ”„(rug plot) ๋˜๋Š” ๋Ÿฌ๊ทธ ํ”Œ๋กฏ์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋ฅผ ์ถ• ์œ„์— ์ž‘์€ ์„ ๋ถ„(rug)์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ์„ ๋ถ„ ๊ทธ๋ž˜ํ”„์˜ ๊ฐ ์„ ๋ถ„์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋“ค์˜ ์œ„์น˜๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์„ ๋ถ„๋“ค์ด ์ด˜์ด˜ํžˆ ์žˆ์„์ˆ˜๋ก ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ€์ง‘๋˜์–ด ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋ณ€ ๋ถ„ํฌ(marginal distribution)์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์ฃผ๋กœ ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋Ÿฌ๊ทธ ํ”Œ๋กฏ์„ ๊ทธ๋ฆฌ๋ ค๋ฉด rugplot() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. displot() ํ•จ์ˆ˜์— rug=True ์˜ต์…˜์„ ์ฃผ์–ด๋„ ๋ฉ๋‹ˆ๋‹ค. ๋Ÿฌ๊ทธ๋ฅผ ์„ธ๋ถ€์ ์œผ๋กœ ์กฐ์ •ํ•ด์•ผ ํ•  ๋•Œ๋Š” displot() ํ•จ์ˆ˜๋ณด๋‹ค๋Š” rugplot() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. height: ์„ ๋ถ„ ๊ธธ์ด ์ง€์ • clip_on: ์„ ๋ถ„ ์ถ• ๋ฐ–์— ๊ทธ๋ฆฌ๊ธฐ ์ง€์ • lw: ์„ ๋ถ„ ์–‡๊ธฐ ์ง€์ • alpha: ์„ ๋ถ„ ํˆฌ๋ช…๋„ ์ง€์ • python sns . displot ( data = df_tips , x = 'total_bill' , rug = True ) sns . rugplot ( data = df_tips , x = 'total_bill' , height = .1 ) sns . rugplot ( data = df_tips , x = 'total_bill' , height = - .02 , clip_on = False ) sns . rugplot ( data = df_diamonds , x = 'carat' , lw = 1 , alpha = .005 ) rugplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๋‹ค์–‘ํ•œ ์„ ๋ถ„๊ทธ๋ž˜ํ”„ย  ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ ๊ฒฝ์šฐ ์ ๊ทธ๋ž˜ํ”„ ๋˜๋Š” ์„ ๋ถ„๊ทธ๋ž˜ํ”„๋งŒ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๊ฐ€ ์„œ๋กœ ๊ฒน์ณ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ๋„๊ตฌ๊ฐ€ ํžˆ์Šคํ† ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. 3) ํžˆ์Šคํ† ๊ทธ๋žจ: histplot() ํžˆ์Šคํ† ๊ทธ๋žจ(histogram)์€ ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ๊ตฌ๊ฐ„๋ณ„ ๋นˆ๋„์ˆ˜๋กœ ํ‘œํ˜„ํ•œ ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ๋ช‡ ๊ฐœ์˜ ๊ตฌ๊ฐ„์œผ๋กœ ๋‚˜๋ˆˆ ํ›„ ๊ฐ ๊ตฌ๊ฐ„์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜ ๋˜๋Š” ๋„์ˆ˜(frequency)๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๊ตฌ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฒ”์œ„๊ฐ€ ๋„“์€ ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ Seaborn์—์„œ ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ์ธ ๋‹จ๋ณ€๋Ÿ‰ ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๋งŒ๋“ค๋ ค๋ฉด histplot() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ปค๋„๋ฐ€๋„์ถ”์ •(Kernel Density Estimation, KDE) ๋ฐฉ๋ฒ•์œผ๋กœ ์Šค๋ฌด๋”ฉ(smoothing)ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจ์˜ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜(Probability Density Function, PDF)๋ฅผ ํ•จ๊ป˜ ๊ทธ๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด kde=True ์˜ต์…˜์„ ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. python sns . histplot ( df_penguins , x = 'flipper_length_mm' ) sns . histplot ( df_penguins [ 'flipper_length_mm' ] , kde = True ) displot() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. displot() ํ•จ์ˆ˜์˜ ์ดˆ๊ธฐ ๊ธฐ๋ณธ ์„ค์ •์€ kind='hist' ์ž…๋‹ˆ๋‹ค. displot() ํ•จ์ˆ˜์— kind ์˜ต์…˜์„ ๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. python sns . displot ( df_penguins , x = 'flipper_length_mm' ) sns . displot ( df_penguins [ 'flipper_length_mm' ] , kde = True ) histplot() ํ•จ์ˆ˜๋กœ ๋งŒ๋“  ๋‹จ๋ณ€๋Ÿ‰ ํžˆ์Šคํ† ๊ทธ๋žจย  python sns . displot ( df_diamonds , x = 'carat' , kde = True ) ํžˆ์Šคํ† ๊ทธ๋žจ๊ณผ ์ปค๋„๋ฐ€๋„์ถ”์ •์œผ๋กœ ๊ตฌํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜ย  ํŠน์ • ์กฐ๊ฑด pandas๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ฑด๋ณ„๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ๋Š” 'species'๊ฐ€ 'Adelie'์ธ ํŽญ๊ท„์˜ 'flipper_length_mm'๋ฅผ ๊ด€์ธกํ•œ ๊ฐ’์— ๋Œ€ํ•ด ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๊ทธ๋ฆฌ๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. python sns . histplot ( df_penguins [ df_penguins [ 'species' ] == 'Adelie' ] [ 'flipper_length_mm' ] ) ๋“ฑ๊ธ‰ ์ˆ˜์™€ ๋“ฑ๊ธ‰ ํญ: bins, binwidth ํžˆ์Šคํ† ๊ทธ๋žจ์—์„œ๋Š” ๋“ฑ๊ธ‰์˜ ์ˆ˜ ๋˜๋Š” ๋“ฑ๊ธ‰์˜ ํญ์— ๋”ฐ๋ผ ๊ทธ๋ž˜ํ”„์˜ ๋ชจ์–‘์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋“ฑ๊ธ‰์˜ ์ˆ˜๋Š” bins ์˜ต์…˜์œผ๋กœ, ๋“ฑ๊ธ‰ํญ์€ binwidth ์˜ต์…˜์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. python sns . histplot ( df_penguins , x = 'flipper_length_mm' , bins = 10 ) sns . histplot ( df_penguins , x = 'flipper_length_mm' , binwidth = 3 ) ๊ตฌ๊ฐ„์˜ ์ˆ˜์™€ ๊ตฌ๊ฐ„์˜ ํญ์„ ์กฐ์ •ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจย  ๋“ฑ๊ธ‰๋ช…, ๋“ฑ๊ธ‰๋ช… ์œ„์น˜, ๋“ฑ๊ธ‰ ์‚ฌ์ด ๊ณต๊ฐ„: bins=๋ฆฌ์ŠคํŠธ, discrete=True, shrink ํžˆ์Šคํ† ๊ทธ๋žจ์€ ์ฃผ๋กœ ์—ฐ์†์  ์ž๋ฃŒ๋ฅผ ์‹œ๊ฐํ™”ํ•  ๋•Œ ์“ฐ์ด์ง€๋งŒ, ์ข…์ข… ์ด์‚ฐ์  ์ž๋ฃŒ(discrete data)๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด์‚ฐ์  ์ž๋ฃŒ๋Š” ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋กœ ๋ณ€ํ˜•ํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๊ธ‰ ๋ช…์‹œ ๋“ฑ๊ธ‰๋ช…์ด ๋ง‰๋Œ€์˜ ์ค‘์•™์— ์˜ค๋„๋ก ์œ„์น˜ ๋ณ€์ˆ˜๊ฐ€ ์—ฐ์†์ ์ด์ง€ ์•Š๊ณ  ์ด์‚ฐ์ ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ๋“ฑ๊ธ‰๊ณผ ๋“ฑ๊ธ‰ ์‚ฌ์ด์— ์—ฌ์œ  ๋‘๊ธฐ ์ด๋ฅผ ๋„์™€์ฃผ๋Š” ์˜ต์…˜์ด ๊ฐ๊ฐ bins=๋ฆฌ์ŠคํŠธ , discrete=True , shrink ์ž…๋‹ˆ๋‹ค. ๊ฐ ์˜ต์…˜์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. bins=๋ฆฌ์ŠคํŠธ: ๊ทธ๋ž˜ํ”„์˜ x์ถ•์— ๋ช…์‹œํ•  ๋“ฑ๊ธ‰์„ ์ง์ ‘ ์ง€์ • discrete=True: ๊ฐ ๋“ฑ๊ธ‰์ด ๋ง‰๋Œ€ ์ค‘์•™์— ์˜ค๋„๋ก ์œ„์น˜ shrink: ๊ฐ ๋ง‰๋Œ€ ์‚ฌ์ด์— ๊ณต๊ฐ„์„ ๋งˆ๋ จ ์˜ˆ์ œ ์ฝ”๋“œ์™€ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. python sns . histplot ( df_tips , x = 'size' ) sns . histplot ( df_tips , x = 'size' , bins = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] ) sns . histplot ( df_tips , x = 'size' , discrete = True ) sns . histplot ( df_tips , x = 'size' , discrete = True , shrink = .8 ) ๋“ฑ๊ธ‰๋ช…๊ณผ ๋“ฑ๊ธ‰๋ช…์˜ ์œ„์น˜, ๋“ฑ๊ธ‰ ์‚ฌ์ด์˜ ๊ณต๊ฐ„์„ ์กฐ์ •ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจย  ๋‹จ, ํžˆ์Šคํ† ๊ทธ๋žจ์€ ๋ฐ์ดํ„ฐ์˜ ์—ฐ์†์  ํŠน์„ฑ์„ ์˜จ์ „ํžˆ ํ‘œํ˜„ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๊ฐ„์˜ ํฌ๊ธฐ์™€ ์‹œ์ž‘์ ์— ๋”ฐ๋ผ ๋ถ„ํฌ์˜ ๋ชจ์–‘์ด ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์—ฐ์†ํ˜• ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ๋ถ€๋“œ๋Ÿฌ์šด ๊ณก์„ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ์š”? 4) ์ปค๋„๋ฐ€๋„์ถ”์ •์œผ๋กœ ๊ตฌํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜: kdeplot() ์ปค๋„๋ฐ€๋„์ถ”์ •(Kernel density estimation)์€ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜๋ฅผ ๋ถ€๋“œ๋Ÿฌ์šด ๊ณก์„ ์œผ๋กœ ์ถ”์ •ํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ด์‚ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ํžˆ์Šคํ† ๊ทธ๋žจ ๋Œ€์‹  ๋งค๋„๋Ÿฌ์šด ๊ณก์„ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ปค๋„ ๋ฐ€๋„ ํ•จ์ˆ˜(Kernel density function)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ kdeplot() ํ•จ์ˆ˜๋Š” ๋‹จ๋ณ€๋Ÿ‰ ๋˜๋Š” ์ด๋ณ€๋Ÿ‰ ๋ฐ์ดํ„ฐ์˜ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜๋ฅผ ์ถ”์ •ํ•˜์—ฌ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ‰ํ™œ๋Ÿ‰(bandwidth)์„ ์กฐ์ •ํ•˜๋ ค๋ฉด bw_adjust ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜์˜ ๋ถ€๋“œ๋Ÿฌ์›€(smoothness) ์ •๋„๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. python sns . kdeplot ( data = df_penguins , x = 'flipper_length_mm' ) sns . kdeplot ( data = df_penguins , x = 'flipper_length_mm' , bw_adjust = .25 ) ์ฝ”๋“œ 2 displot() ํ•จ์ˆ˜์— kind='kde' ์˜ต์…˜์„ ์ฃผ์–ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. python sns . displot ( penguins , x = 'flipper_length_mm' , kind = 'kde' ) sns . displot ( penguins , x = 'flipper_length_mm' , kind = 'kde' , bw_adjust = .25 ) kdeplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜ย  ๋งŒ์ผ displot() ํ•จ์ˆ˜์— kde=True ์˜ต์…˜์„ ์ง€์ •ํ•˜๋ฉด ํžˆ์Šคํ† ๊ทธ๋žจ๊ณผ ์ปค๋„๋ฐ€๋„์ถ”์ • ํ•จ์ˆ˜๋ฅผ ๋™์‹œ์— ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ”์œ„ ์ œํ•œ: cut ์—ฐ์†์  ๋ณ€์ˆ˜๊ฐ€ ๋ฌดํ•œํžˆ ์ปค์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” cut ์ด๋ผ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์–‘ ๋์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. python sns . kdeplot ( df_tips , x = 'total_bill' , kind = 'kde' ) sns . kdeplot ( df_tips , x = 'total_bill' , kind = 'kde' , cut = 0 ) ์–‘ ๋์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜ย  ์ƒ‰์ƒ: shade KDE ๋ฐ€๋„ ๊ณก์„  ์•„๋ž˜์— ์ƒ‰์„ ์ฑ„์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด shade=True ์˜ต์…˜์„ ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 5) ๊ฒฝํ—˜์  ๋ˆ„์ ๋ถ„ํฌํ•จ์ˆ˜: edcfplot() ๊ฒฝํ—˜์  ๋ˆ„์ ๋ถ„ํฌํ•จ์ˆ˜(empirical cumulative distribution function, ECDF)๋Š” n๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๊ฐ๊ฐ์—์„œ 1/n ์”ฉ ์ ํ”„ํ•˜๋Š” ๊ณ„๋‹จ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ CDF๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. ECDF ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด ecdfplot() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. python sns . ecdfplot ( df_penguins , x = 'flipper_length_mm' ) ecdfplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๊ฒฝํ—˜์  ๋ˆ„์ ๋ถ„ํฌํ•จ์ˆ˜ย  displot() ํ•จ์ˆ˜์— kind='ecdf' ์˜ต์…˜์„ ์ฃผ์–ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. python sns . displot ( df_penguins , x = 'flipper_length_mm' , kind = 'ecdf' ) ์ง€๊ธˆ๊นŒ์ง€ ํŒŒ์ด์ฌ Seaborn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ 1์ฐจ์› ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Seaborn ์‚ฌ์šฉ๋ฒ• ์‹ฌํ™”ํŽธ ์—์„œ ๋‹ค์ฐจ์› ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ ์ˆ˜๊ณ  ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ  ๋ฌธํ—Œ [1] ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธ์Šค ์Šค์ฟจ, ๏ฝขํŒŒ์ด์ฌํŽธ 5์žฅ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: Seaborn์„ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„ํฌ ์‹œ๊ฐํ™”๏ฝฃ, ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธ์Šค ์Šค์ฟจ, " https://datascienceschool.net/ " [2] ์•„๋ฌดํŠผ์›Œ๋ผ๋ฒจ, ๏ฝข์ •๊ทœํ™”(Normalization) ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ๏ฝฃ, ์•„๋ฌดํŠผ์›Œ๋ผ๋ฒจ, " https://hleecaster.com/ml-normalization-concept/ " [3] ์•„๋ฌดํŠผ์›Œ๋ผ๋ฒจ, ๏ฝข[seaborn] ๋ฐ”์ด์˜ฌ๋ฆฐ ํ”Œ๋กฏ๏ฝฃ, ์•„๋ฌดํŠผ์›Œ๋ผ๋ฒจ, " https://hleecaster.com/python-seaborn-violinplot/ " [4] Codeacademy Team, ๏ฝขSeaborn Styling, Part 1: Figure Style and Scale๏ฝฃ, Codecademy, " https://www.codecademy.com/article/seaborn-design-i " [5] Codeacademy Team, ๏ฝขSeaborn Styling, Part 2: Color๏ฝฃ, Codecademy, " https://www.codecademy.com/article/seaborn-design-ii " [6] Mahbubul Alam, ๏ฝขSeaborn can do the job, then why Matplotlib?๏ฝฃ, Towards Data Science, " https://towardsdatascience.com/seaborn-can-do-the-job-then-why-matplotlib-dac8d2d24a5f " [7] Seaborn, ๏ฝขseaborn: statistical data visualization๏ฝฃ, Seaborn, " https://seaborn.pydata.org/index.html " [8] StackOverflow, ๏ฝขHow to set a different color to the largest bar in a seaborn barplot๏ฝฃ, StackOverflow, " https://stackoverflow.com/questions/31074758/how-to-set-a-different-color-to-the-largest-bar-in-a-seaborn-barplot " ๋‹ค์Œ ๊ธ€
Markdown
[![snugarchive logo](https://www.snugarchive.com/static/logo-a1dafce07d59c15244126c7d39541645.png)](https://www.snugarchive.com/) - [ํ™ˆ](https://www.snugarchive.com/) - [๊ธ€](https://www.snugarchive.com/blog/posts/) - [ํ”„๋กœ์ ํŠธ](https://www.snugarchive.com/blog/projects/) - [๋ฌธ์˜](https://www.snugarchive.com/contact/) - [ํƒœ๊ทธ](https://www.snugarchive.com/tags/) - [ํ™ˆ](https://www.snugarchive.com/) - [๊ธ€](https://www.snugarchive.com/blog/posts/) - [์ปดํ“จํ„ฐ ๊ณผํ•™](https://www.snugarchive.com/blog/category/computer-science/) - [๋ฐ์ดํ„ฐ ๊ณผํ•™](https://www.snugarchive.com/blog/category/data-science/) - [ํ™˜๊ฒฝ ์„ค์ •](https://www.snugarchive.com/blog/category/environment-setup/) - [์ˆ˜ํ•™](https://www.snugarchive.com/blog/category/mathematics/) - [์ž์—ฐ์–ด](https://www.snugarchive.com/blog/category/natural-language/) - [ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด](https://www.snugarchive.com/blog/category/programming-language/) - [์›น ๊ฐœ๋ฐœ](https://www.snugarchive.com/blog/category/web-development/) - [ํ”„๋กœ์ ํŠธ](https://www.snugarchive.com/blog/projects/) - [๋ฌธ์˜](https://www.snugarchive.com/contact/) - [ํƒœ๊ทธ](https://www.snugarchive.com/tags/) [๋ฐ์ดํ„ฐ ๊ณผํ•™](https://www.snugarchive.com/blog/category/data-science/)[๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”](https://www.snugarchive.com/blog/category/data-science/visualization/) # ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Seaborn ์‚ฌ์šฉ๋ฒ• ๊ธฐ์ดˆํŽธ ## 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Last Updated 2024-09-10 Published 2022-06-05 - [Python Seaborn](https://www.snugarchive.com/tag/python-seaborn/) 8๋ถ„ #### ๋ชฉ์ฐจ 1. [์ค€๋น„ํ•˜๊ธฐ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EC%A4%80%EB%B9%84%ED%95%98%EA%B8%B0) - [์•ˆ๋‚ด ์‚ฌํ•ญ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EC%95%88%EB%82%B4-%EC%82%AC%ED%95%AD) - [์„ค์น˜ํ•˜๊ธฐ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0) - [๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ •](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EA%B8%B0%EB%B3%B8-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95) - [์ „์ฒด ์Šคํƒ€์ผ๋ง](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EC%A0%84%EC%B2%B4-%EC%8A%A4%ED%83%80%EC%9D%BC%EB%A7%81) - [๊ทธ๋ž˜ํ”„๋ณ„ ์Šคํƒ€์ผ๋ง](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EA%B7%B8%EB%9E%98%ED%94%84%EB%B3%84-%EC%8A%A4%ED%83%80%EC%9D%BC%EB%A7%81) - [๋ฐ์ดํ„ฐ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EB%8D%B0%EC%9D%B4%ED%84%B0) 2. [1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: ๋ฒ”์ฃผํ˜•](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#1%EC%B0%A8%EC%9B%90-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8B%9C%EA%B0%81%ED%99%94-%EB%B2%94%EC%A3%BC%ED%98%95) - [1\) ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„: countplot()](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#1-%EB%B9%88%EB%8F%84-%EB%A7%89%EB%8C%80%EA%B7%B8%EB%9E%98%ED%94%84-countplot) - [2\) ์ƒ์ž ๊ทธ๋ฆผ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#2-%EC%83%81%EC%9E%90-%EA%B7%B8%EB%A6%BC) 3. [1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: ์ˆ˜์น˜ํ˜•](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#1%EC%B0%A8%EC%9B%90-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8B%9C%EA%B0%81%ED%99%94-%EC%88%98%EC%B9%98%ED%98%95) - [1\) ์ ๊ทธ๋ž˜ํ”„: stripplot(), swarmplot()](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#1-%EC%A0%90%EA%B7%B8%EB%9E%98%ED%94%84-stripplot-swarmplot) - [2\) ์„ ๋ถ„๊ทธ๋ž˜ํ”„: rugplot()](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#2-%EC%84%A0%EB%B6%84%EA%B7%B8%EB%9E%98%ED%94%84-rugplot) - [3\) ํžˆ์Šคํ† ๊ทธ๋žจ: histplot()](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#3-%ED%9E%88%EC%8A%A4%ED%86%A0%EA%B7%B8%EB%9E%A8-histplot) - [4\) ์ปค๋„๋ฐ€๋„์ถ”์ •์œผ๋กœ ๊ตฌํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜: kdeplot()](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#4-%EC%BB%A4%EB%84%90%EB%B0%80%EB%8F%84%EC%B6%94%EC%A0%95%EC%9C%BC%EB%A1%9C-%EA%B5%AC%ED%95%9C-%ED%99%95%EB%A5%A0%EB%B0%80%EB%8F%84%ED%95%A8%EC%88%98-kdeplot) - [5\) ๊ฒฝํ—˜์  ๋ˆ„์ ๋ถ„ํฌํ•จ์ˆ˜: edcfplot()](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#5-%EA%B2%BD%ED%97%98%EC%A0%81-%EB%88%84%EC%A0%81%EB%B6%84%ED%8F%AC%ED%95%A8%EC%88%98-edcfplot) 4. [์ฐธ๊ณ  ๋ฌธํ—Œ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EC%B0%B8%EA%B3%A0-%EB%AC%B8%ED%97%8C) ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='900'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAMBAgQF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAeyjTRlpIP8A/8QAGBABAQEBAQAAAAAAAAAAAAAAAQACETH/2gAIAQEAAQUCWzrrnxLgRf/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABURAQEAAAAAAAAAAAAAAAAAAAEQ/9oACAECAQE/ASf/xAAZEAADAAMAAAAAAAAAAAAAAAAAEDEBUWH/2gAIAQEABj8CzwhpRf/EABsQAAMAAwEBAAAAAAAAAAAAAAABESFRcTFh/9oACAEBAAE/Ib9PNikRLD4cE9ZeaJywJFg//9oADAMBAAIAAwAAABCU/wD/xAAWEQEBAQAAAAAAAAAAAAAAAAABACH/2gAIAQMBAT8QRWDL/8QAFhEBAQEAAAAAAAAAAAAAAAAAAQAR/9oACAECAQE/EEG7N//EABsQAQADAAMBAAAAAAAAAAAAAAEAESExUWGR/9oACAEBAAE/EDA4ws/UOLxUN9esFaPg3ADRQ3R2DACDwEMy1O63P//Z) ![ํŒŒ์ด์ฌ-๋ฐ์ดํ„ฐ-์‹œ๊ฐํ™”-๊ธฐ์ดˆ-seaborn-์”จ๋ณธ](https://www.snugarchive.com/static/9a7155ba095434e2ba8bc565b127bfb5/93fdb/featured-image-seaborn-univariate.jpg) ![ํŒŒ์ด์ฌ-๋ฐ์ดํ„ฐ-์‹œ๊ฐํ™”-๊ธฐ์ดˆ-seaborn-์”จ๋ณธ](https://www.snugarchive.com/static/9a7155ba095434e2ba8bc565b127bfb5/93fdb/featured-image-seaborn-univariate.jpg) Seaborn์œผ๋กœ ์ผ๋ณ€๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™” ํ•ด๋ณด์ž [Snug Archive](https://www.snugarchive.com/) ํŒŒ์ด์ฌ(Python)์—๋Š” [Matplotlib(๋งทํ”Œ๋กฏ๋ฆฝ)](https://matplotlib.org/), Plotly(ํ”Œ๋กœํ‹€๋ฆฌ), GGplot(์ง€์ง€ํ”Œ๋กฏ) ๋“ฑ ๋‹ค์–‘ํ•œ ์‹œ๊ฐํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. Matplotlib์€ ์ „ ์„ธ๊ณ„์˜ ๋ฐ์ดํ„ฐ ๊ณผํ•™์ž๋“ค์ด ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ฐํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Plotly๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ plotly.js๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ, ๊ทธ๋ž˜ํ”„์˜ ํŠน์ • ๋ถ€๋ถ„์„ ํ™•๋Œ€/์ถ•์†Œํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•˜๋Š” ๋“ฑ ์›น ์ƒ์—์„œ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. GGplot์€ R์˜ ggplot2 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐœ๋ฐœ๋˜์–ด, ๊ธฐ์กด์˜ R ์‚ฌ์šฉ์ž๋“ค์ด ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Seaborn์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”? ๋˜, ๋งŽ์€ ์‹œ๊ฐํ™” ๋„๊ตฌ ์ค‘์—์„œ Seaborn์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? Seaborn์€ Matplotlib์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋œ ๊ณ ์ˆ˜์ค€(high-level) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Seaborn์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ๊ฐ„๊ฒฐํ•จ์ž…๋‹ˆ๋‹ค. Seaborn์„ ์ด์šฉํ•˜๋ฉด ๋น„๊ต์  ์งง์€ ์ฝ”๋“œ๋กœ๋„ ํ†ต๊ณ„ํ•™์˜ ์ฃผ์š” ๊ทธ๋ž˜ํ”„๋ฅผ ๋น ๋ฅด๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„๋ฅผ ์„ธ๋ถ€ ์„ค์ • ์—†์ด ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๊ทธ๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด Matplotlib๋ณด๋‹ค Seaborn์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. Seaborn์˜ ์‚ฌ์šฉ๋ฒ•์€ ๊ธฐ์ดˆํŽธ๊ณผ ์‹ฌํ™”ํŽธ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๊ธฐ์ดˆํŽธ์—์„œ๋Š” Seaborn์„ ์„ค์น˜ํ•˜๊ณ  ์‹ค์Šต์„ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ•๊ณผ ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ์ธ 1์ฐจ์› ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. [ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Seaborn ์‚ฌ์šฉ๋ฒ• ์‹ฌํ™”ํŽธ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-advanced/)์—์„œ๋Š” ๋ณ€๋Ÿ‰์ด 2๊ฐœ ์ด์ƒ์ธ ๋‹ค์ฐจ์› ๊ทธ๋ž˜ํ”„๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธํŽธ์—์„œ ๋‹ค๋ฃฐ ์ „์ฒด ๊ทธ๋ž˜ํ”„์˜ ๊ฐœ์š”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='900'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAMBAgQF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAeyjTRlpIP8A/8QAGBABAQEBAQAAAAAAAAAAAAAAAQACETH/2gAIAQEAAQUCWzrrnxLgRf/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABURAQEAAAAAAAAAAAAAAAAAAAEQ/9oACAECAQE/ASf/xAAZEAADAAMAAAAAAAAAAAAAAAAAEDEBUWH/2gAIAQEABj8CzwhpRf/EABsQAAMAAwEBAAAAAAAAAAAAAAABESFRcTFh/9oACAEBAAE/Ib9PNikRLD4cE9ZeaJywJFg//9oADAMBAAIAAwAAABCU/wD/xAAWEQEBAQAAAAAAAAAAAAAAAAABACH/2gAIAQMBAT8QRWDL/8QAFhEBAQEAAAAAAAAAAAAAAAAAAQAR/9oACAECAQE/EEG7N//EABsQAQADAAMBAAAAAAAAAAAAAAEAESExUWGR/9oACAEBAAE/EDA4ws/UOLxUN9esFaPg3ADRQ3R2DACDwEMy1O63P//Z) ![Seaborn 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๋กœ๋“œ๋งต](https://www.snugarchive.com/static/9a7155ba095434e2ba8bc565b127bfb5/93fdb/featured-image-seaborn-univariate.jpg) ![Seaborn 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๋กœ๋“œ๋งต](https://www.snugarchive.com/static/9a7155ba095434e2ba8bc565b127bfb5/93fdb/featured-image-seaborn-univariate.jpg) Seaborn 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๋กœ๋“œ๋งต ๊ทธ๋Ÿผ Seaborn์œผ๋กœ 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”๋ฅผ ํ•˜๊ธฐ ์ „์— ์ค€๋น„ํ•  ์‚ฌํ•ญ๋ถ€ํ„ฐ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ## ์ค€๋น„ํ•˜๊ธฐ ### ์•ˆ๋‚ด ์‚ฌํ•ญ Seaborn์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ค€๋น„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ์งธ, ์‹ค์Šต ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธ์Šค(Data Science)๋ฅผ ์œ„ํ•œ ํ†ตํ•ฉ๊ฐœ๋ฐœํ™˜๊ฒฝ(IDE)์—๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ ์ŠคํŒŒ์ด๋”(Spyder), ์•„ํ†ฐ(Atom), ํŒŒ์ด์ฐธ(PyCharm) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ(Jupyter Notebook)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ์˜ ์ž์„ธํ•œ ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ•์€ [์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ](https://www.snugarchive.com/blog/jupyter-notebook-setup/)๋ฅผ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. ๋‘˜์งธ, ํ†ต๊ณ„ ์šฉ์–ด์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์šฉ์–ด๋Š” ๊ฐ„๋žตํžˆ ์„ค๋ช…ํ•  ์˜ˆ์ •์ด๋‚˜, ๊ฐœ๋…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์ด๋‚˜ ์ˆ˜์‹์€ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ†ต๊ณ„ ์šฉ์–ด๋ฅผ ์ฐธ์กฐํ•˜๋ฉด์„œ ๊ธ€์„ ์ฝ๊ณ  ์‹ถ์€ ๋ถ„๋“ค์€ [ํ™•๋ฅ ๊ณผ ํ†ต๊ณ„ ๊ธฐ์ดˆ ์šฉ์–ด](https://www.snugarchive.com/blog/glossary-statistical-terms/)๋ฅผ ํ•จ๊ป˜ ์ฝ์œผ์‹œ๊ธฐ๋ฅผ ๊ถŒํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์…‹์งธ, Seaborn ํ•จ์ˆ˜์˜ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค. Seaborn์˜ ์‹œ๊ฐํ™” ํ•จ์ˆ˜๋Š” ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€(figure-level)์˜ ํ•จ์ˆ˜์™€ ์ถ• ์ˆ˜์ค€(axes-level)์˜ ํ•จ์ˆ˜๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€์˜ ํ•จ์ˆ˜๋Š” ์ƒ์œ„ ํ•จ์ˆ˜๋กœ ๊ทธ๋ž˜ํ”„์˜ ์ข…๋ฅ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜๋Š” ๊ฐ ๊ทธ๋ž˜ํ”„์˜ ์ข…๋ฅ˜์— ํŠนํ™”๋œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜๋Š” 1๊ฐ€์ง€ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฐ ๋งž์ถคํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‘ ์ข…๋ฅ˜์˜ ํ•จ์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ธฐ์ค€์€ `Grid`์˜ ์ƒ์„ฑ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. `displot()`, `catplot()`, `relplot()` ํ•จ์ˆ˜๋Š” ๋ชจ๋‘ ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€ ํ•จ์ˆ˜์ด๋ฉฐ `seaborn.axisgrid.FacetGrid`๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, `countplot()`, `hisplot()`, `striplot()` ๋“ฑ๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋Š” ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜์ด๋ฉฐ ๊ฒฐ๊ณผ๋กœ `AxesSubplot`์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. `FacetGrid`๋Š” ์—ฌ๋Ÿฌ ๊ทธ๋ž˜ํ”„๋ฅผ ํฌํ•จํ•˜๋Š” ์ƒ์œ„ ๊ทธ๋ž˜ํ”„๋กœ, `FacetGrid`์—์„œ ํŠน์ • ํ•˜์œ„ `AxesSubplot` ๊ทธ๋ž˜ํ”„๋งŒ ์ถ”์ถœํ•ด ์›ํ•˜๋Š” ์กฐ๊ฑด์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜์ด ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ ๋ณดํ†ต ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€ ํ•จ์ˆ˜์™€ ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜์˜ ์˜ต์…˜์€ ์„œ๋กœ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, Matplotlib ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด๋‚˜ ํ•œ ๊ทธ๋ž˜ํ”„ ์œ„์— ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ฒน์ณ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ๋Š” ์ถ• ์ˆ˜์ค€์˜ ํ•จ์ˆ˜๊ฐ€ ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€ ํ•จ์ˆ˜๋ณด๋‹ค ์กฐ๊ธˆ ๋” ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€์˜ ํ•จ์ˆ˜๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ดํŽด๋ณด๋˜, ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€์œผ๋กœ ๊ทธ๋ฆด ์ˆ˜ ์—†๋Š” ๊ทธ๋ž˜ํ”„๋Š” ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ง€๊ธˆ๋ถ€ํ„ฐ Seaborn์„ ์„ค์น˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ### ์„ค์น˜ํ•˜๊ธฐ #### 1\) ํŒŒ์ด์ฌ ๋ฐ pip ์„ค์น˜ ์—ฌ๋ถ€ ํ™•์ธ Seaborn์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํŒŒ์ด์ฌ๊ณผ ํŒŒ์ด์ฌ์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋งค๋‹ˆ์ €์ธ `pip`์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์‹œ์Šคํ…œ์— ํŒŒ์ด์ฌ๊ณผ `pip`์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonpython -V # ํŒŒ์ด์ฌ ์„ค์น˜ ์—ฌ๋ถ€ ํ™•์ธpip -v # pip ์„ค์น˜ ์—ฌ๋ถ€ ํ™•์ธ ``` ํŒŒ์ด์ฌ๊ณผ `pip`์ด ์ž˜ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด Seaborn์„ ์„ค์น˜ํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ Seaborn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. #### 2\) ํŒจํ‚ค์ง€ ์„ค์น˜ ํ„ฐ๋ฏธ๋„์— `pip install`์ด๋ผ๋Š” ๋ช…๋ น์–ด ๋‹ค์Œ ์„ค์น˜ํ•˜๋ ค๋Š” ํŒจํ‚ค์ง€์˜ ์ด๋ฆ„์ธ `seaborn`์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ``` pythonpip install seaborn # Seaborn ์„ค์น˜ ``` ํŒŒ์ด์ฌ/R ๋ฐฐํฌํŒ์ธ ์•„๋‚˜์ฝ˜๋‹ค(Anaconda)๋กœ ์ž‘์—…ํ•˜์‹œ๋Š” ๋ถ„๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์ด `pip` ๋ช…๋ น์–ด ๋Œ€์‹  `conda` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonconda install seaborn # Seaborn ์„ค์น˜ ``` #### 3\) ์„ค์น˜ ํ™•์ธ ์„ค์น˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ์ž˜ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€์˜ ์„ค์น˜ ์—ฌ๋ถ€๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์„ค์น˜๋œ ํŒจํ‚ค์ง€์˜ ๋ฒ„์ „ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์„œ ์„ค์น˜๋œ Seaborn์˜ ๋ฒ„์ „ ์ •๋ณด๊ฐ€ ๋ณด์ด๋ฉด Seaborn์ด ์ž˜ ์„ค์น˜๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ``` pythonimport seaborn as snssns.__version__ # ์„ค์น˜๋œ Seaborn ๋ฒ„์ „ ์ •๋ณด ํ™•์ธ ``` ๊ทธ๋ž˜ํ”„๋ฅผ ์ถœ๋ ฅํ•ด์„œ ์„ค์น˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` python# Seaborn ์„ค์น˜ ํ™•์ธ: ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅimport seaborn as snsdf = sns.load_dataset('penguins')sns.pairplot(df, hue='species') # ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ``` Seaborn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜๋ฅผ ์™„๋ฃŒํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ์€ ๊ธฐ๋ณธ์ ์ธ ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ### ๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ • ๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ •์€ ๊ทธ๋ž˜ํ”„ ์ „์—ญ์— ์ ์šฉ๋˜๋Š” ์Šคํƒ€์ผ๋ง(styling)์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ณ„ ํ™˜๊ฒฝ ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ํŒŒ์ด์ฌ Matplotlib ์‚ฌ์šฉ๋ฒ•(์˜ˆ์ •)์„ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` python# ํŒจํ‚ค์ง€ ์ž„ํฌํŠธimport numpy as np # Numpy(๋„˜ํŒŒ์ด) ํŒจํ‚ค์ง€ ์ž„ํฌํŠธimport pandas as pd # pandas(ํŒ๋‹ค์Šค) ํŒจํ‚ค์ง€ ์ž„ํฌํŠธimport matplotlib.pyplot as plt # Matplotlib(๋งทํ”Œ๋กฏ๋ฆฝ) ํŒจํ‚ค์ง€์˜ pyplot ๋ชจ๋“ˆ์„ plt๋กœ ์ž„ํฌํŠธfrom matplotlib import rcParams # ํ•œ๊ธ€ ํ™˜๊ฒฝ ์„ค์ •์„ ์œ„ํ•œ rcParams ์ž„ํฌํŠธimport seaborn as sns # Seaborn(์”จ๋ณธ) ํŒจํ‚ค์ง€ ์ž„ํฌํŠธimport warnings# ํ•œ๊ธ€ ํ™˜๊ฒฝ ์„ค์ •def setting_styles_basic():rcParams['font.family'] = 'Malgun Gothic' # Windows# rcParams['font.family'] = 'AppleGothic' # MacrcParams['axes.unicode_minus'] = False # ํ•œ๊ธ€ ํฐํŠธ ์‚ฌ์šฉ ์‹œ, ๋งˆ์ด๋„ˆ์Šค ๊ธฐํ˜ธ๊ฐ€ ๊นจ์ง€๋Š” ํ˜„์ƒ ๋ฐฉ์ง€setting_styles_basic()# ๊ฒฝ๊ณ ์ฐฝ ๋ฌด์‹œwarnings.filterwarnings('ignore') ``` Matplotlib์„ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  Seaborn์œผ๋กœ ํ™˜๊ฒฝ ์„ค์ •์„ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ### ์ „์ฒด ์Šคํƒ€์ผ๋ง Seaborn์—์„œ ๋ชจ๋“  ์Šคํƒ€์ผ๋ง์„ ํ•œ ๋ฒˆ์— ์„ค์ •ํ•˜๋ ค๋ฉด `set_theme()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. > - set\_theme: ๊ทธ๋ž˜ํ”„ ์ „๋ฐ˜ ๋ฐ ๋งค์ฒด๋ณ„ ์Šค์ผ€์ผ(scale), ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ ์ง€์ • ๋‹ค์Œ ํ•จ์ˆ˜๋Š” `set_theme()`์˜ ์ผ์„ ์—ญํ•  ๋ถ„๋‹ดํ•ฉ๋‹ˆ๋‹ค. > - set\_style: ๊ทธ๋ž˜ํ”„ ์ „๋ฐ˜ ์Šคํƒ€์ผ ์ง€์ • > - set\_context: ๋งค์ฒด๋ณ„ ์Šค์ผ€์ผ ์ง€์ • > - set\_palette: ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ ์ง€์ • #### set\_theme `set_theme()` ํ•จ์ˆ˜๋Š” ๊ทธ๋ž˜ํ”„ ์ „๋ฐ˜์— ์ ์šฉ๋˜๋Š” ํ…Œ๋งˆ(theme)๋ฅผ ์ง€์ •ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. `set_theme()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ทธ๋ž˜ํ”„ ์ „์—ญ์˜ ์Šคํƒ€์ผ๋ง์„ ์ง€์ •ํ•˜๋Š” `set_style()` ํ•จ์ˆ˜์™€ ์‚ฌ์šฉํ•  ๋งค์ฒด์— ์ ํ•ฉํ•˜๋„๋ก ๊ทธ๋ž˜ํ”„์˜ ์Šค์ผ€์ผ์„ ์กฐ์ •ํ•˜๋Š” `set_context()` ํ•จ์ˆ˜๋กœ ํ•˜๋Š” ์ผ์„ ํ•œ ๋ฒˆ์— ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythoncustom_params = {"axes.spines.right": False, "axes.spines.top": False}sns.set_theme(context='notebook', # ๋งค์ฒด: paper, talk, posterstyle='darkgrid', # ๊ธฐ๋ณธ ๋‚ด์žฅ ํ…Œ๋งˆpalette='deep', # ๊ทธ๋ž˜ํ”„ ์ƒ‰font='Malgun Gothic', # ๊ธ€๊ผด ์ข…๋ฅ˜font_scale=1, # ๊ธ€๊ผด ํฌ๊ธฐrc=custom_params) # ๊ทธ๋ž˜ํ”„ ์„ธ๋ถ€ ์‚ฌํ•ญ ``` ##### context `context` ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์‚ฌ์šฉํ•˜๋Š” ๋งค์ฒด์— ์ ํ•ฉํ•œ ๊ทธ๋ž˜ํ”„์˜ ์Šค์ผ€์ผ์„ ์กฐ์ •ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ ๋งค์ฒด์— ์ ํ•ฉํ•˜๊ฒŒ ๋ผ๋ฒจ๊ณผ ๊ทธ๋ž˜ํ”„์˜ ํฌ๊ธฐ๋ฅผ ๋งž์ถค ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. > - notebook: ๊ธฐ๋ณธ ์„ค์ • > - paper: ๋…ผ๋ฌธ, ๋ณด๊ณ ์„œ > - talk: ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ > - poster: ํฌ์Šคํ„ฐ ##### style `style` ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” Seaborn์˜ ๊ธฐ๋ณธ ๋‚ด์žฅ ํ…Œ๋งˆ(built-in themes)๋ฅผ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ๋‚ด์žฅ ํ…Œ๋งˆ์—๋Š” ์ด 5๊ฐ€์ง€ ํ…Œ๋งˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. > - darkgrid: ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ + ๊ทธ๋ฆฌ๋“œ > - whitegrid: ํฐ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ + ๊ทธ๋ฆฌ๋“œ > - dark: ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ > - white: ํฐ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ > - ticks: ํฐ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ + ๋ˆˆ๊ธˆ ##### palette `palette` ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ƒ‰์„ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ๋Š” ์ด 6๊ฐ€์ง€(`deep`, `muted`, `pastel`, `bright`, `dark`, `colorblind`)์ž…๋‹ˆ๋‹ค. ํŠน์ • ํŒ”๋ ˆํŠธ๋ฅผ ์„ ํƒํ•˜๋ ค๋ฉด `color_palette()` ํ•จ์ˆ˜๋ฅผ, ์„ ํƒํ•œ ํŒ”๋ ˆํŠธ์˜ ์ƒ‰์ƒ์„ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `palplot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonpalette = sns.color_palette('deep')sns.palplot(palette) ``` ##### font, font\_scale `font`์™€ `font_scale`์€ ๊ฐ๊ฐ ๊ธ€๊ผด์˜ ์ข…๋ฅ˜์™€ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์ž…๋‹ˆ๋‹ค. Matplotlib์˜ `rcParams`์—์„œ `font.family`์™€ `font.size`๊ฐ€ ํ•˜๋Š” ์ผ๊ณผ ๋™์ผํ•œ ์ผ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ``` pythonfrom matplotlib import rcParamsrcParams['font.family'] = 'Malgun Gothic' # WindowsrcParams['font.size'] = 18 ``` Matplotlib์˜ `rcParams`์—์„œ์ฒ˜๋Ÿผ ๊ทธ๋ž˜ํ”„์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ ์ „๋ฐ˜์„ ์กฐ์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `rc` ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ##### rc `rc` ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ถ•(axes), ๊ทธ๋ฆฌ๋“œ(grid), ๋ˆˆ๊ธˆ(ticks), ๊ธ€๊ผด(font) ๋“ฑ ๊ทธ๋ž˜ํ”„์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ „๋ฐ˜์„ ์กฐ์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์ž…๋‹ˆ๋‹ค. `plotting_context()` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ๊ทธ๋ž˜ํ”„์— ์ ์šฉ๋˜๊ณ  ์žˆ๋Š” ์„ค์ •๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `rc` ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ค์ •๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.plotting_context()# ๊ฒฐ๊ณผ{'axes.facecolor': 'white','axes.edgecolor': 'black','axes.grid': False,'axes.axisbelow': 'line','axes.labelcolor': 'black','figure.facecolor': 'white','grid.color': '#b0b0b0','grid.linestyle': '-','text.color': 'black','xtick.color': 'black','ytick.color': 'black','xtick.direction': 'out','ytick.direction': 'out','lines.solid_capstyle': <CapStyle.projecting: 'projecting'>,'patch.edgecolor': 'black','patch.force_edgecolor': False,'image.cmap': 'viridis','font.family': ['sans-serif'],'font.sans-serif': ['DejaVu Sans','Bitstream Vera Sans','Computer Modern Sans Serif','Lucida Grande','Verdana','Geneva','Lucid','Arial','Helvetica','Avant Garde','sans-serif'],'xtick.bottom': True,'xtick.top': False,'ytick.left': True,'ytick.right': False,'axes.spines.left': True,'axes.spines.bottom': True,'axes.spines.right': True,'axes.spines.top': True} ``` ์—ฌ๊ธฐ์„œ `axes.spines`์€ ๊ทธ๋ž˜ํ”„์˜ ์ถ•์„ ๋‚˜ํƒ€๋‚ด๊ฑฐ๋‚˜ ์ˆจ๊ธฐ๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด Seaborn์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ„(top), ์•„๋ž˜(bottom), ์™ผํŽธ(left), ์˜ค๋ฅธํŽธ(right) ์ด 4๊ฐœ์˜ ์ถ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋งŒ์ผ ์œ„์ชฝ ์ถ•๊ณผ ์˜ค๋ฅธ์ชฝ ์ถ•์„ ์ˆจ๊ธฐ๊ณ  ์‹ถ๋‹ค๋ฉด `despine()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. `despine()` ํ•จ์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ๊ทธ๋ž˜ํ”„ ํ•จ์ˆ˜ ๋‹ค์Œ์— ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ``` pythonsns.countplot(...)sns.despine() # ์œ„, ์˜ค๋ฅธ์ชฝ ์ถ• ์ˆจ๊ธฐ๊ธฐ ``` ๋งŒ์ผ ํŠน์ • ์ถ•์„ ์ˆจ๊ธฐ๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ˆจ๊ธฐ๊ณ  ์‹ถ์€ ๋ฐฉํ–ฅ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— `True` ๊ฐ’์„ ์ „๋‹ฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.countplot(...)sns.despine(left=True, bottom=True) # ์™ผํŽธ, ์•„๋ž˜ํŽธ ์ถ•๋„ ๋ชจ๋‘ ์ˆจ๊ธฐ๊ธฐ ``` #### set\_style `set_style()` ํ•จ์ˆ˜๋กœ๋Š” ๊ทธ๋ž˜ํ”„ ์ „๋ฐ˜์— ์ ์šฉ๋  ํ…Œ๋งˆ์™€ ๊ทธ๋ž˜ํ”„์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonrc={'grid.color': '.5', 'grid.linestyle': ':'}sns.set_style('whitegrid', rc=None) ``` #### set\_context `set_context()` ํ•จ์ˆ˜๋กœ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์Šค์ผ€์ผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonsns.set_context('notebook', font_scale=1.25, rc={'grid.color': '.6'}) ``` #### set\_palette `set_palette()` ํ•จ์ˆ˜๋กœ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonsns.set_palatte('colorblind') ``` ### ๊ทธ๋ž˜ํ”„๋ณ„ ์Šคํƒ€์ผ๋ง ๊ทธ๋ž˜ํ”„๋ณ„ ์Šคํƒ€์ผ๋ง์„ ํ•˜๋ ค๋ฉด `set()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. #### ์ถ• ๋ฒ”์œ„ ์ œํ•œํ•˜๊ธฐ: xlim, ylim Seaborn์—์„œ x์ถ•๊ณผ y์ถ•์˜ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด `xlim`, `ylim` ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.countplot(...).set(xlim=(1, 10), ylim=(0, 20)) ``` #### ์ถ• ๋ผ๋ฒจ ์ˆจ๊ธฐ๊ธฐ: xlabel, ylabel Seaborn์—์„œ ์ถ•์— ์žˆ๋Š” ๋ผ๋ฒจ์„ ์ˆจ๊ธฐ๋ ค๋ฉด `xlabel`, `ylabel` ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonax = sns.heatmap(...)ax.set(xlabel="", ylabel="") ``` #### ์ถ• ์œ„์น˜ ๋ฐ”๊พธ๊ธฐ ์ถ• ์œ„์น˜๋ฅผ ์กฐ์ •ํ•˜๋ ค๋ฉด `ax.axis.tick_top` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonax = sns.heatmap(...)ax.xaxis.tick_top() # x์ถ• ์•„๋ž˜์—์„œ ์œ„๋กœ ์˜ฎ๊ธฐ๊ธฐax.yaxis.tick_left # y์ถ• ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ๊ธฐ ``` #### ๊ทธ๋ž˜ํ”„ ํฌ๊ธฐ ์กฐ์ •ํ•˜๊ธฐ Seaborn์—์„œ ๊ฐœ๋ณ„ ๊ทธ๋ž˜ํ”„์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋ ค๋ฉด `rc` ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.barplot(...)sns.set(rc={'figure.figsize':(10,7)}) ``` ์„ค์น˜์™€ ๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ •์„ ๋ชจ๋‘ ๋งˆ์ณค๋‹ค๋ฉด ์ด์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉ(loading)ํ•ด์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค. ### ๋ฐ์ดํ„ฐ Seaborn์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ๊ณ , ๋‚ด์žฅ ๋ฐ์ดํ„ฐ(built-in data)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. #### 1\) ๋ฐ์ดํ„ฐ ์„ ํƒ ##### ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด pandas๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. CSV ํŒŒ์ผ๊ณผ ์—‘์…€ ํŒŒ์ผ์„ DataFrame ๊ฐ์ฒด๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonimport pandas as pddf = pd.read_csv('data.csv') # CSV ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ# ๋˜๋Š”df = pd.read_excel('data.xlsx') # ์—‘์…€ ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ ``` pandas์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ์ž์„ธํ•œ ๋ฐฉ๋ฒ•์€ [Python pandas ๋ฐ์ดํ„ฐ ์ƒ์„ฑ, ๋กœ๋”ฉ๊ณผ ์ €์žฅ, ์ƒ‰์ธ ๊ด€๋ฆฌํ•˜๋Š” ๋ฒ•](https://www.snugarchive.com/blog/python-pandas-guide-1/)์—์„œ '๋กœ๋”ฉ ๋ฐ ์ €์žฅ' ํŽธ์„ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. ์—ฌ๊ธฐ์„œ๋Š” Seaborn์˜ ๋‚ด์žฅ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ##### ๋‚ด์žฅ ๋ฐ์ดํ„ฐ Seaborn์—๋Š” ๋‹ค์–‘ํ•œ ๋‚ด์žฅ ๋ฐ์ดํ„ฐ์…‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ๋‚ด์— ์–ด๋–ค ๋‚ด์žฅ ๋ฐ์ดํ„ฐ์…‹์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๋ ค๋ฉด `get_dataset_names()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.get_dataset_names()# ๊ฒฐ๊ณผ['anagrams', 'anscombe', 'attention', 'brain_networks', 'car_crashes', 'diamonds','dots', 'exercise', 'flights', 'fmri', 'gammas', 'geyser', 'iris', 'mpg','penguins', 'planets', 'taxis', 'tips', 'titanic'] ``` ์ด ๋ฐ์ดํ„ฐ์…‹ ์ค‘์—์„œ ๋ช‡ ๊ฐ€์ง€๋ฅผ ์„ ํƒํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. #### 2\) ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ Seborn์˜ ๋‚ด์žฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•˜๋ ค๋ฉด `load_dataset()` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. pandas๋ฅผ ์ด์šฉํ•ด ๊ฐ€์ ธ์˜จ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ `load_dataset()` ํ•จ์ˆ˜๋กœ ๋ถˆ๋Ÿฌ์˜จ ๋ฐ์ดํ„ฐ ํ˜•์‹๋„ DataFrame ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋‹ค์Œ ๋ฐ์ดํ„ฐ์…‹์„ ๋ถˆ๋Ÿฌ์™€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` pythondf_titanic = sns.load_dataset('titanic') # ํƒ€์ดํƒ€๋‹‰ํ˜ธ ๋ฐ์ดํ„ฐdf_iris = sns.load_dataset('iris') # ๋ถ“๊ฝƒ ๋ฐ์ดํ„ฐdf_penguins = sns.load_dataset('penguins') # ํŽญ๊ท„ ๋ฐ์ดํ„ฐdf_tips = sns.load_dataset('tips') # ํŒ ๋ฐ์ดํ„ฐdf_diamonds = sns.load_dataset('diamonds') # ๋‹ค์ด์•„๋ชฌ๋“œ ๋ฐ์ดํ„ฐdf_planets = sns.load_dataset('planets') # ํ–‰์„ฑ ๋ฐ์ดํ„ฐ ``` #### 3\) ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ํŒŒ์•… ๋ฐ์ดํ„ฐ์…‹์ด ์ž˜ ์ค€๋น„๋˜์—ˆ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ„๋‹จํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. pandas์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๋Š” ์ž์„ธํ•œ ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด [Python pandas ๋ฐ์ดํ„ฐ ํ™•์ธ, ์ •๋ ฌ, ์„ ํƒํ•˜๋Š” ๋ฒ•](https://www.snugarchive.com/blog/python-pandas-guide-2/)์—์„œ "๋ฐ์ดํ„ฐ ํ™•์ธ" ๋ถ€๋ถ„์„ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. ``` pythondf.shape # DataFrame์˜ ์—ด๊ณผ ํ–‰์˜ ๊ฐœ์ˆ˜ ์ถœ๋ ฅํ•˜๊ธฐdf.head() # DataFrame์˜ ์ฒซ ๋ถ€๋ถ„ ์ถœ๋ ฅํ•˜๊ธฐdf['class'] # ์—ด ์ด๋ฆ„์ด 'class'์ธ ๋ถ€๋ถ„์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ ``` ๋ฐ์ดํ„ฐ์…‹์ด ์ž˜ ์ค€๋น„๋˜์—ˆ๋‹ค๋ฉด ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹œ๊ฐํ™”๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธํŽธ์—์„œ ์‹œ๊ฐํ™”ํ•  ๋ฐ์ดํ„ฐ๋Š” 1์ฐจ์› ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. 1์ฐจ์› ๋ฐ์ดํ„ฐ๋ž€ ์†์„ฑ(attribute)์ด 1๊ฐœ์ธ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. Numpy ๋ฐฐ์—ด์—์„œ ์›์†Œ๋ฅผ ํ•œ ์ค„๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ, ์—‘์…€์—์„œ ์—ด(columns)์ด 1๊ฐœ์ธ ๋ฐ์ดํ„ฐ, ๋…๋ฆฝ๋ณ€์ˆ˜(independent variable) ๋˜๋Š” ๋ณ€๋Ÿ‰(variate)์ด 1๊ฐœ์ธ ๋ฐ์ดํ„ฐ๋ผ๊ณ ๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1์ฐจ์› ๋ฐ์ดํ„ฐ๋Š” ์ˆ˜์น˜ํ˜•๊ณผ ๋ฒ”์ฃผํ˜•์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์ˆ˜์น˜ํ˜•์€ ๋ณ€์ˆ˜๊ฐ€ ์‹ค์ˆซ๊ฐ’์ธ ์—ฐ์†์  ๋ณ€์ˆ˜(continous variables)์™€ ์ •์ˆซ๊ฐ’์ธ ์ด์‚ฐ์  ๋ณ€์ˆ˜(discrete variables)์ธ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ๋ฒ”์ฃผํ˜•์€ ๋ณ€์ˆ˜๊ฐ€ ์นดํ…Œ๊ณ ๋ฆฌ(category)์ฒ˜๋Ÿผ ๋ถ„๋ฅ˜๋œ ์งˆ์  ๋ณ€์ˆ˜(qualitative variables)๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ 1์ฐจ์› ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ์‹œ๊ฐํ™”ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ## 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: ๋ฒ”์ฃผํ˜• ์ผ๋ณ€๋Ÿ‰ ๋ฒ”์ฃผํ˜• ์ž๋ฃŒ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ๋Š” ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„(bar graph)์™€ ํŒŒ์ด ์ฐจํŠธ(pie chart)๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, Seaborn์—๋Š” ํŒŒ์ด ์ฐจํŠธ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ํŒŒ์ด ์ฐจํŠธ๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด Matplotlib์„ ์ด์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋ฐฉ๋ฒ•์€ ํŒŒ์ด์ฌ Matplotlib ์‚ฌ์šฉ๋ฒ•(์˜ˆ์ •)์„ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. ์—ฌ๊ธฐ์„œ๋Š” Seaborn์œผ๋กœ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ### 1\) ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„: countplot() Seaborn์œผ๋กœ ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ํ•จ์ˆ˜๋Š” `countplot()`์ž…๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ๊ฐ ๋ฒ”์ฃผ์— ์†ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋นˆ๋„(๊ฐœ์ˆ˜)๋ฅผ ๋ง‰๋Œ€์˜ ๋†’์ด๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ์ˆ˜์ง ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ถ€ํ„ฐ ๊ทธ๋ ค๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. #### ์ˆ˜์ง ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ##### ๊ธฐ๋ณธ Seaborn์œผ๋กœ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ธฐ๋ณธ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.countplot(df_titanic['class']) # ์ฝ”๋“œ1sns.countplot(x=df_titanic['class']) # ์ฝ”๋“œ1sns.countplot(x='class', data=df_titanic) # ์ฝ”๋“œ1 ``` ์ฝ”๋“œ1์— ์•„๋ž˜์™€ ๊ฐ™์ด ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. > - color: ๋ง‰๋Œ€ ์ƒ‰ ์ง€์ • > - edgecolor: ๋ง‰๋Œ€ ํ…Œ๋‘๋ฆฌ์ƒ‰ ์ง€์ • > - palette: ๊ทธ๋ž˜ํ”„ ์ƒ‰ ์ง€์ • > - alpha: ๊ทธ๋ž˜ํ”„ ํˆฌ๋ช…๋„ ์ง€์ • > - linewidth: ๊ทธ๋ž˜ํ”„ ๊ตต๊ธฐ ์ง€์ • `palette`์˜ ๋‹ค์–‘ํ•œ ์˜ต์…˜์€ [Seaborn ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€ color palette](https://seaborn.pydata.org/tutorial/color_palettes.html)์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonsns.countplot(x='class', data=df_titanic, color='skyblue') # ์ฝ”๋“œ2sns.countplot(x='class', data=df_titanic, palette='Set3') # ์ฝ”๋“œ3sns.countplot(x='class', data=df_titanic, # ์ฝ”๋“œ4facecolor=(0, 0, 0, 0),linewidth=5,edgecolor=sns.color_palette('dark', 3)) ``` ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='1018.4873949579833'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAARABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAECAwX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAAB6+1bISWcwkH/xAAaEAACAgMAAAAAAAAAAAAAAAABAgAQESEx/9oACAEBAAEFAmVmhi6BzQo9E//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABcQAQEBAQAAAAAAAAAAAAAAAAERECD/2gAIAQEABj8CSmzr/8QAHRAAAgIBBQAAAAAAAAAAAAAAAAERMSEQQVFhgf/aAAgBAQABPyFUlSbxyS2j0TA2SJyXQ3m0U0sKH//aAAwDAQACAAMAAAAQN8C+/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAEQEf/aAAgBAwEBPxDBX//EABcRAQADAAAAAAAAAAAAAAAAABABEUH/2gAIAQIBAT8Q2yD/xAAeEAEAAgEEAwAAAAAAAAAAAAABABEhEGGBoTFBcf/aAAgBAQABPxArFFAgBHPcZRe8EXKG1vmAAKtoc1vGLHwZh5HDPc7Gh//Z) ![countplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/b341ea40e80fe286aa4e2e2ff4bdcb30/53932/ucd-countplot-vertical-1-1-basic-titanic.jpg) ![countplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/b341ea40e80fe286aa4e2e2ff4bdcb30/53932/ucd-countplot-vertical-1-1-basic-titanic.jpg) countplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ `countplot()` ํ•จ์ˆ˜ ์™ธ์—๋„ `catplot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. `catplot()` ํ•จ์ˆ˜๋Š” ์ˆ˜์น˜ํ˜• ๋ณ€์ˆ˜์™€ ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•จ์ˆ˜์ด์ง€๋งŒ, `kind='count'` ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋นˆ๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ฝ”๋“œ1๊ณผ ๋™์ผ). ``` pythonsns.catplot(x='class', kind='count', data=df_titanic) # ์ฝ”๋“œ1 ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='1203.3149171270718'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAECAwQF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQAC/9oADAMBAAIQAxAAAAH38eaA2VRvBauG/8QAGxAAAwACAwAAAAAAAAAAAAAAAQIDAAQSEzP/2gAIAQEAAQUCyxIlrsWnWrJWlOSavk01ZutcVQg//8QAFxEAAwEAAAAAAAAAAAAAAAAAAAExEP/aAAgBAwEBPwGpim//xAAZEQABBQAAAAAAAAAAAAAAAAAAAQIQITH/2gAIAQIBAT8BdQmT/8QAGhAAAgMBAQAAAAAAAAAAAAAAAAECESExgf/aAAgBAQAGPwIbRbd6KK4TVHpbWjzpUT//xAAcEAADAAMAAwAAAAAAAAAAAAAAAREhMWFBscH/2gAIAQEAAT8hQ5SNeS1TVskLU2uj8ai+ntCdcnS+fTJOkR//2gAMAwEAAgADAAAAEDPQvP/EABkRAAIDAQAAAAAAAAAAAAAAAAARITFBAf/aAAgBAwEBPxCUMKjkNaUf/8QAGREBAAIDAAAAAAAAAAAAAAAAAQAxEBFB/9oACAECAQE/EEE32VRBvH//xAAdEAACAwEAAwEAAAAAAAAAAAABEQAhMUFRcbHw/9oACAEBAAE/EOvcK/GCDRYhEkR+E67VYbSGGIbNtAJt+slc0osErEfBopZffs3F2m7n/9k=) ![catplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/f40253aef23c11d1fb04f9eb4c94aa24/0761f/ucd-countplot-vertical-1-2-catplot-titanic.jpg) ![catplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/f40253aef23c11d1fb04f9eb4c94aa24/0761f/ucd-countplot-vertical-1-2-catplot-titanic.jpg) catplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ##### ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ๋งŒ์ผ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `order` ํŒŒ๋ผ๋ฏธํ„ฐ์— `df.value_counts().index` ์ฝ”๋“œ๋ฅผ ๋”ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. `df.value_counts().index`๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋นˆ๋„๊ฐ€ ๋†’์€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์ค๋‹ˆ๋‹ค. ์˜ˆ์‹œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.countplot(x='class', data=df_titanic,order=df_titanic['class'].value_counts().index) ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='802.9629629629629'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAQX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABs6CcSgWR/8QAGxAAAwACAwAAAAAAAAAAAAAAAQIDABMEEBL/2gAIAQEAAQUC5DEU9L1SIo2kHJz1r//EABYRAQEBAAAAAAAAAAAAAAAAAAEQMf/aAAgBAwEBPwENn//EABgRAAIDAAAAAAAAAAAAAAAAAAECEBEx/9oACAECAQE/AWOVH//EABoQAAIDAQEAAAAAAAAAAAAAAAABAhExECH/2gAIAQEABj8CjTaNXE7wl7pVn//EABsQAQADAAMBAAAAAAAAAAAAAAEAESExQWFx/9oACAEBAAE/IT4xOn2aJoeyx4R+RyshRrJUbbc//9oADAMBAAIAAwAAABBAP//EABgRAAMBAQAAAAAAAAAAAAAAAAABESGB/9oACAEDAQE/EJU+Cs0//8QAGBEBAQADAAAAAAAAAAAAAAAAAQARYXH/2gAIAQIBAT8QTAHY3f/EABkQAQEBAQEBAAAAAAAAAAAAAAERACExUf/aAAgBAQABPxAqAKQuDE7FI5vWR9VyDsAADe3XPgR4crcpUVUk3//Z) ![๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/5ff5a0bfe12819dd67ef751f1e3f5045/c8b9c/ucd-countplot-vertical-1-3-order-titanic.jpg) ![๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/5ff5a0bfe12819dd67ef751f1e3f5045/c8b9c/ucd-countplot-vertical-1-3-order-titanic.jpg) ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ##### ์š”์•ฝ๊ฐ’ ํ‘œ์‹œ ๊ฐ ๋ง‰๋Œ€ ์œ„์— ์š”์•ฝ๊ฐ’์„ ์ˆซ์ž๋กœ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•œ ๋’ค `ax.bar_label(ax.containers[0])` ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonax = sns.countplot(df_titanic['class'])ax.bar_label(ax.containers[0]) ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='811.1392405063291'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAOABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAMBBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHuSnkhYf/EABwQAAIBBQEAAAAAAAAAAAAAAAEDAgAEERITIf/aAAgBAQABBQLaNOOFW5JXJGzeHil84//EABYRAQEBAAAAAAAAAAAAAAAAAAEAMf/aAAgBAwEBPwHRjL//xAAXEQEAAwAAAAAAAAAAAAAAAAAAAQJh/9oACAECAQE/AbYh/8QAGxAAAgMAAwAAAAAAAAAAAAAAABEBAhIhMUH/2gAIAQEABj8CThlkcz6bZaNdiZ//xAAbEAADAAMBAQAAAAAAAAAAAAAAAREhUWExQf/aAAgBAQABPyGDrgpZNGtFUxvYk441iFPgPD6tmn//2gAMAwEAAgADAAAAEHcP/8QAGREBAAIDAAAAAAAAAAAAAAAAAQAhEVFh/9oACAEDAQE/EAsVrsKDM//EABcRAQEBAQAAAAAAAAAAAAAAAAERACH/2gAIAQIBAT8Qoh1cEO7/xAAcEAEAAwACAwAAAAAAAAAAAAABABEhMUFRYZH/2gAIAQEAAT8QAQk4hfyMziKVSaRiJItXmRKbYc3Hu5gDGumj5iIjdWqp/9k=) ![์š”์•ฝ๊ฐ’์„ ํ‘œ์‹œํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/54e41d232b6fc0f79815d5a79716b31e/988a1/ucd-countplot-vertical-1-4-summary-statistics-titanic.jpg) ![์š”์•ฝ๊ฐ’์„ ํ‘œ์‹œํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/54e41d232b6fc0f79815d5a79716b31e/988a1/ucd-countplot-vertical-1-4-summary-statistics-titanic.jpg) ์š”์•ฝ๊ฐ’์„ ํ‘œ์‹œํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ##### ์ƒ‰๊น” ๊ฐ•์กฐ ํŠน์ • ๋ง‰๋Œ€์˜ ์ƒ‰๊น”์„ ๊ฐ•์กฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ€์žฅ ๋นˆ๋„์ˆ˜๊ฐ€ ๋†’์€ ๋ง‰๋Œ€๋งŒ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `numpy`์™€ `barplot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonvalues = np.array(df_titanic['class'].value_counts())idx = np.array(df_titanic['class'].value_counts().index)palette = ['skyblue' if (x == max(values)) else 'lightgrey' for x in values]sns.barplot(x=idx, y=values, palette=palette) ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='805.1413881748073'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAMBAgQF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAetoVLLCoV//xAAbEAACAQUAAAAAAAAAAAAAAAABAgAQERIhIv/aAAgBAQABBQJj3QrdsYBr/8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQMBAT8BJ//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABcQAAMBAAAAAAAAAAAAAAAAAAABEBH/2gAIAQEABj8Cujn/xAAZEAADAQEBAAAAAAAAAAAAAAAAARFhITH/2gAIAQEAAT8hYlSfCrBk2jQl6P/aAAwDAQACAAMAAAAQdA//xAAWEQEBAQAAAAAAAAAAAAAAAAABEBH/2gAIAQMBAT8QCLs//8QAFhEBAQEAAAAAAAAAAAAAAAAAARAR/9oACAECAQE/EFMJ/8QAGhAAAgMBAQAAAAAAAAAAAAAAASEAETFRgf/aAAgBAQABPxA0EEQgVsBTQJGUtTMLyuQP1Weys6eT/9k=) ![ํŠน์ • ๋ง‰๋Œ€๋ฅผ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ๊ฐ•์กฐํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/8225b5a0f5ea0998b2d5c0d7211e8cdc/a6cf6/ucd-countplot-vertical-1-5-setting-a-different-color-titanic.jpg) ![ํŠน์ • ๋ง‰๋Œ€๋ฅผ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ๊ฐ•์กฐํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/8225b5a0f5ea0998b2d5c0d7211e8cdc/a6cf6/ucd-countplot-vertical-1-5-setting-a-different-color-titanic.jpg) ํŠน์ • ๋ง‰๋Œ€๋ฅผ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ๊ฐ•์กฐํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ #### ์ˆ˜ํ‰ ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ Seaborn์œผ๋กœ ์ผ๋ณ€๋Ÿ‰ ๋ฒ”์ฃผํ˜• ์ž๋ฃŒ์— ๋Œ€ํ•œ ๊ฐ€๋กœ ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด `countplot()` ํ•จ์ˆ˜์— x ๋งค๊ฐœ๋ณ€์ˆ˜ ๋Œ€์‹  y ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.countplot(y='class', data=df_titanic) # ์ฝ”๋“œ1sns.catplot(y='class', kind='count', palette='ch:.25', data=df_titanic) # ์ฝ”๋“œ2 ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='626.9058295964126'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAKABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAe1NUA//xAAZEAEBAAMBAAAAAAAAAAAAAAABAgMQEkH/2gAIAQEAAQUCYe8vRMLU+uv/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAcEAABAwUAAAAAAAAAAAAAAAABABESAiAiYaH/2gAIAQEABj8CkDxYhynNMdWf/8QAGhAAAwADAQAAAAAAAAAAAAAAAAERITFBUf/aAAgBAQABPyFyCnJ0NS2ywi4TehjYR//aAAwDAQACAAMAAAAQIA//xAAWEQADAAAAAAAAAAAAAAAAAAABECH/2gAIAQMBAT8QEX//xAAVEQEBAAAAAAAAAAAAAAAAAAAQEf/aAAgBAgEBPxCH/8QAGxABAAIDAQEAAAAAAAAAAAAAAQARITFBcZH/2gAIAQEAAT8QQKW/R9g8SsrFO7YOt9LRfcRvUTheKI2tz//Z) ![countplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜ํ‰ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/2002e298d209b7308eae3167f74c3208/cbcd2/ucd-countplot-horizontal-titanic.jpg) ![countplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜ํ‰ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/2002e298d209b7308eae3167f74c3208/cbcd2/ucd-countplot-horizontal-titanic.jpg) countplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜ํ‰ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ์ง€๊ธˆ๊นŒ์ง€ ์ผ๋ณ€๋Ÿ‰ ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋กœ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ์ผ๋ณ€๋Ÿ‰ ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ### 2\) ์ƒ์ž ๊ทธ๋ฆผ ์ƒ์ž ๊ทธ๋ฆผ(๋™์˜์–ด: box plot, ๋ฐ•์Šค ํ”Œ๋กฏ, ๋ฐ•์Šค ๊ทธ๋ž˜ํ”„, ์ƒ์ž ๊ทธ๋ž˜ํ”„)์€ ๋ฐ์ดํ„ฐ์˜ 5๊ฐ€์ง€ ํ†ต๊ณ„๋Ÿ‰(์ตœ์†Ÿ๊ฐ’, ์ œ1 ์‚ฌ๋ถ„์œ„, ์ œ 2์‚ฌ๋ถ„์œ„, ์ œ 3์‚ฌ๋ถ„์œ„, ์ตœ๋Œ“๊ฐ’)์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ์ƒ์ž๊ทธ๋ฆผ์€ ๋ฐ์ดํ„ฐ์˜ ์ „์ฒด์ ์ธ ๋ถ„ํฌ์™€ ์ด์ƒ์น˜๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. #### boxplot() ์ƒ์ž๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋ ค๋ฉด `boxplot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.boxplot(data=df_iris, x='sepal_length') ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='927.9661016949152'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMEBf/EABUBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAHZTSpmgAr/xAAbEAACAgMBAAAAAAAAAAAAAAABAgADBBESE//aAAgBAQABBQK06rxnLpHXpaU8xP/EABURAQEAAAAAAAAAAAAAAAAAABBB/9oACAEDAQE/Aaf/xAAVEQEBAAAAAAAAAAAAAAAAAAAQQf/aAAgBAgEBPwGH/8QAGxAAAQUBAQAAAAAAAAAAAAAAAQAQESFRAhL/2gAIAQEABj8C6IxH0ZtiNUC2/8QAGBABAQEBAQAAAAAAAAAAAAAAAREhABD/2gAIAQEAAT8hVhExyRR4puROFUabvn//2gAMAwEAAgADAAAAEN/P/8QAFxEBAAMAAAAAAAAAAAAAAAAAARAhQf/aAAgBAwEBPxBG2R//xAAXEQEAAwAAAAAAAAAAAAAAAAABECFB/9oACAECAQE/EBKbH//EABsQAQACAwEBAAAAAAAAAAAAAAEAETFBUSHB/9oACAEBAAE/EG9WyNMa8FBTVHIekFMiwmSBfLDQ1XyGOT//2Q==) ![boxplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ƒ์ž ์ˆ˜์—ผ ๊ทธ๋ฆผ](https://www.snugarchive.com/static/b0eba92913ec041452bb623da65b2633/95a82/und-boxplot-iris.jpg) ![boxplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ƒ์ž ์ˆ˜์—ผ ๊ทธ๋ฆผ](https://www.snugarchive.com/static/b0eba92913ec041452bb623da65b2633/95a82/und-boxplot-iris.jpg) boxplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ƒ์ž ์ˆ˜์—ผ ๊ทธ๋ฆผ `catplot()` ํ•จ์ˆ˜์— `kind='box'` ์˜ต์…˜์„ ์ฃผ์–ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonsns.catplot(data=df_iris, x='sepal_length', kind='box') ``` #### boxenplot() ๋ฐ์ดํ„ฐ์…‹์˜ ๋ฐ์ดํ„ฐ ๋ฒ”์œ„๊ฐ€ ํด ๊ฒฝ์šฐ์—๋Š” `boxenplot()`์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `boxenplot()`์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ๋งŽ์€ ๋ถ„์œ„๋กœ ๋‚˜๋ˆ„์–ด ํฌ๊ธฐ๊ฐ€ ํฐ ๋ฐ์ดํ„ฐ์…‹์˜ ๋ฒ”์ฃผ๋ฅผ ์ƒ์ž๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•ด ์ค๋‹ˆ๋‹ค. ``` pythonsns.boxenplot(data=df_diamonds, x='price') ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='866.8463611859838'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAOABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAQBA//EABQBAQAAAAAAAAAAAAAAAAAAAAL/2gAMAwEAAhADEAAAAarHdE0V/8QAGBAAAwEBAAAAAAAAAAAAAAAAAQIDEBL/2gAIAQEAAQUCpVlulesMgaZ//8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQMBAT8BBn//xAAWEQADAAAAAAAAAAAAAAAAAAABEBH/2gAIAQIBAT8BMX//xAAaEAACAgMAAAAAAAAAAAAAAAABEABBEjJh/9oACAEBAAY/AuCpqVnb/8QAGxABAAMAAwEAAAAAAAAAAAAAAQARITFBUbH/2gAIAQEAAT8hd0shk+dk5l9b46g5QGSrn//aAAwDAQACAAMAAAAQI8//xAAWEQEBAQAAAAAAAAAAAAAAAAABEBH/2gAIAQMBAT8QAus//8QAFhEBAQEAAAAAAAAAAAAAAAAAARAh/9oACAECAQE/EEgyf//EABsQAQEBAQADAQAAAAAAAAAAAAERACExYaHh/9oACAEBAAE/ECdaFbB5lqKgqfZqdAnpJhxoTpK5PE0oY4g/mrphv//Z) ![boxenplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ƒ์ž๊ทธ๋ฆผ](https://www.snugarchive.com/static/50ef6c89391c807805ee5f820b394fba/dbbc1/und-boxenplot-iris.jpg) ![boxenplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ƒ์ž๊ทธ๋ฆผ](https://www.snugarchive.com/static/50ef6c89391c807805ee5f820b394fba/dbbc1/und-boxenplot-iris.jpg) boxenplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ƒ์ž๊ทธ๋ฆผ `catplot()` ํ•จ์ˆ˜์— `kind='boxen'` ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.catplot(data=df_diamonds, x='price', kind='boxen') ``` #### violinplot() ์ƒ์ž ๊ทธ๋ฆผ๊ณผ ์ปค๋„๋ฐ€๋„์ถ”์ •์œผ๋กœ ๊ตฌํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜๋ฅผ ํ•ฉ์ณ์„œ ๊ทธ๋ฆฌ๋ ค๋ฉด `violinplot()`์„ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.violinplot(data=df_iris, x='sepal_length') ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='882.6747720364741'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAQFAgP/xAAUAQEAAAAAAAAAAAAAAAAAAAAC/9oADAMBAAIQAxAAAAGkrR4INGgv/8QAGhAAAwADAQAAAAAAAAAAAAAAAQIDAAQRE//aAAgBAQABBQK9fMT2T0EMKTFFlBUbP//EABYRAQEBAAAAAAAAAAAAAAAAABEBEP/aAAgBAwEBPwGrn//EABYRAQEBAAAAAAAAAAAAAAAAABEBEP/aAAgBAgEBPwGBn//EABsQAAMAAgMAAAAAAAAAAAAAAAABERAhIjEy/9oACAEBAAY/AovRz2iojL3j/8QAGxAAAwEAAwEAAAAAAAAAAAAAARExABBBUWH/2gAIAQEAAT8hW1fJhFNnamCIHSMofM0C4jE4/9oADAMBAAIAAwAAABDLz//EABcRAQADAAAAAAAAAAAAAAAAAAEQITH/2gAIAQMBAT8QFxkf/8QAFhEBAQEAAAAAAAAAAAAAAAAAMQEQ/9oACAECAQE/EKZz/8QAHRABAAICAgMAAAAAAAAAAAAAAQARIWExQVFxgf/aAAgBAQABPxDeFFsDzNfSEV85I0NlhpJnQlY1aiJuNQDb3G3qf//Z) ![violinplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๋ฐ”์ด์˜ฌ๋ฆฐ ํ”Œ๋กฏ](https://www.snugarchive.com/static/b22de8bb9ec9a30e8486525f0a1a37cb/2a79f/und-violinplot-iris.jpg) ![violinplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๋ฐ”์ด์˜ฌ๋ฆฐ ํ”Œ๋กฏ](https://www.snugarchive.com/static/b22de8bb9ec9a30e8486525f0a1a37cb/2a79f/und-violinplot-iris.jpg) violinplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๋ฐ”์ด์˜ฌ๋ฆฐ ํ”Œ๋กฏ ``` pythonsns.catplot(data=df_iris, x='sepal_length', kind='violin') ``` ์œ„ ๊ทธ๋ž˜ํ”„์—์„œ ๊ฐ€์šด๋ฐ ํฐ์ƒ‰ ์ ์€ ์ค‘์•™๊ฐ’(median)์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋˜ํ•œ, ํฐ์ƒ‰ ์ ์„ ๋‘˜๋Ÿฌ์‹ผ ๋‘๊บผ์šด ์„ ์€ ์‚ฌ๋ถ„์œ„ ๋ฒ”์œ„๋ฅผ, ๋‘๊บผ์šด ์„ ์—์„œ ์–‘ ๋์œผ๋กœ ์ด์–ด์ง€๋Š” ์–‡์€ ์„ ์€ 95% ์‹ ๋ขฐ ๊ตฌ๊ฐ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ## 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: ์ˆ˜์น˜ํ˜• ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ๋Š” ๋ถ„ํฌ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ### 1\) ์ ๊ทธ๋ž˜ํ”„: stripplot(), swarmplot() ์ ๊ทธ๋ž˜ํ”„(๋™์˜์–ด: dot graph, strip chart, ์ ๋„ํ‘œ)๋Š” ๋ฐ์ดํ„ฐ์˜ ์‹ค์ œ ์œ„์น˜๋ฅผ ์ (dots)์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ ๊ทธ๋ž˜ํ”„๋Š” ๋ฐ์ดํ„ฐ์˜ ์‹ค์ œ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. Seaborn์œผ๋กœ ์ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด `stripplot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.stripplot(data=df_iris, x='sepal_length')# ๋˜๋Š”sns.stripplot(x=df_iris['sepal_length']) ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='1136.1702127659576'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAATABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHvWEoVkNA//8QAGBAAAgMAAAAAAAAAAAAAAAAAARARICH/2gAIAQEAAQUCmmML/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAFBABAAAAAAAAAAAAAAAAAAAAMP/aAAgBAQAGPwIf/8QAGRAAAwEBAQAAAAAAAAAAAAAAAAEREDFR/9oACAEBAAE/IYXWVe5ETDEz/9oADAMBAAIAAwAAABCPxzz/xAAVEQEBAAAAAAAAAAAAAAAAAAAgIf/aAAgBAwEBPxCj/8QAFREBAQAAAAAAAAAAAAAAAAAAICH/2gAIAQIBAT8Qg//EABoQAQEBAQEBAQAAAAAAAAAAAAERADEhcUH/2gAIAQEAAT8QQeB3DcG7qtZS/uCaBfuJPMCOKvX63AHN/9k=) ![stripplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ ๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/a00ece2735a9bf1c47b40e92a5e59eb7/6a3f7/und-stripplot-iris.jpg) ![stripplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ ๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/a00ece2735a9bf1c47b40e92a5e59eb7/6a3f7/und-stripplot-iris.jpg) stripplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ ๊ทธ๋ž˜ํ”„ `catplot()` ํ•จ์ˆ˜์— `kind='strip'` ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonsns.catplot(data=df_iris, x='sepal_length', kind='strip') ``` ๋‹ค๋งŒ ์ ๊ทธ๋ž˜ํ”„์˜ ๊ฒฝ์šฐ ํ‘œํ˜„ํ•  ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋“ค์ด ๋งŽ์•„์ง€๋ฉด ์ ๋“ค์ด ๊ฒน์ณ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ๋Š” `swarmplot()`์„ ์ด์šฉํ•ด ์ž๋ฃŒ๋ฅผ ํฉํŠธ๋ ค์„œ(jittering) ์  ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์„ ์กฐ์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.swarmplot(data=df_iris, x='sepal_length') ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='878.0487804878048'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAECBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHcXhAX/8QAGBAAAgMAAAAAAAAAAAAAAAAAAAEREiD/2gAIAQEAAQUClIss/wD/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAcEAACAQUBAAAAAAAAAAAAAAAAAREQMXGBsfH/2gAIAQEAAT8hd5wTfKaJkeD/2gAMAwEAAgADAAAAEJwP/8QAFREBAQAAAAAAAAAAAAAAAAAAECH/2gAIAQMBAT8Qp//EABURAQEAAAAAAAAAAAAAAAAAABAh/9oACAECAQE/EIf/xAAaEAEAAwEBAQAAAAAAAAAAAAABABEhMWGR/9oACAEBAAE/EGAvb6YoBdvqNPJpmoXIDkTfX2f/2Q==) ![swarmplot() ํ•จ์ˆ˜๋กœ ํํŠธ๋ ค ๊ทธ๋ฆฐ ์ ๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/c3c9f92f7aad60a5663377f00c8b1a6b/d48f8/und-swarmplot-iris.jpg) ![swarmplot() ํ•จ์ˆ˜๋กœ ํํŠธ๋ ค ๊ทธ๋ฆฐ ์ ๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/c3c9f92f7aad60a5663377f00c8b1a6b/d48f8/und-swarmplot-iris.jpg) swarmplot() ํ•จ์ˆ˜๋กœ ํํŠธ๋ ค ๊ทธ๋ฆฐ ์ ๊ทธ๋ž˜ํ”„ ### 2\) ์„ ๋ถ„๊ทธ๋ž˜ํ”„: rugplot() ์„ ๋ถ„๊ทธ๋ž˜ํ”„(rug plot) ๋˜๋Š” ๋Ÿฌ๊ทธ ํ”Œ๋กฏ์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋ฅผ ์ถ• ์œ„์— ์ž‘์€ ์„ ๋ถ„(rug)์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ์„ ๋ถ„ ๊ทธ๋ž˜ํ”„์˜ ๊ฐ ์„ ๋ถ„์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋“ค์˜ ์œ„์น˜๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์„ ๋ถ„๋“ค์ด ์ด˜์ด˜ํžˆ ์žˆ์„์ˆ˜๋ก ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ€์ง‘๋˜์–ด ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋ณ€ ๋ถ„ํฌ(marginal distribution)์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์ฃผ๋กœ ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋Ÿฌ๊ทธ ํ”Œ๋กฏ์„ ๊ทธ๋ฆฌ๋ ค๋ฉด `rugplot()` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. `displot()` ํ•จ์ˆ˜์— `rug=True` ์˜ต์…˜์„ ์ฃผ์–ด๋„ ๋ฉ๋‹ˆ๋‹ค. ๋Ÿฌ๊ทธ๋ฅผ ์„ธ๋ถ€์ ์œผ๋กœ ์กฐ์ •ํ•ด์•ผ ํ•  ๋•Œ๋Š” `displot()` ํ•จ์ˆ˜๋ณด๋‹ค๋Š” `rugplot()` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. > - height: ์„ ๋ถ„ ๊ธธ์ด ์ง€์ • > - clip\_on: ์„ ๋ถ„ ์ถ• ๋ฐ–์— ๊ทธ๋ฆฌ๊ธฐ ์ง€์ • > - lw: ์„ ๋ถ„ ์–‡๊ธฐ ์ง€์ • > - alpha: ์„ ๋ถ„ ํˆฌ๋ช…๋„ ์ง€์ • ``` python# ์ฝ”๋“œ1: ์„ ๋ถ„ ๊ทธ๋ฆฌ๊ธฐsns.displot(data=df_tips, x='total_bill', rug=True)# ์ฝ”๋“œ2: ๋†’์ด ์กฐ์ •ํ•œ ์„ ๋ถ„ ๊ทธ๋ฆฌ๊ธฐsns.rugplot(data=df_tips, x='total_bill', height=.1)# ์ฝ”๋“œ3: ์„ ๋ถ„ ์ถ• ๋ฐ–์— ๊ทธ๋ฆฌ๊ธฐsns.rugplot(data=df_tips, x='total_bill', height=-.02, clip_on=False)# ์ฝ”๋“œ4: ์„ ๋ถ„ ์–‡๊ฒŒ ๊ทธ๋ฆฌ๊ธฐ & ํˆฌ๋ช…๋„ ์ถ”๊ฐ€sns.rugplot(data=df_diamonds, x='carat', lw=1, alpha=.005) ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='1310.8140947752127'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAWABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAEDBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHr7UgLKAH/xAAXEAEAAwAAAAAAAAAAAAAAAAARAxIw/9oACAEBAAEFArErh//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABYQAQEBAAAAAAAAAAAAAAAAABEhMP/aAAgBAQAGPwIoY//EABkQAAMBAQEAAAAAAAAAAAAAAAABETEhUf/aAAgBAQABPyG2sqanKNFpSXpvDB6Twnp//9oADAMBAAIAAwAAABDcwLz/xAAWEQEBAQAAAAAAAAAAAAAAAAABESD/2gAIAQMBAT8QCY//xAAVEQEBAAAAAAAAAAAAAAAAAAABIP/aAAgBAgEBPxBY/8QAHhABAAICAQUAAAAAAAAAAAAAAQARITFRQXGBkdH/2gAIAQEAAT8QwxIZEWfsVVoOsSrpmiyeYmVkrhmcNy4aCu7FOaXzcF0Huf/Z) ![rugplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๋‹ค์–‘ํ•œ ์„ ๋ถ„๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/ff5750487776a10b8ba79a2ff8368268/c0730/und-rugplot-tips-diamonds.jpg) ![rugplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๋‹ค์–‘ํ•œ ์„ ๋ถ„๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/ff5750487776a10b8ba79a2ff8368268/c0730/und-rugplot-tips-diamonds.jpg) rugplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๋‹ค์–‘ํ•œ ์„ ๋ถ„๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ ๊ฒฝ์šฐ ์ ๊ทธ๋ž˜ํ”„ ๋˜๋Š” ์„ ๋ถ„๊ทธ๋ž˜ํ”„๋งŒ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๊ฐ€ ์„œ๋กœ ๊ฒน์ณ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ๋„๊ตฌ๊ฐ€ ํžˆ์Šคํ† ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ### 3\) ํžˆ์Šคํ† ๊ทธ๋žจ: histplot() ํžˆ์Šคํ† ๊ทธ๋žจ(histogram)์€ ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ๊ตฌ๊ฐ„๋ณ„ ๋นˆ๋„์ˆ˜๋กœ ํ‘œํ˜„ํ•œ ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ๋ช‡ ๊ฐœ์˜ ๊ตฌ๊ฐ„์œผ๋กœ ๋‚˜๋ˆˆ ํ›„ ๊ฐ ๊ตฌ๊ฐ„์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜ ๋˜๋Š” ๋„์ˆ˜(frequency)๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๊ตฌ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฒ”์œ„๊ฐ€ ๋„“์€ ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. #### ๊ธฐ๋ณธ Seaborn์—์„œ ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ์ธ ๋‹จ๋ณ€๋Ÿ‰ ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๋งŒ๋“ค๋ ค๋ฉด `histplot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ปค๋„๋ฐ€๋„์ถ”์ •(Kernel Density Estimation, KDE) ๋ฐฉ๋ฒ•์œผ๋กœ ์Šค๋ฌด๋”ฉ(smoothing)ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจ์˜ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜(Probability Density Function, PDF)๋ฅผ ํ•จ๊ป˜ ๊ทธ๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด `kde=True` ์˜ต์…˜์„ ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.histplot(df_penguins, x='flipper_length_mm') # ์ฝ”๋“œ1sns.histplot(df_penguins['flipper_length_mm'], kde=True) # ์ฝ”๋“œ2 ``` `displot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `displot()` ํ•จ์ˆ˜์˜ ์ดˆ๊ธฐ ๊ธฐ๋ณธ ์„ค์ •์€ `kind='hist'`์ž…๋‹ˆ๋‹ค. `displot()` ํ•จ์ˆ˜์— `kind` ์˜ต์…˜์„ ๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. ``` pythonsns.displot(df_penguins, x='flipper_length_mm') # ์ฝ”๋“œ1sns.displot(df_penguins['flipper_length_mm'], kde=True) # ์ฝ”๋“œ2 ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='596.0954446854663'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABmElEQVR42nWRS08bMRDH99Nx4FBx5MK5p34SkLggIQ5Rq/YAN24IBfEoqECpikoQDyECyYZHEnbXu/H6MbbH23GWR1WJv6zRaDy/Gc84qqpKKQVaO/Qn3SeLWL0jPz7/KnqFjcPG9oUEKvJ/0nsKMOfcGWgPi/m1lnWhM+Ib7r0HAHQ2KWTGlXPW2CCKB/ix36/QfL/sf5jfaLZ6S1sXKZc1RlYIkWYZOYft9LSXh9LeG2MQMcBSKrSw9ieenGsuH1xPL+6uHrXrJLJJkuRFQc7e1fDnTXoSM3qWs/YZNgBsxD9+3p+YbX76dji1sDOzuP2QlfWSpFJClALsyq/e8lGvsXfbSUXlnathj3hz11/ZPWs0j5fWf3/ZbH3dOb1PinpmGjjP2ZCVB+fdH2ed/fO4O8hpwVQ3ou6OZK0BXWQJz1NZco+WYjQzvohcrYSSnPLId6ExRlpr+iqyGnSn+zh4YmCMkIpea8aStBKlGBNxPIzjwWhEU6jwuwARLd28qMhlWeo6QHdurPqKMZllImeSYIAQsdb+BV8AMNP3zT3RAAAAAElFTkSuQmCC) ![histplot() ํ•จ์ˆ˜๋กœ ๋งŒ๋“  ๋‹จ๋ณ€๋Ÿ‰ ํžˆ์Šคํ† ๊ทธ๋žจ](https://www.snugarchive.com/static/08240f4da6627e3c969a65e53f16c6f2/847d0/und-histplot-penguins.png) ![histplot() ํ•จ์ˆ˜๋กœ ๋งŒ๋“  ๋‹จ๋ณ€๋Ÿ‰ ํžˆ์Šคํ† ๊ทธ๋žจ](https://www.snugarchive.com/static/08240f4da6627e3c969a65e53f16c6f2/847d0/und-histplot-penguins.png) histplot() ํ•จ์ˆ˜๋กœ ๋งŒ๋“  ๋‹จ๋ณ€๋Ÿ‰ ํžˆ์Šคํ† ๊ทธ๋žจ ``` pythonsns.displot(df_diamonds, x='carat', kde=True) ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='1085.5670103092784'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAASABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAIDAQX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAAB92sdEtwqQoH/xAAaEAEAAgMBAAAAAAAAAAAAAAABABADEUFC/9oACAEBAAEFAu1kdQRK9T//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAUEAEAAAAAAAAAAAAAAAAAAAAw/9oACAEBAAY/Ah//xAAbEAACAQUAAAAAAAAAAAAAAAAQEVEAAUFxof/aAAgBAQABPyFz6UXaaaGctD//2gAMAwEAAgADAAAAEFzIPP/EABYRAAMAAAAAAAAAAAAAAAAAABEgIf/aAAgBAwEBPxA1P//EABURAQEAAAAAAAAAAAAAAAAAABEg/9oACAECAQE/ECP/xAAdEAABBAIDAAAAAAAAAAAAAAABABARMSFBgdHh/9oACAEBAAE/EOBFdHIOamPEIAEIEGjLDItat//Z) ![ํžˆ์Šคํ† ๊ทธ๋žจ๊ณผ ์ปค๋„๋ฐ€๋„์ถ”์ •์œผ๋กœ ๊ตฌํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜](https://www.snugarchive.com/static/6c1a93f93cfa27ebf246166eded9d608/58996/und-histplot-kde-diamonds.jpg) ![ํžˆ์Šคํ† ๊ทธ๋žจ๊ณผ ์ปค๋„๋ฐ€๋„์ถ”์ •์œผ๋กœ ๊ตฌํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜](https://www.snugarchive.com/static/6c1a93f93cfa27ebf246166eded9d608/58996/und-histplot-kde-diamonds.jpg) ํžˆ์Šคํ† ๊ทธ๋žจ๊ณผ ์ปค๋„๋ฐ€๋„์ถ”์ •์œผ๋กœ ๊ตฌํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜ #### ํŠน์ • ์กฐ๊ฑด pandas๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ฑด๋ณ„๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ๋Š” 'species'๊ฐ€ 'Adelie'์ธ ํŽญ๊ท„์˜ 'flipper\_length\_mm'๋ฅผ ๊ด€์ธกํ•œ ๊ฐ’์— ๋Œ€ํ•ด ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๊ทธ๋ฆฌ๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ``` pythonsns.histplot(df_penguins[df_penguins['species'] == 'Adelie']['flipper_length_mm']) ``` #### ๋“ฑ๊ธ‰ ์ˆ˜์™€ ๋“ฑ๊ธ‰ ํญ: bins, binwidth ํžˆ์Šคํ† ๊ทธ๋žจ์—์„œ๋Š” ๋“ฑ๊ธ‰์˜ ์ˆ˜ ๋˜๋Š” ๋“ฑ๊ธ‰์˜ ํญ์— ๋”ฐ๋ผ ๊ทธ๋ž˜ํ”„์˜ ๋ชจ์–‘์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋“ฑ๊ธ‰์˜ ์ˆ˜๋Š” `bins` ์˜ต์…˜์œผ๋กœ, ๋“ฑ๊ธ‰ํญ์€ `binwidth` ์˜ต์…˜์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ``` pythonsns.histplot(df_penguins, x='flipper_length_mm', bins=10) # ๋“ฑ๊ธ‰์ˆ˜: 10sns.histplot(df_penguins, x='flipper_length_mm', binwidth=3) # ๋“ฑ๊ธ‰ํญ: 3 ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='610.0558659217877'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAKABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAIBBf/EABQBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAevdkxQf/8QAGxAAAgEFAAAAAAAAAAAAAAAAAQIAAxESMUH/2gAIAQEAAQUCcsGqXxUkjp1P/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGBAAAwEBAAAAAAAAAAAAAAAAAAEhESD/2gAIAQEABj8Ci0hVnH//xAAZEAEBAQADAAAAAAAAAAAAAAABEQAQMVH/2gAIAQEAAT8hH3EyNFXWNHmenJ//2gAMAwEAAgADAAAAEMMP/8QAFhEAAwAAAAAAAAAAAAAAAAAAEBEx/9oACAEDAQE/EFR//8QAFhEAAwAAAAAAAAAAAAAAAAAAEBEx/9oACAECAQE/EHB//8QAHBABAAICAwEAAAAAAAAAAAAAAQARITFRobHB/9oACAEBAAE/EEE0ro5T4MsLaUGzJfUJqy2p6Juhon//2Q==) ![๊ตฌ๊ฐ„์˜ ์ˆ˜์™€ ๊ตฌ๊ฐ„์˜ ํญ์„ ์กฐ์ •ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจ](https://www.snugarchive.com/static/8f5b51846ed698353594bed10ede6252/2ae27/und-histplot-bins-binwidth-penguins.jpg) ![๊ตฌ๊ฐ„์˜ ์ˆ˜์™€ ๊ตฌ๊ฐ„์˜ ํญ์„ ์กฐ์ •ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจ](https://www.snugarchive.com/static/8f5b51846ed698353594bed10ede6252/2ae27/und-histplot-bins-binwidth-penguins.jpg) ๊ตฌ๊ฐ„์˜ ์ˆ˜์™€ ๊ตฌ๊ฐ„์˜ ํญ์„ ์กฐ์ •ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจ #### ๋“ฑ๊ธ‰๋ช…, ๋“ฑ๊ธ‰๋ช… ์œ„์น˜, ๋“ฑ๊ธ‰ ์‚ฌ์ด ๊ณต๊ฐ„: bins=๋ฆฌ์ŠคํŠธ, discrete=True, shrink ํžˆ์Šคํ† ๊ทธ๋žจ์€ ์ฃผ๋กœ ์—ฐ์†์  ์ž๋ฃŒ๋ฅผ ์‹œ๊ฐํ™”ํ•  ๋•Œ ์“ฐ์ด์ง€๋งŒ, ์ข…์ข… ์ด์‚ฐ์  ์ž๋ฃŒ(discrete data)๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด์‚ฐ์  ์ž๋ฃŒ๋Š” ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋กœ ๋ณ€ํ˜•ํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. > - ๋“ฑ๊ธ‰ ๋ช…์‹œ > - ๋“ฑ๊ธ‰๋ช…์ด ๋ง‰๋Œ€์˜ ์ค‘์•™์— ์˜ค๋„๋ก ์œ„์น˜ > - ๋ณ€์ˆ˜๊ฐ€ ์—ฐ์†์ ์ด์ง€ ์•Š๊ณ  ์ด์‚ฐ์ ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ๋“ฑ๊ธ‰๊ณผ ๋“ฑ๊ธ‰ ์‚ฌ์ด์— ์—ฌ์œ  ๋‘๊ธฐ ์ด๋ฅผ ๋„์™€์ฃผ๋Š” ์˜ต์…˜์ด ๊ฐ๊ฐ `bins=๋ฆฌ์ŠคํŠธ`, `discrete=True`, `shrink`์ž…๋‹ˆ๋‹ค. ๊ฐ ์˜ต์…˜์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. > - bins=๋ฆฌ์ŠคํŠธ: ๊ทธ๋ž˜ํ”„์˜ x์ถ•์— ๋ช…์‹œํ•  ๋“ฑ๊ธ‰์„ ์ง์ ‘ ์ง€์ • > - discrete=True: ๊ฐ ๋“ฑ๊ธ‰์ด ๋ง‰๋Œ€ ์ค‘์•™์— ์˜ค๋„๋ก ์œ„์น˜ > - shrink: ๊ฐ ๋ง‰๋Œ€ ์‚ฌ์ด์— ๊ณต๊ฐ„์„ ๋งˆ๋ จ ์˜ˆ์ œ ์ฝ”๋“œ์™€ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` python# ์ฝ”๋“œ1: ๊ธฐ๋ณธ ์„ค์ •(๋ˆˆ๊ธˆ์˜ ์œ„์น˜ ์กฐ์ • ํ•„์š”)sns.histplot(df_tips, x='size')# ์ฝ”๋“œ2: ๋“ฑ๊ธ‰ ํ•œ๊ณ„ ์ง€์ •sns.histplot(df_tips, x='size', bins=[1, 2, 3, 4, 5, 6, 7])# ์ฝ”๋“œ3: ๊ฐ ๋“ฑ๊ธ‰๋ช…์„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ์ค‘์•™์œผ๋กœ ์ด๋™sns.histplot(df_tips, x='size', discrete=True)# ์ฝ”๋“œ4: ๋“ฑ๊ธ‰๋ช… ์ค‘์•™์œผ๋กœ ์ด๋™ํ•œ ๋’ค ๋“ฑ๊ธ‰ ๊ฐ„ ๊ณต๊ฐ„ ๋งˆ๋ จsns.histplot(df_tips, x='size', discrete=True, shrink=.8) ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='1170.9183673469388'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHuyVNBc0AP/8QAGhABAQACAwAAAAAAAAAAAAAAAQACISIyQf/aAAgBAQABBQL3PqS8stEzF//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABgQAAIDAAAAAAAAAAAAAAAAAAABECAh/9oACAEBAAY/AjISt//EABkQAQEBAQEBAAAAAAAAAAAAAAERADEhYf/aAAgBAQABPyFpxqVFcqWJ8cAyFzq4iU5ujw3G43//2gAMAwEAAgADAAAAEL/PvP/EABYRAAMAAAAAAAAAAAAAAAAAAAEgQf/aAAgBAwEBPxA1P//EABYRAAMAAAAAAAAAAAAAAAAAAAEgQf/aAAgBAgEBPxARP//EAB0QAQADAQACAwAAAAAAAAAAAAEAETEhQXFRYZH/2gAIAQEAAT8QQWyPOeMguyjgaxTTX2EVUL1erzP1lM1w85KRBWI7ANyeyLFCPyRVQAPon//Z) ![๋“ฑ๊ธ‰๋ช…๊ณผ ๋“ฑ๊ธ‰๋ช…์˜ ์œ„์น˜, ๋“ฑ๊ธ‰ ์‚ฌ์ด์˜ ๊ณต๊ฐ„์„ ์กฐ์ •ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจ](https://www.snugarchive.com/static/2945cdb4282cbbfa5742cff49e172ddc/c61c8/und-histplot-bins-discrete-shrink-tips.jpg) ![๋“ฑ๊ธ‰๋ช…๊ณผ ๋“ฑ๊ธ‰๋ช…์˜ ์œ„์น˜, ๋“ฑ๊ธ‰ ์‚ฌ์ด์˜ ๊ณต๊ฐ„์„ ์กฐ์ •ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจ](https://www.snugarchive.com/static/2945cdb4282cbbfa5742cff49e172ddc/c61c8/und-histplot-bins-discrete-shrink-tips.jpg) ๋“ฑ๊ธ‰๋ช…๊ณผ ๋“ฑ๊ธ‰๋ช…์˜ ์œ„์น˜, ๋“ฑ๊ธ‰ ์‚ฌ์ด์˜ ๊ณต๊ฐ„์„ ์กฐ์ •ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจ ๋‹จ, ํžˆ์Šคํ† ๊ทธ๋žจ์€ ๋ฐ์ดํ„ฐ์˜ ์—ฐ์†์  ํŠน์„ฑ์„ ์˜จ์ „ํžˆ ํ‘œํ˜„ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๊ฐ„์˜ ํฌ๊ธฐ์™€ ์‹œ์ž‘์ ์— ๋”ฐ๋ผ ๋ถ„ํฌ์˜ ๋ชจ์–‘์ด ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์—ฐ์†ํ˜• ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ๋ถ€๋“œ๋Ÿฌ์šด ๊ณก์„ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ์š”? ### 4\) ์ปค๋„๋ฐ€๋„์ถ”์ •์œผ๋กœ ๊ตฌํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜: kdeplot() ์ปค๋„๋ฐ€๋„์ถ”์ •(Kernel density estimation)์€ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜๋ฅผ ๋ถ€๋“œ๋Ÿฌ์šด ๊ณก์„ ์œผ๋กœ ์ถ”์ •ํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ด์‚ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ํžˆ์Šคํ† ๊ทธ๋žจ ๋Œ€์‹  ๋งค๋„๋Ÿฌ์šด ๊ณก์„ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ปค๋„ ๋ฐ€๋„ ํ•จ์ˆ˜(Kernel density function)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #### ๊ธฐ๋ณธ `kdeplot()` ํ•จ์ˆ˜๋Š” ๋‹จ๋ณ€๋Ÿ‰ ๋˜๋Š” ์ด๋ณ€๋Ÿ‰ ๋ฐ์ดํ„ฐ์˜ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜๋ฅผ ์ถ”์ •ํ•˜์—ฌ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ‰ํ™œ๋Ÿ‰(bandwidth)์„ ์กฐ์ •ํ•˜๋ ค๋ฉด `bw_adjust` ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜์˜ ๋ถ€๋“œ๋Ÿฌ์›€(smoothness) ์ •๋„๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.kdeplot(data=df_penguins, x='flipper_length_mm') # ์ฝ”๋“œ1sns.kdeplot(data=df_penguins, x='flipper_length_mm', bw_adjust=.25) ์ฝ”๋“œ 2 ``` `displot()` ํ•จ์ˆ˜์— `kind='kde'`์˜ต์…˜์„ ์ฃผ์–ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonsns.displot(penguins, x='flipper_length_mm', kind='kde') # ์ฝ”๋“œ1sns.displot(penguins, x='flipper_length_mm', kind='kde', bw_adjust=.25) # ์ฝ”๋“œ2 ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='592.2246220302376'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAKABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAIBBf/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAe8wUkf/xAAWEAEBAQAAAAAAAAAAAAAAAAAAASD/2gAIAQEAAQUCxUf/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAZEAACAwEAAAAAAAAAAAAAAAAAARARMUH/2gAIAQEAAT8humPRHYYP/9oADAMBAAIAAwAAABAjz//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABsQAAICAwEAAAAAAAAAAAAAAAERACEQMUFx/9oACAEBAAE/ELDPaqEgJ0oTDh1nHmD/2Q==) ![kdeplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜](https://www.snugarchive.com/static/accbce8426048f970b327e0b85800c9a/55d78/und-kdeplot-penguins.jpg) ![kdeplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜](https://www.snugarchive.com/static/accbce8426048f970b327e0b85800c9a/55d78/und-kdeplot-penguins.jpg) kdeplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜ ๋งŒ์ผ `displot()` ํ•จ์ˆ˜์— `kde=True` ์˜ต์…˜์„ ์ง€์ •ํ•˜๋ฉด ํžˆ์Šคํ† ๊ทธ๋žจ๊ณผ ์ปค๋„๋ฐ€๋„์ถ”์ • ํ•จ์ˆ˜๋ฅผ ๋™์‹œ์— ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #### ๋ฒ”์œ„ ์ œํ•œ: cut ์—ฐ์†์  ๋ณ€์ˆ˜๊ฐ€ ๋ฌดํ•œํžˆ ์ปค์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” `cut`์ด๋ผ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์–‘ ๋์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ``` pythonsns.kdeplot(df_tips, x='total_bill', kind='kde') # ์ฝ”๋“œ1sns.kdeplot(df_tips, x='total_bill', kind='kde', cut=0) # ์ฝ”๋“œ2 ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='623.0483271375465'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAKABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAIBBf/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAe9sC0j/xAAWEAEBAQAAAAAAAAAAAAAAAAAQAUH/2gAIAQEAAQUCdp//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAXEAADAQAAAAAAAAAAAAAAAAABEDEA/9oACAEBAAE/IWYQTf/aAAwDAQACAAMAAAAQs8//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAZEAEAAwEBAAAAAAAAAAAAAAABABExEEH/2gAIAQEAAT8QxbvY6PlQb4MnL//Z) ![์–‘ ๋์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜](https://www.snugarchive.com/static/1be7d848be611c95f814241b8cd213b6/f19c5/und-kdeplot-cut-tips.jpg) ![์–‘ ๋์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜](https://www.snugarchive.com/static/1be7d848be611c95f814241b8cd213b6/f19c5/und-kdeplot-cut-tips.jpg) ์–‘ ๋์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜ #### ์ƒ‰์ƒ: shade KDE ๋ฐ€๋„ ๊ณก์„  ์•„๋ž˜์— ์ƒ‰์„ ์ฑ„์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด `shade=True` ์˜ต์…˜์„ ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ### 5\) ๊ฒฝํ—˜์  ๋ˆ„์ ๋ถ„ํฌํ•จ์ˆ˜: edcfplot() ๊ฒฝํ—˜์  ๋ˆ„์ ๋ถ„ํฌํ•จ์ˆ˜(empirical cumulative distribution function, ECDF)๋Š” n๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๊ฐ๊ฐ์—์„œ 1/n ์”ฉ ์ ํ”„ํ•˜๋Š” ๊ณ„๋‹จ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ CDF๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. ECDF ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด `ecdfplot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.ecdfplot(df_penguins, x='flipper_length_mm') ``` ![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='1092.5373134328356'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAASABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAECAwX/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAHvTWwAzDUH/8QAFhAAAwAAAAAAAAAAAAAAAAAAARAg/9oACAEBAAEFArC//8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAFBABAAAAAAAAAAAAAAAAAAAAMP/aAAgBAQAGPwIf/8QAGRABAAMBAQAAAAAAAAAAAAAAAQAQITER/9oACAEBAAE/ITreCz0p4wbX/9oADAMBAAIAAwAAABCjxwD/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAcEAEAAQUBAQAAAAAAAAAAAAABEQAQITFRQYH/2gAIAQEAAT8QUxOKWcH2wide+0AbMbsRm5RRwdt//9k=) ![ecdfplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๊ฒฝํ—˜์  ๋ˆ„์ ๋ถ„ํฌํ•จ์ˆ˜](https://www.snugarchive.com/static/fb1b78e118accc858297f29e9a442ab8/1883d/und-ecdfplot-penguins.jpg) ![ecdfplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๊ฒฝํ—˜์  ๋ˆ„์ ๋ถ„ํฌํ•จ์ˆ˜](https://www.snugarchive.com/static/fb1b78e118accc858297f29e9a442ab8/1883d/und-ecdfplot-penguins.jpg) ecdfplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๊ฒฝํ—˜์  ๋ˆ„์ ๋ถ„ํฌํ•จ์ˆ˜ `displot()` ํ•จ์ˆ˜์— `kind='ecdf'` ์˜ต์…˜์„ ์ฃผ์–ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonsns.displot(df_penguins, x='flipper_length_mm', kind='ecdf') ``` ์ง€๊ธˆ๊นŒ์ง€ ํŒŒ์ด์ฌ Seaborn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ 1์ฐจ์› ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” [ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Seaborn ์‚ฌ์šฉ๋ฒ• ์‹ฌํ™”ํŽธ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-advanced/)์—์„œ ๋‹ค์ฐจ์› ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ ์ˆ˜๊ณ  ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค. ## ์ฐธ๊ณ  ๋ฌธํ—Œ - \[1\] ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธ์Šค ์Šค์ฟจ, ๏ฝขํŒŒ์ด์ฌํŽธ 5์žฅ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: Seaborn์„ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„ํฌ ์‹œ๊ฐํ™”๏ฝฃ, ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธ์Šค ์Šค์ฟจ, "<https://datascienceschool.net/>" - \[2\] ์•„๋ฌดํŠผ์›Œ๋ผ๋ฒจ, ๏ฝข์ •๊ทœํ™”(Normalization) ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ๏ฝฃ, ์•„๋ฌดํŠผ์›Œ๋ผ๋ฒจ, "<https://hleecaster.com/ml-normalization-concept/>" - \[3\] ์•„๋ฌดํŠผ์›Œ๋ผ๋ฒจ, ๏ฝข\[seaborn\] ๋ฐ”์ด์˜ฌ๋ฆฐ ํ”Œ๋กฏ๏ฝฃ, ์•„๋ฌดํŠผ์›Œ๋ผ๋ฒจ, "<https://hleecaster.com/python-seaborn-violinplot/>" - \[4\] Codeacademy Team, ๏ฝขSeaborn Styling, Part 1: Figure Style and Scale๏ฝฃ, Codecademy, "<https://www.codecademy.com/article/seaborn-design-i>" - \[5\] Codeacademy Team, ๏ฝขSeaborn Styling, Part 2: Color๏ฝฃ, Codecademy, "<https://www.codecademy.com/article/seaborn-design-ii>" - \[6\] Mahbubul Alam, ๏ฝขSeaborn can do the job, then why Matplotlib?๏ฝฃ, Towards Data Science, "<https://towardsdatascience.com/seaborn-can-do-the-job-then-why-matplotlib-dac8d2d24a5f>" - \[7\] Seaborn, ๏ฝขseaborn: statistical data visualization๏ฝฃ, Seaborn, "<https://seaborn.pydata.org/index.html>" - \[8\] StackOverflow, ๏ฝขHow to set a different color to the largest bar in a seaborn barplot๏ฝฃ, StackOverflow, "<https://stackoverflow.com/questions/31074758/how-to-set-a-different-color-to-the-largest-bar-in-a-seaborn-barplot>" ๋‹ค์Œ ๊ธ€ [ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Seaborn ์‚ฌ์šฉ๋ฒ• ์‹ฌํ™”ํŽธ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-advanced/) [ํ™ˆ์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ](https://www.snugarchive.com/) 0 Comments #### ์†Œ๊ฐœ ![author](https://www.snugarchive.com/static/3973f4520ff4c8e58eb5275beb3d6a3e/e07e1/banner-about.jpg) ![author](https://www.snugarchive.com/static/3973f4520ff4c8e58eb5275beb3d6a3e/e07e1/banner-about.jpg) ์›น ๊ฐœ๋ฐœ, ๋ฐ์ดํ„ฐ ๋ถ„์„ - - [์ปดํ“จํ„ฐ ๊ณผํ•™2](https://www.snugarchive.com/blog/category/computer-science/) - [๊ธฐ์ดˆ2](https://www.snugarchive.com/blog/category/computer-science/basic/) - [๋ฐ์ดํ„ฐ ๊ณผํ•™9](https://www.snugarchive.com/blog/category/data-science/) - [๋ฐ์ดํ„ฐ ์ˆ˜์ง‘1](https://www.snugarchive.com/blog/category/data-science/data-collection/) - [๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ5](https://www.snugarchive.com/blog/category/data-science/data-preprocessing/) - [๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”3](https://www.snugarchive.com/blog/category/data-science/visualization/) - [ํ™˜๊ฒฝ ์„ค์ •12](https://www.snugarchive.com/blog/category/environment-setup/) - [๊ฐœ๋ฐœ12](https://www.snugarchive.com/blog/category/environment-setup/development/) - [์ˆ˜ํ•™1](https://www.snugarchive.com/blog/category/mathematics/) - [ํ†ต๊ณ„1](https://www.snugarchive.com/blog/category/mathematics/statistics/) - [์ž์—ฐ์–ด7](https://www.snugarchive.com/blog/category/natural-language/) - [์˜์–ด5](https://www.snugarchive.com/blog/category/natural-language/english/) - [ํ•œ๊ตญ์–ด2](https://www.snugarchive.com/blog/category/natural-language/korean/) - [ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด4](https://www.snugarchive.com/blog/category/programming-language/) - [C3](https://www.snugarchive.com/blog/category/programming-language/c/) - [Kotlin1](https://www.snugarchive.com/blog/category/programming-language/kotlin/) - [์›น ๊ฐœ๋ฐœ6](https://www.snugarchive.com/blog/category/web-development/) - [HTML2](https://www.snugarchive.com/blog/category/web-development/html/) - [React4](https://www.snugarchive.com/blog/category/web-development/react/) - - [์›น ์•ฑ2](https://www.snugarchive.com/blog/category/web-app/) - [๋Œ€์‹œ๋ณด๋“œ2](https://www.snugarchive.com/blog/category/web-app/dashboard/) #### ํƒœ๊ทธ ๋ฆฌ์ŠคํŠธ ํŽผ์ณ๋ณด๊ธฐ [C ๊ธฐ์ดˆ(3)](https://www.snugarchive.com/tag/c-%EA%B8%B0%EC%B4%88/) [ChartJS(1)](https://www.snugarchive.com/tag/chartjs/) [ECharts(1)](https://www.snugarchive.com/tag/echarts/) [Gatsby(1)](https://www.snugarchive.com/tag/gatsby/) [HTML ๊ธฐ์ดˆ(2)](https://www.snugarchive.com/tag/html-%EA%B8%B0%EC%B4%88/) [HTML ์š”์†Œ(1)](https://www.snugarchive.com/tag/html-%EC%9A%94%EC%86%8C/) [HTML ํƒœ๊ทธ(1)](https://www.snugarchive.com/tag/html-%ED%83%9C%EA%B7%B8/) [IDE(3)](https://www.snugarchive.com/tag/ide/) [JDK(2)](https://www.snugarchive.com/tag/jdk/) [Kotlin ๊ธฐ์ดˆ(1)](https://www.snugarchive.com/tag/kotlin-%EA%B8%B0%EC%B4%88/) [MySQL(1)](https://www.snugarchive.com/tag/mysql/) [Node(2)](https://www.snugarchive.com/tag/node/) [pandas ์‚ฌ์šฉ๋ฒ•(5)](https://www.snugarchive.com/tag/pandas-%EC%82%AC%EC%9A%A9%EB%B2%95/) [Python Pandas ๊ธฐ์ดˆ(4)](https://www.snugarchive.com/tag/python-pandas-%EA%B8%B0%EC%B4%88/) [Python Seaborn(2)](https://www.snugarchive.com/tag/python-seaborn/) [Python ์‹ค์Šต(1)](https://www.snugarchive.com/tag/python-%EC%8B%A4%EC%8A%B5/) [React(1)](https://www.snugarchive.com/tag/react/) [React ๊ธฐ์ดˆ(4)](https://www.snugarchive.com/tag/react-%EA%B8%B0%EC%B4%88/) [React ์‹œ์ž‘(2)](https://www.snugarchive.com/tag/react-%EC%8B%9C%EC%9E%91/) [React ์ •์˜(1)](https://www.snugarchive.com/tag/react-%EC%A0%95%EC%9D%98/) [React ํ™˜๊ฒฝ ์„ค์ •(1)](https://www.snugarchive.com/tag/react-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95/) [Spring(5)](https://www.snugarchive.com/tag/spring/) [Visual Studio(1)](https://www.snugarchive.com/tag/visual-studio/) [๊ฐ์ • ํ‘œํ˜„ ์˜์–ด(4)](https://www.snugarchive.com/tag/%EA%B0%90%EC%A0%95-%ED%91%9C%ED%98%84-%EC%98%81%EC%96%B4/) [๋งˆํฌ์—… ์–ธ์–ด(1)](https://www.snugarchive.com/tag/%EB%A7%88%ED%81%AC%EC%97%85-%EC%96%B8%EC%96%B4/) [์–ด๊ฐ(2)](https://www.snugarchive.com/tag/%EC%96%B4%EA%B0%90/) [์˜์–ด ๋ฌธ๋ฒ• ์šฉ์–ด(1)](https://www.snugarchive.com/tag/%EC%98%81%EC%96%B4-%EB%AC%B8%EB%B2%95-%EC%9A%A9%EC%96%B4/) [์˜์–ด ์•ฝ์–ด(1)](https://www.snugarchive.com/tag/%EC%98%81%EC%96%B4-%EC%95%BD%EC%96%B4/) [์˜์–ด ์ค„์ž„๋ง(1)](https://www.snugarchive.com/tag/%EC%98%81%EC%96%B4-%EC%A4%84%EC%9E%84%EB%A7%90/) [์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ(1)](https://www.snugarchive.com/tag/%EC%A3%BC%ED%94%BC%ED%84%B0-%EB%85%B8%ED%8A%B8%EB%B6%81/) [ํฌ๋กค๋ง ์Šคํฌ๋ž˜ํ•‘ ์ฐจ์ด(1)](https://www.snugarchive.com/tag/%ED%81%AC%EB%A1%A4%EB%A7%81-%EC%8A%A4%ED%81%AC%EB%9E%98%ED%95%91-%EC%B0%A8%EC%9D%B4/) [ํ…์ŠคํŠธ ์—๋””ํ„ฐ ์ถ”์ฒœ(1)](https://www.snugarchive.com/tag/%ED%85%8D%EC%8A%A4%ED%8A%B8-%EC%97%90%EB%94%94%ED%84%B0-%EC%B6%94%EC%B2%9C/) [ํ†ต๊ณ„ ๊ธฐ์ดˆ(1)](https://www.snugarchive.com/tag/%ED%86%B5%EA%B3%84-%EA%B8%B0%EC%B4%88/) [ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(IDE) ์ถ”์ฒœ(1)](https://www.snugarchive.com/tag/%ED%86%B5%ED%95%A9-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD\(ide\)-%EC%B6%94%EC%B2%9C/) [ํŒŒ์ด์ฌ ๊ธฐ์ดˆ(1)](https://www.snugarchive.com/tag/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B8%B0%EC%B4%88/) [ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ(2)](https://www.snugarchive.com/tag/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EA%B8%B0%EC%B4%88/) [ํ•˜์ดํผํ…์ŠคํŠธ(1)](https://www.snugarchive.com/tag/%ED%95%98%EC%9D%B4%ED%8D%BC%ED%85%8D%EC%8A%A4%ED%8A%B8/) [ํ•œ๊ตญ์–ด๋Šฅ๋ ฅ์‹œํ—˜(2)](https://www.snugarchive.com/tag/%ED%95%9C%EA%B5%AD%EC%96%B4%EB%8A%A5%EB%A0%A5%EC%8B%9C%ED%97%98/) [ํ—ท๊ฐˆ๋ฆฌ๋Š” ํ•œ๊ตญ์–ด ๋‹จ์–ด(2)](https://www.snugarchive.com/tag/%ED%97%B7%EA%B0%88%EB%A6%AC%EB%8A%94-%ED%95%9C%EA%B5%AD%EC%96%B4-%EB%8B%A8%EC%96%B4/) #### ์ตœ๊ทผ๊ธ€ [![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='266.6666666666667'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAATUlEQVR42mP4jw18/vrty7fv/wkBBqyia/ce2XTw6P///+7evXv//v1fv36RoPnE5Wsrz296+PThLTB48eIFCZr//P3z7TfQ2f/wOxsAPyzpdm2ddYEAAAAASUVORK5CYII=) ![SQL Developer ๋‹ค์šด๋กœ๋“œ ๋ฐ ์‚ฌ์šฉ๋ฒ•](https://www.snugarchive.com/static/2db571f6e1d36b184d3a7359adf3cf99/6c71a/featured-image-sql-developer-logo.png) ![SQL Developer ๋‹ค์šด๋กœ๋“œ ๋ฐ ์‚ฌ์šฉ๋ฒ•](https://www.snugarchive.com/static/2db571f6e1d36b184d3a7359adf3cf99/6c71a/featured-image-sql-developer-logo.png)ํ™˜๊ฒฝ ์„ค์ • 2023-10-26 SQL Developer ๋‹ค์šด๋กœ๋“œ ๋ฐ ์‚ฌ์šฉ๋ฒ•](https://www.snugarchive.com/blog/sql-developer-setup/) [![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='800'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA30lEQVR42r2SSwuCQBDH+/6foahTRgcJgy4duxhBGyqFSBYRBSqyotu+1Jpc8GQPCPuxDDPM4787bOf+A51WmouyrE/LymVFUTx1rkk2dfYTy1vsz7Otn1Cm7qJ4qaxSl4SMN94IuXP3NNsd4xurUw3KMC+O4zAMwaZpeiNEci44k4wKChHBGEdRBAXgNzSnFUEQWJaFEFquVmsAIdt2IDz4PsmyBGPGWPObwYLyUNN0XTcMowd0u+AM+n3TNOuaNwsrKKVSSiEEiHDOWQU45ceFqSl5nqtByv73h33T/ADMQvNzTv0sjAAAAABJRU5ErkJggg==) ![DBMS ์„ค์น˜ํ•˜๊ธฐ(์˜ค๋ผํด 21c XE, MySQL)](https://www.snugarchive.com/static/3e517c0b79ccfe8af35afbe62604afef/0d540/featured-image-oracle-db.png) ![DBMS ์„ค์น˜ํ•˜๊ธฐ(์˜ค๋ผํด 21c XE, MySQL)](https://www.snugarchive.com/static/3e517c0b79ccfe8af35afbe62604afef/0d540/featured-image-oracle-db.png)ํ™˜๊ฒฝ ์„ค์ • 2023-08-31 DBMS ์„ค์น˜ํ•˜๊ธฐ(์˜ค๋ผํด 21c XE, MySQL)](https://www.snugarchive.com/blog/dbms-installation/) [![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='266.6666666666667'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAW0lEQVR42mP4jw38+/f3/bdXv//++o8XMGBqA5IP31/ffH323beX7727cu3lyccfboKkgJCAZrCKt1+fX35+9OnHu08/3nn26d6D99eJ0gwHP/98//fvH35nAwBwVeog5DCCTwAAAABJRU5ErkJggg==) ![STS 4/STS 3 ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ](https://www.snugarchive.com/static/6e3fcc45160c6ad35166a3efaf91175e/6c71a/featured-image-spring-logo.png) ![STS 4/STS 3 ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ](https://www.snugarchive.com/static/6e3fcc45160c6ad35166a3efaf91175e/6c71a/featured-image-spring-logo.png)ํ™˜๊ฒฝ ์„ค์ • 2023-08-21 STS 4/STS 3 ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ](https://www.snugarchive.com/blog/sts-setup/) [![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='266.6666666666667'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAEABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMF/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAAB35hUH//EABYQAQEBAAAAAAAAAAAAAAAAAAACMf/aAAgBAQABBQJOv//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABQQAQAAAAAAAAAAAAAAAAAAABD/2gAIAQEABj8Cf//EABgQAQEAAwAAAAAAAAAAAAAAACEBABAx/9oACAEBAAE/IbzBTV1//9oADAMBAAIAAwAAABAAD//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABoQAQEAAgMAAAAAAAAAAAAAAAERABAhMUH/2gAIAQEAAT8QUSeGGindW86//9k=) ![์•„ํŒŒ์น˜ ํ†ฐ์บฃ(Apache Tomcat) ๋‹ค์šด๋กœ๋“œ ๋ฐ ํ™˜๊ฒฝ์„ค์ •ํ•˜๊ธฐ](https://www.snugarchive.com/static/bb37c0af7147efcc1958c3750fb9eca9/8bb58/featured-image-apache-tomcat.jpg) ![์•„ํŒŒ์น˜ ํ†ฐ์บฃ(Apache Tomcat) ๋‹ค์šด๋กœ๋“œ ๋ฐ ํ™˜๊ฒฝ์„ค์ •ํ•˜๊ธฐ](https://www.snugarchive.com/static/bb37c0af7147efcc1958c3750fb9eca9/8bb58/featured-image-apache-tomcat.jpg)ํ™˜๊ฒฝ ์„ค์ • 2023-08-21 ์•„ํŒŒ์น˜ ํ†ฐ์บฃ(Apache Tomcat) ๋‹ค์šด๋กœ๋“œ ๋ฐ ํ™˜๊ฒฝ์„ค์ •ํ•˜๊ธฐ](https://www.snugarchive.com/blog/apache-tomcat-setup/) [![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='269.0344062153163'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAATElEQVR42mP4jxX8+QtChAADusC/f0Di5/HLz3cfO3f95oUr189eunrv4WOwzD+iNP+6eu/DpVv3nz1//PT5sxcvX799B5IhbDMpAACJT+pObUysagAAAABJRU5ErkJggg==) ![ECharts ์‚ฌ์šฉ๋ฒ•๊ณผ ์˜ˆ์ œ](https://www.snugarchive.com/static/c9a547d7db1f83820da6592578a84edc/c529d/featured-image-echarts-logo.png) ![ECharts ์‚ฌ์šฉ๋ฒ•๊ณผ ์˜ˆ์ œ](https://www.snugarchive.com/static/c9a547d7db1f83820da6592578a84edc/c529d/featured-image-echarts-logo.png)๋ฐ์ดํ„ฐ ๊ณผํ•™ 2023-08-04 ECharts ์‚ฌ์šฉ๋ฒ•๊ณผ ์˜ˆ์ œ](https://www.snugarchive.com/blog/echarts-tutorial/) #### ์ธ๊ธฐ๊ธ€ [![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='900'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQBAgMF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAenKrK5lhP/EABkQAAMBAQEAAAAAAAAAAAAAAAABAhEDEv/aAAgBAQABBQL0aipinFR0MMZ//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGRAAAgMBAAAAAAAAAAAAAAAAAAEQESES/9oACAEBAAY/AtcW0X0zI//EABoQAQEAAwEBAAAAAAAAAAAAAAEAESFBMWH/2gAIAQEAAT8hfgguzlC22CvMYsDXiY//2gAMAwEAAgADAAAAEMDf/8QAFhEAAwAAAAAAAAAAAAAAAAAAAAER/9oACAEDAQE/EI0Q/8QAFhEBAQEAAAAAAAAAAAAAAAAAARAR/9oACAECAQE/ENGf/8QAHBABAQACAgMAAAAAAAAAAAAAAREAITGxUYGR/9oACAEBAAE/EFDsBjg03mtzg4VRmeQKHuLmpZMlbr3iXQfc/9k=) ![ํŒŒ์ด์ฌ ์›น ํฌ๋กค๋ง? ์›น ์Šคํฌ๋ž˜ํ•‘ ๊ฐœ๋…๊ณผ ์‹ค์Šต ์˜ˆ์ œ](https://www.snugarchive.com/static/c57d317cf0b98896cf96de3902029dc5/784ed/featured-image-scraping.jpg) ![ํŒŒ์ด์ฌ ์›น ํฌ๋กค๋ง? ์›น ์Šคํฌ๋ž˜ํ•‘ ๊ฐœ๋…๊ณผ ์‹ค์Šต ์˜ˆ์ œ](https://www.snugarchive.com/static/c57d317cf0b98896cf96de3902029dc5/784ed/featured-image-scraping.jpg)๋ฐ์ดํ„ฐ ๊ณผํ•™ 2022-04-19 ํŒŒ์ด์ฌ ์›น ํฌ๋กค๋ง? ์›น ์Šคํฌ๋ž˜ํ•‘ ๊ฐœ๋…๊ณผ ์‹ค์Šต ์˜ˆ์ œ](https://www.snugarchive.com/blog/python-web-scraping/) [![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='811'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAOABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAEDAgT/xAAWAQEBAQAAAAAAAAAAAAAAAAADAQL/2gAMAwEAAhADEAAAAeTUmxwETf8A/8QAGBABAQEBAQAAAAAAAAAAAAAAAgEDABH/2gAIAQEAAQUCGZRuY5mSjaE3Wcl7f//EABYRAQEBAAAAAAAAAAAAAAAAABEBEP/aAAgBAwEBPwGLn//EABURAQEAAAAAAAAAAAAAAAAAAAAB/9oACAECAQE/AYr/xAAaEAEBAAIDAAAAAAAAAAAAAAABABAhETFB/9oACAEBAAY/AhTd1ag4b3H/xAAZEAADAQEBAAAAAAAAAAAAAAAAAREhMeH/2gAIAQEAAT8hsSbuifskUyDKURVqC7K8P//aAAwDAQACAAMAAAAQh8//xAAXEQEAAwAAAAAAAAAAAAAAAAABEBEx/9oACAEDAQE/EArOR//EABcRAAMBAAAAAAAAAAAAAAAAAAABEUH/2gAIAQIBAT8QRaRT/8QAGhAAAwEBAQEAAAAAAAAAAAAAAREhADFh0f/aAAgBAQABPxAtwBk1w2UeV9wMhTuJUCUSxbteLC4AAS7/2Q==) ![ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(IDE), ํ…์ŠคํŠธ ์—๋””ํ„ฐ ์ธ๊ธฐ ์ˆœ์œ„ (2022๋…„)](https://www.snugarchive.com/static/7c4b81386ca793e7895ce7995549af1f/2acd7/featured-image-stackoverflow-2021-survey-development-environments-preferences.jpg) ![ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(IDE), ํ…์ŠคํŠธ ์—๋””ํ„ฐ ์ธ๊ธฐ ์ˆœ์œ„ (2022๋…„)](https://www.snugarchive.com/static/7c4b81386ca793e7895ce7995549af1f/2acd7/featured-image-stackoverflow-2021-survey-development-environments-preferences.jpg)ํ™˜๊ฒฝ ์„ค์ • 2022-04-14 ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(IDE), ํ…์ŠคํŠธ ์—๋””ํ„ฐ ์ธ๊ธฐ ์ˆœ์œ„ (2022๋…„)](https://www.snugarchive.com/blog/best-ide-text-editors/) [![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='266.6666666666667'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAEABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMF/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAAB35hUH//EABYQAQEBAAAAAAAAAAAAAAAAAAACMf/aAAgBAQABBQJOv//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABQQAQAAAAAAAAAAAAAAAAAAABD/2gAIAQEABj8Cf//EABgQAQEAAwAAAAAAAAAAAAAAACEBABAx/9oACAEBAAE/IbzBTV1//9oADAMBAAIAAwAAABAAD//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABoQAQEAAgMAAAAAAAAAAAAAAAERABAhMUH/2gAIAQEAAT8QUSeGGindW86//9k=) ![์•„ํŒŒ์น˜ ํ†ฐ์บฃ(Apache Tomcat) ๋‹ค์šด๋กœ๋“œ ๋ฐ ํ™˜๊ฒฝ์„ค์ •ํ•˜๊ธฐ](https://www.snugarchive.com/static/bb37c0af7147efcc1958c3750fb9eca9/8bb58/featured-image-apache-tomcat.jpg) ![์•„ํŒŒ์น˜ ํ†ฐ์บฃ(Apache Tomcat) ๋‹ค์šด๋กœ๋“œ ๋ฐ ํ™˜๊ฒฝ์„ค์ •ํ•˜๊ธฐ](https://www.snugarchive.com/static/bb37c0af7147efcc1958c3750fb9eca9/8bb58/featured-image-apache-tomcat.jpg)ํ™˜๊ฒฝ ์„ค์ • 2023-08-21 ์•„ํŒŒ์น˜ ํ†ฐ์บฃ(Apache Tomcat) ๋‹ค์šด๋กœ๋“œ ๋ฐ ํ™˜๊ฒฝ์„ค์ •ํ•˜๊ธฐ](https://www.snugarchive.com/blog/apache-tomcat-setup/) [![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='600.8415147265077'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAKABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAMBBf/EABQBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAe9OgdCf/8QAGBAAAwEBAAAAAAAAAAAAAAAAAAExAhD/2gAIAQEAAQUCZmjnP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABYQAAMAAAAAAAAAAAAAAAAAAAAgMf/aAAgBAQAGPwIq/wD/xAAZEAEAAwEBAAAAAAAAAAAAAAABABAxcYH/2gAIAQEAAT8hxEuj6VpyABlf/9oADAMBAAIAAwAAABA7z//EABYRAQEBAAAAAAAAAAAAAAAAAAEQMf/aAAgBAwEBPxAxn//EABYRAQEBAAAAAAAAAAAAAAAAAAEQMf/aAAgBAgEBPxB0n//EAB0QAAICAQUAAAAAAAAAAAAAAAERABAhMUFRkaH/2gAIAQEAAT8QIuQ2tpwonBwdV70EEAeqFf/Z) ![์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ](https://www.snugarchive.com/static/87fe504a615c62acdb3541a6f4e7dda7/dda5e/featured-image-jupyter.jpg) ![์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ](https://www.snugarchive.com/static/87fe504a615c62acdb3541a6f4e7dda7/dda5e/featured-image-jupyter.jpg)ํ™˜๊ฒฝ ์„ค์ • 2022-04-16 ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ](https://www.snugarchive.com/blog/jupyter-notebook-setup/) [![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='900'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAMBAgQF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAeyjTRlpIP8A/8QAGBABAQEBAQAAAAAAAAAAAAAAAQACETH/2gAIAQEAAQUCWzrrnxLgRf/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABURAQEAAAAAAAAAAAAAAAAAAAEQ/9oACAECAQE/ASf/xAAZEAADAAMAAAAAAAAAAAAAAAAAEDEBUWH/2gAIAQEABj8CzwhpRf/EABsQAAMAAwEBAAAAAAAAAAAAAAABESFRcTFh/9oACAEBAAE/Ib9PNikRLD4cE9ZeaJywJFg//9oADAMBAAIAAwAAABCU/wD/xAAWEQEBAQAAAAAAAAAAAAAAAAABACH/2gAIAQMBAT8QRWDL/8QAFhEBAQEAAAAAAAAAAAAAAAAAAQAR/9oACAECAQE/EEG7N//EABsQAQADAAMBAAAAAAAAAAAAAAEAESExUWGR/9oACAEBAAE/EDA4ws/UOLxUN9esFaPg3ADRQ3R2DACDwEMy1O63P//Z) ![ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Seaborn ์‚ฌ์šฉ๋ฒ• ๊ธฐ์ดˆํŽธ](https://www.snugarchive.com/static/9a7155ba095434e2ba8bc565b127bfb5/93fdb/featured-image-seaborn-univariate.jpg) ![ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Seaborn ์‚ฌ์šฉ๋ฒ• ๊ธฐ์ดˆํŽธ](https://www.snugarchive.com/static/9a7155ba095434e2ba8bc565b127bfb5/93fdb/featured-image-seaborn-univariate.jpg)๋ฐ์ดํ„ฐ ๊ณผํ•™ 2022-06-05 ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Seaborn ์‚ฌ์šฉ๋ฒ• ๊ธฐ์ดˆํŽธ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/) #### ์ตœ๊ทผํ”„๋กœ์ ํŠธ [![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='630'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAIDBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHrXoSVD//EABgQAAIDAAAAAAAAAAAAAAAAAAESABEg/9oACAEBAAEFAnL2YMf/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAbEAABBAMAAAAAAAAAAAAAAAABAAISICExQf/aAAgBAQAGPwItjgdWq//EABoQAQADAAMAAAAAAAAAAAAAAAEAESEgUfD/2gAIAQEAAT8hEcgM7T0uKzTh/9oADAMBAAIAAwAAABCIP//EABcRAAMBAAAAAAAAAAAAAAAAAAEQEVH/2gAIAQMBAT8Qh1f/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAcEAEAAgEFAAAAAAAAAAAAAAABABEgIUFhcdH/2gAIAQEAAT8Qvkw1Ei7l14iioO5Th//Z) ![์ง€์ง„ ๋ชจ๋‹ˆํ„ฐ๋ง ์ƒํ™ฉํŒ ํ”„๋กœ์ ํŠธ](https://www.snugarchive.com/static/8b02e2f334ee200e0d914a2e1cb77c42/fcb2f/featured-image-earthquake-archive.jpg) ![์ง€์ง„ ๋ชจ๋‹ˆํ„ฐ๋ง ์ƒํ™ฉํŒ ํ”„๋กœ์ ํŠธ](https://www.snugarchive.com/static/8b02e2f334ee200e0d914a2e1cb77c42/fcb2f/featured-image-earthquake-archive.jpg)์›น ์•ฑ 2023-06-20 ์ง€์ง„ ๋ชจ๋‹ˆํ„ฐ๋ง ์ƒํ™ฉํŒ ํ”„๋กœ์ ํŠธ](https://www.snugarchive.com/blog/earthquake-dashboard/) [![](data:image/svg+xml;charset=utf-8,%3Csvg%20height='675.6'%20width='1200'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E) ![](data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABQAD/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQAD/9oADAMBAAIQAxAAAAFCxMc2Yyn/xAAZEAADAQEBAAAAAAAAAAAAAAAAAQIDExH/2gAIAQEAAQUCeUDyg4ybtrPpZF15/8QAFhEBAQEAAAAAAAAAAAAAAAAAABIB/9oACAEDAQE/AaVj/8QAGBEAAgMAAAAAAAAAAAAAAAAAAAECERL/2gAIAQIBAT8Bdo1I/8QAGRAAAwEBAQAAAAAAAAAAAAAAAAEyIQKR/9oACAEBAAY/As5RKJRjKfpTP//EABoQAQACAwEAAAAAAAAAAAAAAAEAERAxQVH/2gAIAQEAAT8hRUXHjdSoNmnBmq9vs//aAAwDAQACAAMAAAAQ5N//xAAYEQACAwAAAAAAAAAAAAAAAAAAARExUf/aAAgBAwEBPxCCtCwP/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQAhYf/aAAgBAgEBPxBJjdL/xAAaEAEAAgMBAAAAAAAAAAAAAAABABEhMVHx/9oACAEBAAE/ECKHNaSLqp2FeIbvmkHc9NFJT0+E/9k=) ![์ฝ”๋กœ๋‚˜19(COVID-19) ์ƒํ™ฉํŒ ํ”„๋กœ์ ํŠธ](https://www.snugarchive.com/static/4ee960757b33e10faded781b95c44cfd/26b49/covid19-dashboard.jpg) ![์ฝ”๋กœ๋‚˜19(COVID-19) ์ƒํ™ฉํŒ ํ”„๋กœ์ ํŠธ](https://www.snugarchive.com/static/4ee960757b33e10faded781b95c44cfd/26b49/covid19-dashboard.jpg)์›น ์•ฑ 2021-12-01 ์ฝ”๋กœ๋‚˜19(COVID-19) ์ƒํ™ฉํŒ ํ”„๋กœ์ ํŠธ](https://www.snugarchive.com/blog/covid19-dashboard/) #### ๋ชฉ์ฐจ 1. [์ค€๋น„ํ•˜๊ธฐ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EC%A4%80%EB%B9%84%ED%95%98%EA%B8%B0) - [์•ˆ๋‚ด ์‚ฌํ•ญ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EC%95%88%EB%82%B4-%EC%82%AC%ED%95%AD) - [์„ค์น˜ํ•˜๊ธฐ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0) - [๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ •](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EA%B8%B0%EB%B3%B8-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95) - [์ „์ฒด ์Šคํƒ€์ผ๋ง](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EC%A0%84%EC%B2%B4-%EC%8A%A4%ED%83%80%EC%9D%BC%EB%A7%81) - [๊ทธ๋ž˜ํ”„๋ณ„ ์Šคํƒ€์ผ๋ง](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EA%B7%B8%EB%9E%98%ED%94%84%EB%B3%84-%EC%8A%A4%ED%83%80%EC%9D%BC%EB%A7%81) - [๋ฐ์ดํ„ฐ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EB%8D%B0%EC%9D%B4%ED%84%B0) 2. [1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: ๋ฒ”์ฃผํ˜•](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#1%EC%B0%A8%EC%9B%90-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8B%9C%EA%B0%81%ED%99%94-%EB%B2%94%EC%A3%BC%ED%98%95) - [1\) ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„: countplot()](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#1-%EB%B9%88%EB%8F%84-%EB%A7%89%EB%8C%80%EA%B7%B8%EB%9E%98%ED%94%84-countplot) - [2\) ์ƒ์ž ๊ทธ๋ฆผ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#2-%EC%83%81%EC%9E%90-%EA%B7%B8%EB%A6%BC) 3. [1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: ์ˆ˜์น˜ํ˜•](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#1%EC%B0%A8%EC%9B%90-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8B%9C%EA%B0%81%ED%99%94-%EC%88%98%EC%B9%98%ED%98%95) - [1\) ์ ๊ทธ๋ž˜ํ”„: stripplot(), swarmplot()](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#1-%EC%A0%90%EA%B7%B8%EB%9E%98%ED%94%84-stripplot-swarmplot) - [2\) ์„ ๋ถ„๊ทธ๋ž˜ํ”„: rugplot()](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#2-%EC%84%A0%EB%B6%84%EA%B7%B8%EB%9E%98%ED%94%84-rugplot) - [3\) ํžˆ์Šคํ† ๊ทธ๋žจ: histplot()](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#3-%ED%9E%88%EC%8A%A4%ED%86%A0%EA%B7%B8%EB%9E%A8-histplot) - [4\) ์ปค๋„๋ฐ€๋„์ถ”์ •์œผ๋กœ ๊ตฌํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜: kdeplot()](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#4-%EC%BB%A4%EB%84%90%EB%B0%80%EB%8F%84%EC%B6%94%EC%A0%95%EC%9C%BC%EB%A1%9C-%EA%B5%AC%ED%95%9C-%ED%99%95%EB%A5%A0%EB%B0%80%EB%8F%84%ED%95%A8%EC%88%98-kdeplot) - [5\) ๊ฒฝํ—˜์  ๋ˆ„์ ๋ถ„ํฌํ•จ์ˆ˜: edcfplot()](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#5-%EA%B2%BD%ED%97%98%EC%A0%81-%EB%88%84%EC%A0%81%EB%B6%84%ED%8F%AC%ED%95%A8%EC%88%98-edcfplot) 4. [์ฐธ๊ณ  ๋ฌธํ—Œ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-basic/#%EC%B0%B8%EA%B3%A0-%EB%AC%B8%ED%97%8C) ยฉ2026 Snug Archive. All rights reserved. Email: snugarchive@gmail.com
Readable Markdown
## 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Last Updated 2024-09-10 Published 2022-06-05[Python Seaborn](https://www.snugarchive.com/tag/python-seaborn/)8๋ถ„ ๋ชฉ์ฐจ ![ํŒŒ์ด์ฌ-๋ฐ์ดํ„ฐ-์‹œ๊ฐํ™”-๊ธฐ์ดˆ-seaborn-์”จ๋ณธ](https://www.snugarchive.com/static/9a7155ba095434e2ba8bc565b127bfb5/93fdb/featured-image-seaborn-univariate.jpg) Seaborn์œผ๋กœ ์ผ๋ณ€๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™” ํ•ด๋ณด์ž ํŒŒ์ด์ฌ(Python)์—๋Š” [Matplotlib(๋งทํ”Œ๋กฏ๋ฆฝ)](https://matplotlib.org/), Plotly(ํ”Œ๋กœํ‹€๋ฆฌ), GGplot(์ง€์ง€ํ”Œ๋กฏ) ๋“ฑ ๋‹ค์–‘ํ•œ ์‹œ๊ฐํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. Matplotlib์€ ์ „ ์„ธ๊ณ„์˜ ๋ฐ์ดํ„ฐ ๊ณผํ•™์ž๋“ค์ด ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ฐํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Plotly๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ plotly.js๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ, ๊ทธ๋ž˜ํ”„์˜ ํŠน์ • ๋ถ€๋ถ„์„ ํ™•๋Œ€/์ถ•์†Œํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•˜๋Š” ๋“ฑ ์›น ์ƒ์—์„œ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. GGplot์€ R์˜ ggplot2 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐœ๋ฐœ๋˜์–ด, ๊ธฐ์กด์˜ R ์‚ฌ์šฉ์ž๋“ค์ด ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Seaborn์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”? ๋˜, ๋งŽ์€ ์‹œ๊ฐํ™” ๋„๊ตฌ ์ค‘์—์„œ Seaborn์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? Seaborn์€ Matplotlib์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋œ ๊ณ ์ˆ˜์ค€(high-level) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Seaborn์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ๊ฐ„๊ฒฐํ•จ์ž…๋‹ˆ๋‹ค. Seaborn์„ ์ด์šฉํ•˜๋ฉด ๋น„๊ต์  ์งง์€ ์ฝ”๋“œ๋กœ๋„ ํ†ต๊ณ„ํ•™์˜ ์ฃผ์š” ๊ทธ๋ž˜ํ”„๋ฅผ ๋น ๋ฅด๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„๋ฅผ ์„ธ๋ถ€ ์„ค์ • ์—†์ด ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๊ทธ๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด Matplotlib๋ณด๋‹ค Seaborn์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. Seaborn์˜ ์‚ฌ์šฉ๋ฒ•์€ ๊ธฐ์ดˆํŽธ๊ณผ ์‹ฌํ™”ํŽธ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๊ธฐ์ดˆํŽธ์—์„œ๋Š” Seaborn์„ ์„ค์น˜ํ•˜๊ณ  ์‹ค์Šต์„ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ•๊ณผ ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ์ธ 1์ฐจ์› ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. [ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Seaborn ์‚ฌ์šฉ๋ฒ• ์‹ฌํ™”ํŽธ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-advanced/)์—์„œ๋Š” ๋ณ€๋Ÿ‰์ด 2๊ฐœ ์ด์ƒ์ธ ๋‹ค์ฐจ์› ๊ทธ๋ž˜ํ”„๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธํŽธ์—์„œ ๋‹ค๋ฃฐ ์ „์ฒด ๊ทธ๋ž˜ํ”„์˜ ๊ฐœ์š”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ![Seaborn 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๋กœ๋“œ๋งต](https://www.snugarchive.com/static/9a7155ba095434e2ba8bc565b127bfb5/93fdb/featured-image-seaborn-univariate.jpg) Seaborn 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๋กœ๋“œ๋งต ๊ทธ๋Ÿผ Seaborn์œผ๋กœ 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”๋ฅผ ํ•˜๊ธฐ ์ „์— ์ค€๋น„ํ•  ์‚ฌํ•ญ๋ถ€ํ„ฐ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ## ์ค€๋น„ํ•˜๊ธฐ ### ์•ˆ๋‚ด ์‚ฌํ•ญ Seaborn์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ค€๋น„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ์งธ, ์‹ค์Šต ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธ์Šค(Data Science)๋ฅผ ์œ„ํ•œ ํ†ตํ•ฉ๊ฐœ๋ฐœํ™˜๊ฒฝ(IDE)์—๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ ์ŠคํŒŒ์ด๋”(Spyder), ์•„ํ†ฐ(Atom), ํŒŒ์ด์ฐธ(PyCharm) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ(Jupyter Notebook)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ์˜ ์ž์„ธํ•œ ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ•์€ [์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ](https://www.snugarchive.com/blog/jupyter-notebook-setup/)๋ฅผ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. ๋‘˜์งธ, ํ†ต๊ณ„ ์šฉ์–ด์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์šฉ์–ด๋Š” ๊ฐ„๋žตํžˆ ์„ค๋ช…ํ•  ์˜ˆ์ •์ด๋‚˜, ๊ฐœ๋…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์ด๋‚˜ ์ˆ˜์‹์€ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ†ต๊ณ„ ์šฉ์–ด๋ฅผ ์ฐธ์กฐํ•˜๋ฉด์„œ ๊ธ€์„ ์ฝ๊ณ  ์‹ถ์€ ๋ถ„๋“ค์€ [ํ™•๋ฅ ๊ณผ ํ†ต๊ณ„ ๊ธฐ์ดˆ ์šฉ์–ด](https://www.snugarchive.com/blog/glossary-statistical-terms/)๋ฅผ ํ•จ๊ป˜ ์ฝ์œผ์‹œ๊ธฐ๋ฅผ ๊ถŒํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์…‹์งธ, Seaborn ํ•จ์ˆ˜์˜ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค. Seaborn์˜ ์‹œ๊ฐํ™” ํ•จ์ˆ˜๋Š” ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€(figure-level)์˜ ํ•จ์ˆ˜์™€ ์ถ• ์ˆ˜์ค€(axes-level)์˜ ํ•จ์ˆ˜๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€์˜ ํ•จ์ˆ˜๋Š” ์ƒ์œ„ ํ•จ์ˆ˜๋กœ ๊ทธ๋ž˜ํ”„์˜ ์ข…๋ฅ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜๋Š” ๊ฐ ๊ทธ๋ž˜ํ”„์˜ ์ข…๋ฅ˜์— ํŠนํ™”๋œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜๋Š” 1๊ฐ€์ง€ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฐ ๋งž์ถคํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‘ ์ข…๋ฅ˜์˜ ํ•จ์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ธฐ์ค€์€ `Grid`์˜ ์ƒ์„ฑ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. `displot()`, `catplot()`, `relplot()` ํ•จ์ˆ˜๋Š” ๋ชจ๋‘ ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€ ํ•จ์ˆ˜์ด๋ฉฐ `seaborn.axisgrid.FacetGrid`๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, `countplot()`, `hisplot()`, `striplot()` ๋“ฑ๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋Š” ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜์ด๋ฉฐ ๊ฒฐ๊ณผ๋กœ `AxesSubplot`์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. `FacetGrid`๋Š” ์—ฌ๋Ÿฌ ๊ทธ๋ž˜ํ”„๋ฅผ ํฌํ•จํ•˜๋Š” ์ƒ์œ„ ๊ทธ๋ž˜ํ”„๋กœ, `FacetGrid`์—์„œ ํŠน์ • ํ•˜์œ„ `AxesSubplot` ๊ทธ๋ž˜ํ”„๋งŒ ์ถ”์ถœํ•ด ์›ํ•˜๋Š” ์กฐ๊ฑด์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜์ด ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ ๋ณดํ†ต ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€ ํ•จ์ˆ˜์™€ ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜์˜ ์˜ต์…˜์€ ์„œ๋กœ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, Matplotlib ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด๋‚˜ ํ•œ ๊ทธ๋ž˜ํ”„ ์œ„์— ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ฒน์ณ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ๋Š” ์ถ• ์ˆ˜์ค€์˜ ํ•จ์ˆ˜๊ฐ€ ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€ ํ•จ์ˆ˜๋ณด๋‹ค ์กฐ๊ธˆ ๋” ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€์˜ ํ•จ์ˆ˜๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ดํŽด๋ณด๋˜, ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€์œผ๋กœ ๊ทธ๋ฆด ์ˆ˜ ์—†๋Š” ๊ทธ๋ž˜ํ”„๋Š” ์ถ• ์ˆ˜์ค€ ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ง€๊ธˆ๋ถ€ํ„ฐ Seaborn์„ ์„ค์น˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ### ์„ค์น˜ํ•˜๊ธฐ #### 1\) ํŒŒ์ด์ฌ ๋ฐ pip ์„ค์น˜ ์—ฌ๋ถ€ ํ™•์ธ Seaborn์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํŒŒ์ด์ฌ๊ณผ ํŒŒ์ด์ฌ์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋งค๋‹ˆ์ €์ธ `pip`์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์‹œ์Šคํ…œ์— ํŒŒ์ด์ฌ๊ณผ `pip`์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonpython -Vpip -v ``` ํŒŒ์ด์ฌ๊ณผ `pip`์ด ์ž˜ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด Seaborn์„ ์„ค์น˜ํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ Seaborn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. #### 2\) ํŒจํ‚ค์ง€ ์„ค์น˜ ํ„ฐ๋ฏธ๋„์— `pip install`์ด๋ผ๋Š” ๋ช…๋ น์–ด ๋‹ค์Œ ์„ค์น˜ํ•˜๋ ค๋Š” ํŒจํ‚ค์ง€์˜ ์ด๋ฆ„์ธ `seaborn`์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ``` pythonpip install seaborn ``` ํŒŒ์ด์ฌ/R ๋ฐฐํฌํŒ์ธ ์•„๋‚˜์ฝ˜๋‹ค(Anaconda)๋กœ ์ž‘์—…ํ•˜์‹œ๋Š” ๋ถ„๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์ด `pip` ๋ช…๋ น์–ด ๋Œ€์‹  `conda` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonconda install seaborn ``` #### 3\) ์„ค์น˜ ํ™•์ธ ์„ค์น˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ์ž˜ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€์˜ ์„ค์น˜ ์—ฌ๋ถ€๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์„ค์น˜๋œ ํŒจํ‚ค์ง€์˜ ๋ฒ„์ „ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์„œ ์„ค์น˜๋œ Seaborn์˜ ๋ฒ„์ „ ์ •๋ณด๊ฐ€ ๋ณด์ด๋ฉด Seaborn์ด ์ž˜ ์„ค์น˜๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ``` pythonimport seaborn as snssns.__version__ ``` ๊ทธ๋ž˜ํ”„๋ฅผ ์ถœ๋ ฅํ•ด์„œ ์„ค์น˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonimport seaborn as snsdf = sns.load_dataset('penguins')sns.pairplot(df, hue='species') ``` Seaborn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜๋ฅผ ์™„๋ฃŒํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ์€ ๊ธฐ๋ณธ์ ์ธ ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ### ๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ • ๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ •์€ ๊ทธ๋ž˜ํ”„ ์ „์—ญ์— ์ ์šฉ๋˜๋Š” ์Šคํƒ€์ผ๋ง(styling)์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ณ„ ํ™˜๊ฒฝ ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ํŒŒ์ด์ฌ Matplotlib ์‚ฌ์šฉ๋ฒ•(์˜ˆ์ •)์„ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom matplotlib import rcParamsimport seaborn as snsimport warningsdef setting_styles_basic():rcParams['font.family'] = 'Malgun Gothic'rcParams['axes.unicode_minus'] = Falsesetting_styles_basic()warnings.filterwarnings('ignore') ``` Matplotlib์„ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  Seaborn์œผ๋กœ ํ™˜๊ฒฝ ์„ค์ •์„ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ### ์ „์ฒด ์Šคํƒ€์ผ๋ง Seaborn์—์„œ ๋ชจ๋“  ์Šคํƒ€์ผ๋ง์„ ํ•œ ๋ฒˆ์— ์„ค์ •ํ•˜๋ ค๋ฉด `set_theme()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. > - set\_theme: ๊ทธ๋ž˜ํ”„ ์ „๋ฐ˜ ๋ฐ ๋งค์ฒด๋ณ„ ์Šค์ผ€์ผ(scale), ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ ์ง€์ • ๋‹ค์Œ ํ•จ์ˆ˜๋Š” `set_theme()`์˜ ์ผ์„ ์—ญํ•  ๋ถ„๋‹ดํ•ฉ๋‹ˆ๋‹ค. > - set\_style: ๊ทธ๋ž˜ํ”„ ์ „๋ฐ˜ ์Šคํƒ€์ผ ์ง€์ • > - set\_context: ๋งค์ฒด๋ณ„ ์Šค์ผ€์ผ ์ง€์ • > - set\_palette: ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ ์ง€์ • #### set\_theme `set_theme()` ํ•จ์ˆ˜๋Š” ๊ทธ๋ž˜ํ”„ ์ „๋ฐ˜์— ์ ์šฉ๋˜๋Š” ํ…Œ๋งˆ(theme)๋ฅผ ์ง€์ •ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. `set_theme()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ทธ๋ž˜ํ”„ ์ „์—ญ์˜ ์Šคํƒ€์ผ๋ง์„ ์ง€์ •ํ•˜๋Š” `set_style()` ํ•จ์ˆ˜์™€ ์‚ฌ์šฉํ•  ๋งค์ฒด์— ์ ํ•ฉํ•˜๋„๋ก ๊ทธ๋ž˜ํ”„์˜ ์Šค์ผ€์ผ์„ ์กฐ์ •ํ•˜๋Š” `set_context()` ํ•จ์ˆ˜๋กœ ํ•˜๋Š” ์ผ์„ ํ•œ ๋ฒˆ์— ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythoncustom_params = {"axes.spines.right": False, "axes.spines.top": False}sns.set_theme(context='notebook',style='darkgrid',palette='deep',font='Malgun Gothic',font_scale=1,rc=custom_params) ``` ##### context `context` ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์‚ฌ์šฉํ•˜๋Š” ๋งค์ฒด์— ์ ํ•ฉํ•œ ๊ทธ๋ž˜ํ”„์˜ ์Šค์ผ€์ผ์„ ์กฐ์ •ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ ๋งค์ฒด์— ์ ํ•ฉํ•˜๊ฒŒ ๋ผ๋ฒจ๊ณผ ๊ทธ๋ž˜ํ”„์˜ ํฌ๊ธฐ๋ฅผ ๋งž์ถค ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. > - notebook: ๊ธฐ๋ณธ ์„ค์ • > - paper: ๋…ผ๋ฌธ, ๋ณด๊ณ ์„œ > - talk: ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ > - poster: ํฌ์Šคํ„ฐ ##### style `style` ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” Seaborn์˜ ๊ธฐ๋ณธ ๋‚ด์žฅ ํ…Œ๋งˆ(built-in themes)๋ฅผ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ๋‚ด์žฅ ํ…Œ๋งˆ์—๋Š” ์ด 5๊ฐ€์ง€ ํ…Œ๋งˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. > - darkgrid: ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ + ๊ทธ๋ฆฌ๋“œ > - whitegrid: ํฐ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ + ๊ทธ๋ฆฌ๋“œ > - dark: ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ > - white: ํฐ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ > - ticks: ํฐ์ƒ‰ ๋ฐฐ๊ฒฝ์ƒ‰ + ๋ˆˆ๊ธˆ ##### palette `palette` ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ƒ‰์„ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ๋Š” ์ด 6๊ฐ€์ง€(`deep`, `muted`, `pastel`, `bright`, `dark`, `colorblind`)์ž…๋‹ˆ๋‹ค. ํŠน์ • ํŒ”๋ ˆํŠธ๋ฅผ ์„ ํƒํ•˜๋ ค๋ฉด `color_palette()` ํ•จ์ˆ˜๋ฅผ, ์„ ํƒํ•œ ํŒ”๋ ˆํŠธ์˜ ์ƒ‰์ƒ์„ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `palplot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonpalette = sns.color_palette('deep')sns.palplot(palette) ``` ##### font, font\_scale `font`์™€ `font_scale`์€ ๊ฐ๊ฐ ๊ธ€๊ผด์˜ ์ข…๋ฅ˜์™€ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์ž…๋‹ˆ๋‹ค. Matplotlib์˜ `rcParams`์—์„œ `font.family`์™€ `font.size`๊ฐ€ ํ•˜๋Š” ์ผ๊ณผ ๋™์ผํ•œ ์ผ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ``` pythonfrom matplotlib import rcParamsrcParams['font.family'] = 'Malgun Gothic'rcParams['font.size'] = 18 ``` Matplotlib์˜ `rcParams`์—์„œ์ฒ˜๋Ÿผ ๊ทธ๋ž˜ํ”„์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ ์ „๋ฐ˜์„ ์กฐ์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `rc` ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ##### rc `rc` ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ถ•(axes), ๊ทธ๋ฆฌ๋“œ(grid), ๋ˆˆ๊ธˆ(ticks), ๊ธ€๊ผด(font) ๋“ฑ ๊ทธ๋ž˜ํ”„์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ „๋ฐ˜์„ ์กฐ์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์ž…๋‹ˆ๋‹ค. `plotting_context()` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ๊ทธ๋ž˜ํ”„์— ์ ์šฉ๋˜๊ณ  ์žˆ๋Š” ์„ค์ •๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `rc` ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ค์ •๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.plotting_context(){'axes.facecolor': 'white','axes.edgecolor': 'black','axes.grid': False,'axes.axisbelow': 'line','axes.labelcolor': 'black','figure.facecolor': 'white','grid.color': '#b0b0b0','grid.linestyle': '-','text.color': 'black','xtick.color': 'black','ytick.color': 'black','xtick.direction': 'out','ytick.direction': 'out','lines.solid_capstyle': <CapStyle.projecting: 'projecting'>,'patch.edgecolor': 'black','patch.force_edgecolor': False,'image.cmap': 'viridis','font.family': ['sans-serif'],'font.sans-serif': ['DejaVu Sans','Bitstream Vera Sans','Computer Modern Sans Serif','Lucida Grande','Verdana','Geneva','Lucid','Arial','Helvetica','Avant Garde','sans-serif'],'xtick.bottom': True,'xtick.top': False,'ytick.left': True,'ytick.right': False,'axes.spines.left': True,'axes.spines.bottom': True,'axes.spines.right': True,'axes.spines.top': True} ``` ์—ฌ๊ธฐ์„œ `axes.spines`์€ ๊ทธ๋ž˜ํ”„์˜ ์ถ•์„ ๋‚˜ํƒ€๋‚ด๊ฑฐ๋‚˜ ์ˆจ๊ธฐ๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด Seaborn์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ„(top), ์•„๋ž˜(bottom), ์™ผํŽธ(left), ์˜ค๋ฅธํŽธ(right) ์ด 4๊ฐœ์˜ ์ถ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋งŒ์ผ ์œ„์ชฝ ์ถ•๊ณผ ์˜ค๋ฅธ์ชฝ ์ถ•์„ ์ˆจ๊ธฐ๊ณ  ์‹ถ๋‹ค๋ฉด `despine()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. `despine()` ํ•จ์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ๊ทธ๋ž˜ํ”„ ํ•จ์ˆ˜ ๋‹ค์Œ์— ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ``` pythonsns.countplot(...)sns.despine() ``` ๋งŒ์ผ ํŠน์ • ์ถ•์„ ์ˆจ๊ธฐ๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ˆจ๊ธฐ๊ณ  ์‹ถ์€ ๋ฐฉํ–ฅ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— `True` ๊ฐ’์„ ์ „๋‹ฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.countplot(...)sns.despine(left=True, bottom=True) ``` #### set\_style `set_style()` ํ•จ์ˆ˜๋กœ๋Š” ๊ทธ๋ž˜ํ”„ ์ „๋ฐ˜์— ์ ์šฉ๋  ํ…Œ๋งˆ์™€ ๊ทธ๋ž˜ํ”„์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonrc={'grid.color': '.5', 'grid.linestyle': ':'}sns.set_style('whitegrid', rc=None) ``` #### set\_context `set_context()` ํ•จ์ˆ˜๋กœ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์Šค์ผ€์ผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonsns.set_context('notebook', font_scale=1.25, rc={'grid.color': '.6'}) ``` #### set\_palette `set_palette()` ํ•จ์ˆ˜๋กœ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonsns.set_palatte('colorblind') ``` ### ๊ทธ๋ž˜ํ”„๋ณ„ ์Šคํƒ€์ผ๋ง ๊ทธ๋ž˜ํ”„๋ณ„ ์Šคํƒ€์ผ๋ง์„ ํ•˜๋ ค๋ฉด `set()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. #### ์ถ• ๋ฒ”์œ„ ์ œํ•œํ•˜๊ธฐ: xlim, ylim Seaborn์—์„œ x์ถ•๊ณผ y์ถ•์˜ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด `xlim`, `ylim` ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.countplot(...).set(xlim=(1, 10), ylim=(0, 20)) ``` #### ์ถ• ๋ผ๋ฒจ ์ˆจ๊ธฐ๊ธฐ: xlabel, ylabel Seaborn์—์„œ ์ถ•์— ์žˆ๋Š” ๋ผ๋ฒจ์„ ์ˆจ๊ธฐ๋ ค๋ฉด `xlabel`, `ylabel` ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonax = sns.heatmap(...)ax.set(xlabel="", ylabel="") ``` #### ์ถ• ์œ„์น˜ ๋ฐ”๊พธ๊ธฐ ์ถ• ์œ„์น˜๋ฅผ ์กฐ์ •ํ•˜๋ ค๋ฉด `ax.axis.tick_top` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonax = sns.heatmap(...)ax.xaxis.tick_top()ax.yaxis.tick_left ``` #### ๊ทธ๋ž˜ํ”„ ํฌ๊ธฐ ์กฐ์ •ํ•˜๊ธฐ Seaborn์—์„œ ๊ฐœ๋ณ„ ๊ทธ๋ž˜ํ”„์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋ ค๋ฉด `rc` ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.barplot(...)sns.set(rc={'figure.figsize':(10,7)}) ``` ์„ค์น˜์™€ ๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ •์„ ๋ชจ๋‘ ๋งˆ์ณค๋‹ค๋ฉด ์ด์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉ(loading)ํ•ด์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค. ### ๋ฐ์ดํ„ฐ Seaborn์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ๊ณ , ๋‚ด์žฅ ๋ฐ์ดํ„ฐ(built-in data)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. #### 1\) ๋ฐ์ดํ„ฐ ์„ ํƒ ##### ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด pandas๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. CSV ํŒŒ์ผ๊ณผ ์—‘์…€ ํŒŒ์ผ์„ DataFrame ๊ฐ์ฒด๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonimport pandas as pddf = pd.read_csv('data.csv')df = pd.read_excel('data.xlsx') ``` pandas์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ์ž์„ธํ•œ ๋ฐฉ๋ฒ•์€ [Python pandas ๋ฐ์ดํ„ฐ ์ƒ์„ฑ, ๋กœ๋”ฉ๊ณผ ์ €์žฅ, ์ƒ‰์ธ ๊ด€๋ฆฌํ•˜๋Š” ๋ฒ•](https://www.snugarchive.com/blog/python-pandas-guide-1/)์—์„œ '๋กœ๋”ฉ ๋ฐ ์ €์žฅ' ํŽธ์„ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. ์—ฌ๊ธฐ์„œ๋Š” Seaborn์˜ ๋‚ด์žฅ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ##### ๋‚ด์žฅ ๋ฐ์ดํ„ฐ Seaborn์—๋Š” ๋‹ค์–‘ํ•œ ๋‚ด์žฅ ๋ฐ์ดํ„ฐ์…‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ๋‚ด์— ์–ด๋–ค ๋‚ด์žฅ ๋ฐ์ดํ„ฐ์…‹์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๋ ค๋ฉด `get_dataset_names()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.get_dataset_names()['anagrams', 'anscombe', 'attention', 'brain_networks', 'car_crashes', 'diamonds','dots', 'exercise', 'flights', 'fmri', 'gammas', 'geyser', 'iris', 'mpg','penguins', 'planets', 'taxis', 'tips', 'titanic'] ``` ์ด ๋ฐ์ดํ„ฐ์…‹ ์ค‘์—์„œ ๋ช‡ ๊ฐ€์ง€๋ฅผ ์„ ํƒํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. #### 2\) ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ Seborn์˜ ๋‚ด์žฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•˜๋ ค๋ฉด `load_dataset()` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. pandas๋ฅผ ์ด์šฉํ•ด ๊ฐ€์ ธ์˜จ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ `load_dataset()` ํ•จ์ˆ˜๋กœ ๋ถˆ๋Ÿฌ์˜จ ๋ฐ์ดํ„ฐ ํ˜•์‹๋„ DataFrame ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋‹ค์Œ ๋ฐ์ดํ„ฐ์…‹์„ ๋ถˆ๋Ÿฌ์™€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` pythondf_titanic = sns.load_dataset('titanic')df_iris = sns.load_dataset('iris')df_penguins = sns.load_dataset('penguins')df_tips = sns.load_dataset('tips')df_diamonds = sns.load_dataset('diamonds')df_planets = sns.load_dataset('planets') ``` #### 3\) ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ํŒŒ์•… ๋ฐ์ดํ„ฐ์…‹์ด ์ž˜ ์ค€๋น„๋˜์—ˆ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ„๋‹จํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. pandas์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๋Š” ์ž์„ธํ•œ ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด [Python pandas ๋ฐ์ดํ„ฐ ํ™•์ธ, ์ •๋ ฌ, ์„ ํƒํ•˜๋Š” ๋ฒ•](https://www.snugarchive.com/blog/python-pandas-guide-2/)์—์„œ "๋ฐ์ดํ„ฐ ํ™•์ธ" ๋ถ€๋ถ„์„ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. ``` pythondf.shapedf.head()df['class'] ``` ๋ฐ์ดํ„ฐ์…‹์ด ์ž˜ ์ค€๋น„๋˜์—ˆ๋‹ค๋ฉด ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹œ๊ฐํ™”๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธํŽธ์—์„œ ์‹œ๊ฐํ™”ํ•  ๋ฐ์ดํ„ฐ๋Š” 1์ฐจ์› ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. 1์ฐจ์› ๋ฐ์ดํ„ฐ๋ž€ ์†์„ฑ(attribute)์ด 1๊ฐœ์ธ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. Numpy ๋ฐฐ์—ด์—์„œ ์›์†Œ๋ฅผ ํ•œ ์ค„๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ, ์—‘์…€์—์„œ ์—ด(columns)์ด 1๊ฐœ์ธ ๋ฐ์ดํ„ฐ, ๋…๋ฆฝ๋ณ€์ˆ˜(independent variable) ๋˜๋Š” ๋ณ€๋Ÿ‰(variate)์ด 1๊ฐœ์ธ ๋ฐ์ดํ„ฐ๋ผ๊ณ ๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1์ฐจ์› ๋ฐ์ดํ„ฐ๋Š” ์ˆ˜์น˜ํ˜•๊ณผ ๋ฒ”์ฃผํ˜•์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์ˆ˜์น˜ํ˜•์€ ๋ณ€์ˆ˜๊ฐ€ ์‹ค์ˆซ๊ฐ’์ธ ์—ฐ์†์  ๋ณ€์ˆ˜(continous variables)์™€ ์ •์ˆซ๊ฐ’์ธ ์ด์‚ฐ์  ๋ณ€์ˆ˜(discrete variables)์ธ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ๋ฒ”์ฃผํ˜•์€ ๋ณ€์ˆ˜๊ฐ€ ์นดํ…Œ๊ณ ๋ฆฌ(category)์ฒ˜๋Ÿผ ๋ถ„๋ฅ˜๋œ ์งˆ์  ๋ณ€์ˆ˜(qualitative variables)๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ 1์ฐจ์› ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ์‹œ๊ฐํ™”ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ## 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: ๋ฒ”์ฃผํ˜• ์ผ๋ณ€๋Ÿ‰ ๋ฒ”์ฃผํ˜• ์ž๋ฃŒ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ๋Š” ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„(bar graph)์™€ ํŒŒ์ด ์ฐจํŠธ(pie chart)๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, Seaborn์—๋Š” ํŒŒ์ด ์ฐจํŠธ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ํŒŒ์ด ์ฐจํŠธ๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด Matplotlib์„ ์ด์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋ฐฉ๋ฒ•์€ ํŒŒ์ด์ฌ Matplotlib ์‚ฌ์šฉ๋ฒ•(์˜ˆ์ •)์„ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”. ์—ฌ๊ธฐ์„œ๋Š” Seaborn์œผ๋กœ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ### 1\) ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„: countplot() Seaborn์œผ๋กœ ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ํ•จ์ˆ˜๋Š” `countplot()`์ž…๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ๊ฐ ๋ฒ”์ฃผ์— ์†ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋นˆ๋„(๊ฐœ์ˆ˜)๋ฅผ ๋ง‰๋Œ€์˜ ๋†’์ด๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ์ˆ˜์ง ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ถ€ํ„ฐ ๊ทธ๋ ค๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. #### ์ˆ˜์ง ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ##### ๊ธฐ๋ณธ Seaborn์œผ๋กœ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ธฐ๋ณธ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.countplot(df_titanic['class'])sns.countplot(x=df_titanic['class'])sns.countplot(x='class', data=df_titanic) ``` ์ฝ”๋“œ1์— ์•„๋ž˜์™€ ๊ฐ™์ด ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. > - color: ๋ง‰๋Œ€ ์ƒ‰ ์ง€์ • > - edgecolor: ๋ง‰๋Œ€ ํ…Œ๋‘๋ฆฌ์ƒ‰ ์ง€์ • > - palette: ๊ทธ๋ž˜ํ”„ ์ƒ‰ ์ง€์ • > - alpha: ๊ทธ๋ž˜ํ”„ ํˆฌ๋ช…๋„ ์ง€์ • > - linewidth: ๊ทธ๋ž˜ํ”„ ๊ตต๊ธฐ ์ง€์ • `palette`์˜ ๋‹ค์–‘ํ•œ ์˜ต์…˜์€ [Seaborn ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€ color palette](https://seaborn.pydata.org/tutorial/color_palettes.html)์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonsns.countplot(x='class', data=df_titanic, color='skyblue')sns.countplot(x='class', data=df_titanic, palette='Set3')sns.countplot(x='class', data=df_titanic,facecolor=(0, 0, 0, 0),linewidth=5,edgecolor=sns.color_palette('dark', 3)) ``` ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ![countplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/b341ea40e80fe286aa4e2e2ff4bdcb30/53932/ucd-countplot-vertical-1-1-basic-titanic.jpg) countplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ `countplot()` ํ•จ์ˆ˜ ์™ธ์—๋„ `catplot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. `catplot()` ํ•จ์ˆ˜๋Š” ์ˆ˜์น˜ํ˜• ๋ณ€์ˆ˜์™€ ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•จ์ˆ˜์ด์ง€๋งŒ, `kind='count'` ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋นˆ๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ฝ”๋“œ1๊ณผ ๋™์ผ). ``` pythonsns.catplot(x='class', kind='count', data=df_titanic) ``` ![catplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/f40253aef23c11d1fb04f9eb4c94aa24/0761f/ucd-countplot-vertical-1-2-catplot-titanic.jpg) catplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ##### ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ๋งŒ์ผ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `order` ํŒŒ๋ผ๋ฏธํ„ฐ์— `df.value_counts().index` ์ฝ”๋“œ๋ฅผ ๋”ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. `df.value_counts().index`๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋นˆ๋„๊ฐ€ ๋†’์€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์ค๋‹ˆ๋‹ค. ์˜ˆ์‹œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.countplot(x='class', data=df_titanic,order=df_titanic['class'].value_counts().index) ``` ![๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/5ff5a0bfe12819dd67ef751f1e3f5045/c8b9c/ucd-countplot-vertical-1-3-order-titanic.jpg) ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ##### ์š”์•ฝ๊ฐ’ ํ‘œ์‹œ ๊ฐ ๋ง‰๋Œ€ ์œ„์— ์š”์•ฝ๊ฐ’์„ ์ˆซ์ž๋กœ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•œ ๋’ค `ax.bar_label(ax.containers[0])` ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonax = sns.countplot(df_titanic['class'])ax.bar_label(ax.containers[0]) ``` ![์š”์•ฝ๊ฐ’์„ ํ‘œ์‹œํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/54e41d232b6fc0f79815d5a79716b31e/988a1/ucd-countplot-vertical-1-4-summary-statistics-titanic.jpg) ์š”์•ฝ๊ฐ’์„ ํ‘œ์‹œํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ##### ์ƒ‰๊น” ๊ฐ•์กฐ ํŠน์ • ๋ง‰๋Œ€์˜ ์ƒ‰๊น”์„ ๊ฐ•์กฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ€์žฅ ๋นˆ๋„์ˆ˜๊ฐ€ ๋†’์€ ๋ง‰๋Œ€๋งŒ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `numpy`์™€ `barplot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonvalues = np.array(df_titanic['class'].value_counts())idx = np.array(df_titanic['class'].value_counts().index)palette = ['skyblue' if (x == max(values)) else 'lightgrey' for x in values]sns.barplot(x=idx, y=values, palette=palette) ``` ![ํŠน์ • ๋ง‰๋Œ€๋ฅผ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ๊ฐ•์กฐํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/8225b5a0f5ea0998b2d5c0d7211e8cdc/a6cf6/ucd-countplot-vertical-1-5-setting-a-different-color-titanic.jpg) ํŠน์ • ๋ง‰๋Œ€๋ฅผ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ๊ฐ•์กฐํ•œ ์ˆ˜์ง ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ #### ์ˆ˜ํ‰ ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ Seaborn์œผ๋กœ ์ผ๋ณ€๋Ÿ‰ ๋ฒ”์ฃผํ˜• ์ž๋ฃŒ์— ๋Œ€ํ•œ ๊ฐ€๋กœ ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด `countplot()` ํ•จ์ˆ˜์— x ๋งค๊ฐœ๋ณ€์ˆ˜ ๋Œ€์‹  y ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.countplot(y='class', data=df_titanic)sns.catplot(y='class', kind='count', palette='ch:.25', data=df_titanic) ``` ![countplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜ํ‰ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/2002e298d209b7308eae3167f74c3208/cbcd2/ucd-countplot-horizontal-titanic.jpg) countplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ˆ˜ํ‰ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ์ง€๊ธˆ๊นŒ์ง€ ์ผ๋ณ€๋Ÿ‰ ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋กœ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ์ผ๋ณ€๋Ÿ‰ ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ### 2\) ์ƒ์ž ๊ทธ๋ฆผ ์ƒ์ž ๊ทธ๋ฆผ(๋™์˜์–ด: box plot, ๋ฐ•์Šค ํ”Œ๋กฏ, ๋ฐ•์Šค ๊ทธ๋ž˜ํ”„, ์ƒ์ž ๊ทธ๋ž˜ํ”„)์€ ๋ฐ์ดํ„ฐ์˜ 5๊ฐ€์ง€ ํ†ต๊ณ„๋Ÿ‰(์ตœ์†Ÿ๊ฐ’, ์ œ1 ์‚ฌ๋ถ„์œ„, ์ œ 2์‚ฌ๋ถ„์œ„, ์ œ 3์‚ฌ๋ถ„์œ„, ์ตœ๋Œ“๊ฐ’)์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ์ƒ์ž๊ทธ๋ฆผ์€ ๋ฐ์ดํ„ฐ์˜ ์ „์ฒด์ ์ธ ๋ถ„ํฌ์™€ ์ด์ƒ์น˜๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. #### boxplot() ์ƒ์ž๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋ ค๋ฉด `boxplot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.boxplot(data=df_iris, x='sepal_length') ``` ![boxplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ƒ์ž ์ˆ˜์—ผ ๊ทธ๋ฆผ](https://www.snugarchive.com/static/b0eba92913ec041452bb623da65b2633/95a82/und-boxplot-iris.jpg) boxplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ƒ์ž ์ˆ˜์—ผ ๊ทธ๋ฆผ `catplot()` ํ•จ์ˆ˜์— `kind='box'` ์˜ต์…˜์„ ์ฃผ์–ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonsns.catplot(data=df_iris, x='sepal_length', kind='box') ``` #### boxenplot() ๋ฐ์ดํ„ฐ์…‹์˜ ๋ฐ์ดํ„ฐ ๋ฒ”์œ„๊ฐ€ ํด ๊ฒฝ์šฐ์—๋Š” `boxenplot()`์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `boxenplot()`์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ๋งŽ์€ ๋ถ„์œ„๋กœ ๋‚˜๋ˆ„์–ด ํฌ๊ธฐ๊ฐ€ ํฐ ๋ฐ์ดํ„ฐ์…‹์˜ ๋ฒ”์ฃผ๋ฅผ ์ƒ์ž๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•ด ์ค๋‹ˆ๋‹ค. ``` pythonsns.boxenplot(data=df_diamonds, x='price') ``` ![boxenplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ƒ์ž๊ทธ๋ฆผ](https://www.snugarchive.com/static/50ef6c89391c807805ee5f820b394fba/dbbc1/und-boxenplot-iris.jpg) boxenplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ƒ์ž๊ทธ๋ฆผ `catplot()` ํ•จ์ˆ˜์— `kind='boxen'` ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.catplot(data=df_diamonds, x='price', kind='boxen') ``` #### violinplot() ์ƒ์ž ๊ทธ๋ฆผ๊ณผ ์ปค๋„๋ฐ€๋„์ถ”์ •์œผ๋กœ ๊ตฌํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜๋ฅผ ํ•ฉ์ณ์„œ ๊ทธ๋ฆฌ๋ ค๋ฉด `violinplot()`์„ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.violinplot(data=df_iris, x='sepal_length') ``` ![violinplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๋ฐ”์ด์˜ฌ๋ฆฐ ํ”Œ๋กฏ](https://www.snugarchive.com/static/b22de8bb9ec9a30e8486525f0a1a37cb/2a79f/und-violinplot-iris.jpg) violinplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๋ฐ”์ด์˜ฌ๋ฆฐ ํ”Œ๋กฏ ``` pythonsns.catplot(data=df_iris, x='sepal_length', kind='violin') ``` ์œ„ ๊ทธ๋ž˜ํ”„์—์„œ ๊ฐ€์šด๋ฐ ํฐ์ƒ‰ ์ ์€ ์ค‘์•™๊ฐ’(median)์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋˜ํ•œ, ํฐ์ƒ‰ ์ ์„ ๋‘˜๋Ÿฌ์‹ผ ๋‘๊บผ์šด ์„ ์€ ์‚ฌ๋ถ„์œ„ ๋ฒ”์œ„๋ฅผ, ๋‘๊บผ์šด ์„ ์—์„œ ์–‘ ๋์œผ๋กœ ์ด์–ด์ง€๋Š” ์–‡์€ ์„ ์€ 95% ์‹ ๋ขฐ ๊ตฌ๊ฐ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ## 1์ฐจ์› ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: ์ˆ˜์น˜ํ˜• ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ๋Š” ๋ถ„ํฌ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ### 1\) ์ ๊ทธ๋ž˜ํ”„: stripplot(), swarmplot() ์ ๊ทธ๋ž˜ํ”„(๋™์˜์–ด: dot graph, strip chart, ์ ๋„ํ‘œ)๋Š” ๋ฐ์ดํ„ฐ์˜ ์‹ค์ œ ์œ„์น˜๋ฅผ ์ (dots)์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ ๊ทธ๋ž˜ํ”„๋Š” ๋ฐ์ดํ„ฐ์˜ ์‹ค์ œ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. Seaborn์œผ๋กœ ์ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด `stripplot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.stripplot(data=df_iris, x='sepal_length')sns.stripplot(x=df_iris['sepal_length']) ``` ![stripplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ ๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/a00ece2735a9bf1c47b40e92a5e59eb7/6a3f7/und-stripplot-iris.jpg) stripplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ์ ๊ทธ๋ž˜ํ”„ `catplot()` ํ•จ์ˆ˜์— `kind='strip'` ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonsns.catplot(data=df_iris, x='sepal_length', kind='strip') ``` ๋‹ค๋งŒ ์ ๊ทธ๋ž˜ํ”„์˜ ๊ฒฝ์šฐ ํ‘œํ˜„ํ•  ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋“ค์ด ๋งŽ์•„์ง€๋ฉด ์ ๋“ค์ด ๊ฒน์ณ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ๋Š” `swarmplot()`์„ ์ด์šฉํ•ด ์ž๋ฃŒ๋ฅผ ํฉํŠธ๋ ค์„œ(jittering) ์  ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์„ ์กฐ์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.swarmplot(data=df_iris, x='sepal_length') ``` ![swarmplot() ํ•จ์ˆ˜๋กœ ํํŠธ๋ ค ๊ทธ๋ฆฐ ์ ๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/c3c9f92f7aad60a5663377f00c8b1a6b/d48f8/und-swarmplot-iris.jpg) swarmplot() ํ•จ์ˆ˜๋กœ ํํŠธ๋ ค ๊ทธ๋ฆฐ ์ ๊ทธ๋ž˜ํ”„ ### 2\) ์„ ๋ถ„๊ทธ๋ž˜ํ”„: rugplot() ์„ ๋ถ„๊ทธ๋ž˜ํ”„(rug plot) ๋˜๋Š” ๋Ÿฌ๊ทธ ํ”Œ๋กฏ์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋ฅผ ์ถ• ์œ„์— ์ž‘์€ ์„ ๋ถ„(rug)์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ์„ ๋ถ„ ๊ทธ๋ž˜ํ”„์˜ ๊ฐ ์„ ๋ถ„์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋“ค์˜ ์œ„์น˜๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์„ ๋ถ„๋“ค์ด ์ด˜์ด˜ํžˆ ์žˆ์„์ˆ˜๋ก ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ€์ง‘๋˜์–ด ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋ณ€ ๋ถ„ํฌ(marginal distribution)์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์ฃผ๋กœ ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋Ÿฌ๊ทธ ํ”Œ๋กฏ์„ ๊ทธ๋ฆฌ๋ ค๋ฉด `rugplot()` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. `displot()` ํ•จ์ˆ˜์— `rug=True` ์˜ต์…˜์„ ์ฃผ์–ด๋„ ๋ฉ๋‹ˆ๋‹ค. ๋Ÿฌ๊ทธ๋ฅผ ์„ธ๋ถ€์ ์œผ๋กœ ์กฐ์ •ํ•ด์•ผ ํ•  ๋•Œ๋Š” `displot()` ํ•จ์ˆ˜๋ณด๋‹ค๋Š” `rugplot()` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. > - height: ์„ ๋ถ„ ๊ธธ์ด ์ง€์ • > - clip\_on: ์„ ๋ถ„ ์ถ• ๋ฐ–์— ๊ทธ๋ฆฌ๊ธฐ ์ง€์ • > - lw: ์„ ๋ถ„ ์–‡๊ธฐ ์ง€์ • > - alpha: ์„ ๋ถ„ ํˆฌ๋ช…๋„ ์ง€์ • ``` pythonsns.displot(data=df_tips, x='total_bill', rug=True)sns.rugplot(data=df_tips, x='total_bill', height=.1)sns.rugplot(data=df_tips, x='total_bill', height=-.02, clip_on=False)sns.rugplot(data=df_diamonds, x='carat', lw=1, alpha=.005) ``` ![rugplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๋‹ค์–‘ํ•œ ์„ ๋ถ„๊ทธ๋ž˜ํ”„](https://www.snugarchive.com/static/ff5750487776a10b8ba79a2ff8368268/c0730/und-rugplot-tips-diamonds.jpg) rugplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๋‹ค์–‘ํ•œ ์„ ๋ถ„๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ ๊ฒฝ์šฐ ์ ๊ทธ๋ž˜ํ”„ ๋˜๋Š” ์„ ๋ถ„๊ทธ๋ž˜ํ”„๋งŒ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๊ฐ€ ์„œ๋กœ ๊ฒน์ณ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ๋„๊ตฌ๊ฐ€ ํžˆ์Šคํ† ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ### 3\) ํžˆ์Šคํ† ๊ทธ๋žจ: histplot() ํžˆ์Šคํ† ๊ทธ๋žจ(histogram)์€ ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ๊ตฌ๊ฐ„๋ณ„ ๋นˆ๋„์ˆ˜๋กœ ํ‘œํ˜„ํ•œ ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ๋ช‡ ๊ฐœ์˜ ๊ตฌ๊ฐ„์œผ๋กœ ๋‚˜๋ˆˆ ํ›„ ๊ฐ ๊ตฌ๊ฐ„์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜ ๋˜๋Š” ๋„์ˆ˜(frequency)๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๊ตฌ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฒ”์œ„๊ฐ€ ๋„“์€ ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. #### ๊ธฐ๋ณธ Seaborn์—์„œ ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ์ธ ๋‹จ๋ณ€๋Ÿ‰ ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๋งŒ๋“ค๋ ค๋ฉด `histplot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ปค๋„๋ฐ€๋„์ถ”์ •(Kernel Density Estimation, KDE) ๋ฐฉ๋ฒ•์œผ๋กœ ์Šค๋ฌด๋”ฉ(smoothing)ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจ์˜ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜(Probability Density Function, PDF)๋ฅผ ํ•จ๊ป˜ ๊ทธ๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด `kde=True` ์˜ต์…˜์„ ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.histplot(df_penguins, x='flipper_length_mm')sns.histplot(df_penguins['flipper_length_mm'], kde=True) ``` `displot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `displot()` ํ•จ์ˆ˜์˜ ์ดˆ๊ธฐ ๊ธฐ๋ณธ ์„ค์ •์€ `kind='hist'`์ž…๋‹ˆ๋‹ค. `displot()` ํ•จ์ˆ˜์— `kind` ์˜ต์…˜์„ ๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. ``` pythonsns.displot(df_penguins, x='flipper_length_mm')sns.displot(df_penguins['flipper_length_mm'], kde=True) ``` ![histplot() ํ•จ์ˆ˜๋กœ ๋งŒ๋“  ๋‹จ๋ณ€๋Ÿ‰ ํžˆ์Šคํ† ๊ทธ๋žจ](https://www.snugarchive.com/static/08240f4da6627e3c969a65e53f16c6f2/847d0/und-histplot-penguins.png) histplot() ํ•จ์ˆ˜๋กœ ๋งŒ๋“  ๋‹จ๋ณ€๋Ÿ‰ ํžˆ์Šคํ† ๊ทธ๋žจ ``` pythonsns.displot(df_diamonds, x='carat', kde=True) ``` ![ํžˆ์Šคํ† ๊ทธ๋žจ๊ณผ ์ปค๋„๋ฐ€๋„์ถ”์ •์œผ๋กœ ๊ตฌํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜](https://www.snugarchive.com/static/6c1a93f93cfa27ebf246166eded9d608/58996/und-histplot-kde-diamonds.jpg) ํžˆ์Šคํ† ๊ทธ๋žจ๊ณผ ์ปค๋„๋ฐ€๋„์ถ”์ •์œผ๋กœ ๊ตฌํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜ #### ํŠน์ • ์กฐ๊ฑด pandas๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ฑด๋ณ„๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ๋Š” 'species'๊ฐ€ 'Adelie'์ธ ํŽญ๊ท„์˜ 'flipper\_length\_mm'๋ฅผ ๊ด€์ธกํ•œ ๊ฐ’์— ๋Œ€ํ•ด ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๊ทธ๋ฆฌ๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ``` pythonsns.histplot(df_penguins[df_penguins['species'] == 'Adelie']['flipper_length_mm']) ``` #### ๋“ฑ๊ธ‰ ์ˆ˜์™€ ๋“ฑ๊ธ‰ ํญ: bins, binwidth ํžˆ์Šคํ† ๊ทธ๋žจ์—์„œ๋Š” ๋“ฑ๊ธ‰์˜ ์ˆ˜ ๋˜๋Š” ๋“ฑ๊ธ‰์˜ ํญ์— ๋”ฐ๋ผ ๊ทธ๋ž˜ํ”„์˜ ๋ชจ์–‘์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋“ฑ๊ธ‰์˜ ์ˆ˜๋Š” `bins` ์˜ต์…˜์œผ๋กœ, ๋“ฑ๊ธ‰ํญ์€ `binwidth` ์˜ต์…˜์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ``` pythonsns.histplot(df_penguins, x='flipper_length_mm', bins=10)sns.histplot(df_penguins, x='flipper_length_mm', binwidth=3) ``` ![๊ตฌ๊ฐ„์˜ ์ˆ˜์™€ ๊ตฌ๊ฐ„์˜ ํญ์„ ์กฐ์ •ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจ](https://www.snugarchive.com/static/8f5b51846ed698353594bed10ede6252/2ae27/und-histplot-bins-binwidth-penguins.jpg) ๊ตฌ๊ฐ„์˜ ์ˆ˜์™€ ๊ตฌ๊ฐ„์˜ ํญ์„ ์กฐ์ •ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจ #### ๋“ฑ๊ธ‰๋ช…, ๋“ฑ๊ธ‰๋ช… ์œ„์น˜, ๋“ฑ๊ธ‰ ์‚ฌ์ด ๊ณต๊ฐ„: bins=๋ฆฌ์ŠคํŠธ, discrete=True, shrink ํžˆ์Šคํ† ๊ทธ๋žจ์€ ์ฃผ๋กœ ์—ฐ์†์  ์ž๋ฃŒ๋ฅผ ์‹œ๊ฐํ™”ํ•  ๋•Œ ์“ฐ์ด์ง€๋งŒ, ์ข…์ข… ์ด์‚ฐ์  ์ž๋ฃŒ(discrete data)๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด์‚ฐ์  ์ž๋ฃŒ๋Š” ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋กœ ๋ณ€ํ˜•ํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. > - ๋“ฑ๊ธ‰ ๋ช…์‹œ > - ๋“ฑ๊ธ‰๋ช…์ด ๋ง‰๋Œ€์˜ ์ค‘์•™์— ์˜ค๋„๋ก ์œ„์น˜ > - ๋ณ€์ˆ˜๊ฐ€ ์—ฐ์†์ ์ด์ง€ ์•Š๊ณ  ์ด์‚ฐ์ ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ๋“ฑ๊ธ‰๊ณผ ๋“ฑ๊ธ‰ ์‚ฌ์ด์— ์—ฌ์œ  ๋‘๊ธฐ ์ด๋ฅผ ๋„์™€์ฃผ๋Š” ์˜ต์…˜์ด ๊ฐ๊ฐ `bins=๋ฆฌ์ŠคํŠธ`, `discrete=True`, `shrink`์ž…๋‹ˆ๋‹ค. ๊ฐ ์˜ต์…˜์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. > - bins=๋ฆฌ์ŠคํŠธ: ๊ทธ๋ž˜ํ”„์˜ x์ถ•์— ๋ช…์‹œํ•  ๋“ฑ๊ธ‰์„ ์ง์ ‘ ์ง€์ • > - discrete=True: ๊ฐ ๋“ฑ๊ธ‰์ด ๋ง‰๋Œ€ ์ค‘์•™์— ์˜ค๋„๋ก ์œ„์น˜ > - shrink: ๊ฐ ๋ง‰๋Œ€ ์‚ฌ์ด์— ๊ณต๊ฐ„์„ ๋งˆ๋ จ ์˜ˆ์ œ ์ฝ”๋“œ์™€ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.histplot(df_tips, x='size')sns.histplot(df_tips, x='size', bins=[1, 2, 3, 4, 5, 6, 7])sns.histplot(df_tips, x='size', discrete=True)sns.histplot(df_tips, x='size', discrete=True, shrink=.8) ``` ![๋“ฑ๊ธ‰๋ช…๊ณผ ๋“ฑ๊ธ‰๋ช…์˜ ์œ„์น˜, ๋“ฑ๊ธ‰ ์‚ฌ์ด์˜ ๊ณต๊ฐ„์„ ์กฐ์ •ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจ](https://www.snugarchive.com/static/2945cdb4282cbbfa5742cff49e172ddc/c61c8/und-histplot-bins-discrete-shrink-tips.jpg) ๋“ฑ๊ธ‰๋ช…๊ณผ ๋“ฑ๊ธ‰๋ช…์˜ ์œ„์น˜, ๋“ฑ๊ธ‰ ์‚ฌ์ด์˜ ๊ณต๊ฐ„์„ ์กฐ์ •ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจ ๋‹จ, ํžˆ์Šคํ† ๊ทธ๋žจ์€ ๋ฐ์ดํ„ฐ์˜ ์—ฐ์†์  ํŠน์„ฑ์„ ์˜จ์ „ํžˆ ํ‘œํ˜„ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๊ฐ„์˜ ํฌ๊ธฐ์™€ ์‹œ์ž‘์ ์— ๋”ฐ๋ผ ๋ถ„ํฌ์˜ ๋ชจ์–‘์ด ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์—ฐ์†ํ˜• ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ๋ถ€๋“œ๋Ÿฌ์šด ๊ณก์„ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ์š”? ### 4\) ์ปค๋„๋ฐ€๋„์ถ”์ •์œผ๋กœ ๊ตฌํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜: kdeplot() ์ปค๋„๋ฐ€๋„์ถ”์ •(Kernel density estimation)์€ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜๋ฅผ ๋ถ€๋“œ๋Ÿฌ์šด ๊ณก์„ ์œผ๋กœ ์ถ”์ •ํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ด์‚ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ํžˆ์Šคํ† ๊ทธ๋žจ ๋Œ€์‹  ๋งค๋„๋Ÿฌ์šด ๊ณก์„ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ปค๋„ ๋ฐ€๋„ ํ•จ์ˆ˜(Kernel density function)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #### ๊ธฐ๋ณธ `kdeplot()` ํ•จ์ˆ˜๋Š” ๋‹จ๋ณ€๋Ÿ‰ ๋˜๋Š” ์ด๋ณ€๋Ÿ‰ ๋ฐ์ดํ„ฐ์˜ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜๋ฅผ ์ถ”์ •ํ•˜์—ฌ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ‰ํ™œ๋Ÿ‰(bandwidth)์„ ์กฐ์ •ํ•˜๋ ค๋ฉด `bw_adjust` ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜์˜ ๋ถ€๋“œ๋Ÿฌ์›€(smoothness) ์ •๋„๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ``` pythonsns.kdeplot(data=df_penguins, x='flipper_length_mm')sns.kdeplot(data=df_penguins, x='flipper_length_mm', bw_adjust=.25) ์ฝ”๋“œ 2 ``` `displot()` ํ•จ์ˆ˜์— `kind='kde'`์˜ต์…˜์„ ์ฃผ์–ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonsns.displot(penguins, x='flipper_length_mm', kind='kde')sns.displot(penguins, x='flipper_length_mm', kind='kde', bw_adjust=.25) ``` ![kdeplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜](https://www.snugarchive.com/static/accbce8426048f970b327e0b85800c9a/55d78/und-kdeplot-penguins.jpg) kdeplot ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜ ๋งŒ์ผ `displot()` ํ•จ์ˆ˜์— `kde=True` ์˜ต์…˜์„ ์ง€์ •ํ•˜๋ฉด ํžˆ์Šคํ† ๊ทธ๋žจ๊ณผ ์ปค๋„๋ฐ€๋„์ถ”์ • ํ•จ์ˆ˜๋ฅผ ๋™์‹œ์— ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #### ๋ฒ”์œ„ ์ œํ•œ: cut ์—ฐ์†์  ๋ณ€์ˆ˜๊ฐ€ ๋ฌดํ•œํžˆ ์ปค์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” `cut`์ด๋ผ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์–‘ ๋์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ``` pythonsns.kdeplot(df_tips, x='total_bill', kind='kde')sns.kdeplot(df_tips, x='total_bill', kind='kde', cut=0) ``` ![์–‘ ๋์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜](https://www.snugarchive.com/static/1be7d848be611c95f814241b8cd213b6/f19c5/und-kdeplot-cut-tips.jpg) ์–‘ ๋์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•œ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜ #### ์ƒ‰์ƒ: shade KDE ๋ฐ€๋„ ๊ณก์„  ์•„๋ž˜์— ์ƒ‰์„ ์ฑ„์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด `shade=True` ์˜ต์…˜์„ ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ### 5\) ๊ฒฝํ—˜์  ๋ˆ„์ ๋ถ„ํฌํ•จ์ˆ˜: edcfplot() ๊ฒฝํ—˜์  ๋ˆ„์ ๋ถ„ํฌํ•จ์ˆ˜(empirical cumulative distribution function, ECDF)๋Š” n๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๊ฐ๊ฐ์—์„œ 1/n ์”ฉ ์ ํ”„ํ•˜๋Š” ๊ณ„๋‹จ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ CDF๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. ECDF ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด `ecdfplot()` ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ``` pythonsns.ecdfplot(df_penguins, x='flipper_length_mm') ``` ![ecdfplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๊ฒฝํ—˜์  ๋ˆ„์ ๋ถ„ํฌํ•จ์ˆ˜](https://www.snugarchive.com/static/fb1b78e118accc858297f29e9a442ab8/1883d/und-ecdfplot-penguins.jpg) ecdfplot() ํ•จ์ˆ˜๋กœ ๊ทธ๋ฆฐ ๊ฒฝํ—˜์  ๋ˆ„์ ๋ถ„ํฌํ•จ์ˆ˜ `displot()` ํ•จ์ˆ˜์— `kind='ecdf'` ์˜ต์…˜์„ ์ฃผ์–ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` pythonsns.displot(df_penguins, x='flipper_length_mm', kind='ecdf') ``` ์ง€๊ธˆ๊นŒ์ง€ ํŒŒ์ด์ฌ Seaborn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ 1์ฐจ์› ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” [ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Seaborn ์‚ฌ์šฉ๋ฒ• ์‹ฌํ™”ํŽธ](https://www.snugarchive.com/blog/python-data-visualization-seaborn-advanced/)์—์„œ ๋‹ค์ฐจ์› ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ ์ˆ˜๊ณ  ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค. ## ์ฐธ๊ณ  ๋ฌธํ—Œ - \[1\] ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธ์Šค ์Šค์ฟจ, ๏ฝขํŒŒ์ด์ฌํŽธ 5์žฅ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: Seaborn์„ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„ํฌ ์‹œ๊ฐํ™”๏ฝฃ, ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธ์Šค ์Šค์ฟจ, "<https://datascienceschool.net/>" - \[2\] ์•„๋ฌดํŠผ์›Œ๋ผ๋ฒจ, ๏ฝข์ •๊ทœํ™”(Normalization) ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ๏ฝฃ, ์•„๋ฌดํŠผ์›Œ๋ผ๋ฒจ, "<https://hleecaster.com/ml-normalization-concept/>" - \[3\] ์•„๋ฌดํŠผ์›Œ๋ผ๋ฒจ, ๏ฝข\[seaborn\] ๋ฐ”์ด์˜ฌ๋ฆฐ ํ”Œ๋กฏ๏ฝฃ, ์•„๋ฌดํŠผ์›Œ๋ผ๋ฒจ, "<https://hleecaster.com/python-seaborn-violinplot/>" - \[4\] Codeacademy Team, ๏ฝขSeaborn Styling, Part 1: Figure Style and Scale๏ฝฃ, Codecademy, "<https://www.codecademy.com/article/seaborn-design-i>" - \[5\] Codeacademy Team, ๏ฝขSeaborn Styling, Part 2: Color๏ฝฃ, Codecademy, "<https://www.codecademy.com/article/seaborn-design-ii>" - \[6\] Mahbubul Alam, ๏ฝขSeaborn can do the job, then why Matplotlib?๏ฝฃ, Towards Data Science, "<https://towardsdatascience.com/seaborn-can-do-the-job-then-why-matplotlib-dac8d2d24a5f>" - \[7\] Seaborn, ๏ฝขseaborn: statistical data visualization๏ฝฃ, Seaborn, "<https://seaborn.pydata.org/index.html>" - \[8\] StackOverflow, ๏ฝขHow to set a different color to the largest bar in a seaborn barplot๏ฝฃ, StackOverflow, "<https://stackoverflow.com/questions/31074758/how-to-set-a-different-color-to-the-largest-bar-in-a-seaborn-barplot>" ๋‹ค์Œ ๊ธ€
Shard185 (laksa)
Root Hash15688750957463538185
Unparsed URLcom,snugarchive!www,/blog/python-data-visualization-seaborn-basic/ s443