๐Ÿฐ์šฐ๋ฆฌ FISA/ํ›„๊ธฐ

์šฐ๋ฆฌ FISA AI์—”์ง€๋‹ˆ์–ด๋ง 3์ฃผ์ฐจ ๊ณผ์ •

๊ณ„๋ž€์†Œ๋…„ 2025. 1. 13. 16:49

Monday (01.13)

๋”๋ณด๊ธฐ

์˜ค๋Š˜์˜ ์ ์‹ฌ

 

๋ณ„์  โญ๏ธ โญ๏ธ โญ๏ธ

๊ตฌ๋‚ด์‹๋‹น์—์„œ ๋จน์—ˆ๋‹ค.

5500์›... ๊ทธ๋ƒฅ ๋จน์ž

https://map.naver.com/p/entry/place/18808775?placePath=%252Fhome%253Fentry%253Dpll&searchType=place&lng=126.8858948&lat=37.5847261

 

๋„ค์ด๋ฒ„ ์ง€๋„

DMC์ฒจ๋‹จ์‚ฐ์—…์„ผํ„ฐ

map.naver.com

 

์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ํ•„๊ธฐ ์‹œํ—˜ ์‹ ์ฒญ

14์‹œ์— ์ˆ˜๊ฐ•์‹ ์ฒญ์ฒ˜๋Ÿผ ์ค€๋น„ํ•ด์„œ ์‹ ์ฒญ ํ•˜์˜€๋‹ค.

CS ๊ณต๋ถ€ํ•  ๋•Œ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด 4ํšŒ์ •๋„ ํ’€์–ด๋ดค์—ˆ๋Š”๋ฐ, ๋‹จ์ˆœ ์•”๊ธฐ ๋ฌธ์ œ ๋นผ๊ณ ๋Š” ํ’€๋งŒ ํ•œ๊ฒƒ ๊ฐ™์•„์„œ, "์žˆ์œผ๋ฉด ์ข‹๊ณ " ๋ผ๋Š” ๋งˆ์ธ๋“œ๋กœ ์‹œํ—˜์„ ์ณ ๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

Adsp๋„ ๋ด์•ผํ•ด์„œ ์‹œ๊ฐ„์ด ๊ฒน์น˜๊ธด ํ•˜์ง€๋งŒ, ์ถฉ๋ถ„ํžˆ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ๋ฐ”์˜๊ฒŒ ์‚ด์ž

 

์˜ค๋Š˜์€ EDA์— ๋Œ€ํ•œ ์ˆ˜์—… ์ง„ํ–‰

 

Exploratory Data Analysis (EDA)

 

๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ ์ ‘ํ•  ๋•Œ ๊ทธ ํŠน์„ฑ์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ณผ์ •์œผ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋” ๋‚˜์€ ๋ถ„์„์„ ์œ„ํ•ด ์ค€๋น„ํ•˜๋Š” ๋‹จ๊ณ„

๊ธฐ์ˆ  ํ†ต๊ณ„๋‚˜ ์‹œ๊ฐํ™” ๋ฐฉ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๊ฐ๋„๋กœ ๋ถ„์„ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• 

  • ํ†ต๊ณ„ํ•™: ์ˆ˜์ง‘๋œ ์ž๋ฃŒ์— ๋Œ€ํ•œ ๋ถ„์„ → ๊ณผ๊ฑฐ
  • ๋จธ์‹ ๋Ÿฌ๋‹: ๋“ค์–ด์˜ฌ ์ž๋ฃŒ์— ๋Œ€ํ•œ ์ถ”๋ก  → ๋ฏธ๋ž˜

์›์‹œ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฐ์ดํ„ฐ์˜ ํŠน์ง•,๊ตฌ์กฐ๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ์–ป์–ด์„œ ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ†ต๊ณ„๋ชจํ˜•์„ ๋งŒ๋“œ๋Š” ๋ถ„์„๋ฐฉ๋ฒ•

๋ชฐ๋ž๋˜ ์ฃผ์š” ์šฉ์–ด 

  • ์ผํ™”์  ์ฆ๊ฑฐ (Anecdotal Evidence): ๊ณผํ•™์  ์—ฐ๊ตฌ์— ์˜ํ•ด ์ˆ˜์ง‘๋˜์ง€ ์•Š์€, ์šฐ์—ฐํžˆ ์–ป์€ ์ฆ๊ฑฐ
  • ๋‹จ์  ์—ฐ๊ตฌ (Cross-sectional Study): ํŠน์ • ์‹œ์ ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ์—ฐ๊ตฌ
  • ํšก๋‹จ์  ์—ฐ๊ตฌ (Longitudinal Study): ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ ํ•˜๋ฉฐ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜์ง‘ํ•˜๋Š” ์—ฐ๊ตฌ
  • ์˜ค๋ฒ„์ƒ˜ํ”Œ๋ง (Oversampling): ํ‘œ๋ณธ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์žฌ์ฝ”๋“œ (Recode): ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๊ณ„์‚ฐํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •
  • ์ž๋ฃŒ ์ •์ œ (Data Cleaning): ๋ฐ์ดํ„ฐ์˜ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๊ณ , ์ ์ ˆํ•œ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ถ„์„์— ์ ํ•ฉํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •


EDA ํ”„๋กœ์„ธ์Šค

  • ๋ฌธ์ œ ์ •์˜: ๋ถ„์„์˜ ๋ชฉํ‘œ์™€ ๋ฌธ์ œ๋ฅผ ๋ช…ํ™•ํžˆ ์„ค์ •
  • ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘: ๋ฌธ์ œ ํ•ด๊ฒฐ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
  • ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ: ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•˜๊ณ , ๊ฒฐ์ธก๊ฐ’ ์ฒ˜๋ฆฌ, ์ด์ƒ์น˜ ํƒ์ง€ ์ˆ˜ํ–‰
  • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง: ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ชจ๋ธ์„ ๋งŒ๋“ค๊ณ  ๋ถ„์„
  • ์‹œ๊ฐํ™” ๋ฐ ํƒ์ƒ‰: ๋ฐ์ดํ„ฐ์˜ ํŒจํ„ด์„ ์‹œ๊ฐ์ ์œผ๋กœ ํƒ์ƒ‰

EDA๋Š” ์ด 5๋‹จ๊ณ„๋ฅผ ํ•œ ๋ฒˆ์— ์™„๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ถ€์กฑํ•œ ๋‹จ๊ณ„๊ฐ€ ์žˆ์œผ๋ฉด ๋ฐ˜๋ณต์ ์œผ๋กœ ๋Œ์•„๊ฐ€๋ฉด์„œ ๊ฐœ์„ ํ•ด๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰



ํ™•์ฆ์  ๋ฐ์ดํ„ฐ ๋ถ„์„ (CDA) vs. ํƒ์ƒ‰์  ๋ฐ์ดํ„ฐ ๋ถ„์„ (EDA)

  • ํ™•์ฆ์  ๋ฐ์ดํ„ฐ ๋ถ„์„ (CDA): ๊ธฐ์กด์— ์„ค์ •ํ•œ ๊ฐ€์„ค์„ ๊ฒ€์ฆํ•˜๋Š” ๋ถ„์„ ๋ฐฉ๋ฒ• ๊ฐ€์„ค์„ ์„ค์ •ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์ถ”์ •ํ•˜๊ฑฐ๋‚˜ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•(์ถ”๋ก ํ†ต๊ณ„)
  • ํƒ์ƒ‰์  ๋ฐ์ดํ„ฐ ๋ถ„์„ (EDA): ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ํƒ์ƒ‰ํ•˜์—ฌ ํŒจํ„ด์ด๋‚˜ ๊ด€๊ณ„๋ฅผ ๋ฐœ๊ฒฌํ•˜๋Š” ๋ถ„์„ ๋ฐฉ๋ฒ•(๊ธฐ์ˆ  ํ†ต๊ณ„)
  • ๋น…๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง: ์ƒˆ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ผ๋งˆ๋‚˜ ์ž˜ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๊ฐ€ ์ค‘์š”ํ•œ ๋ชฉํ‘œ -> ๊ธฐ์ˆ  ํ†ต๊ณ„๊ฐ€ ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„์— ์ ํ•ฉ 


๊ณ ๋ คํ•ด์•ผ ํ•  ์ 

  • ์ƒ๊ด€๊ด€๊ณ„ vs. ์ธ๊ณผ๊ด€๊ณ„: ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ธ๊ณผ๊ด€๊ณ„๋ฅผ ์˜๋ฏธํ•˜์ง€ ์•Š์Œ
    • ์ƒ๊ด€๊ด€๊ณ„๋Š” ๋‘ ๋ณ€์ˆ˜ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋ณด์—ฌ์ฃผ์ง€๋งŒ, ํ•ญ์ƒ ์ธ๊ณผ๊ด€๊ณ„๋ฅผ ์˜๋ฏธํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋ถ„์„ํ•ด์•ผ ํ•จ
  • ์ด์ƒ์น˜ ํƒ์ง€: ๋ถ„์„์—์„œ ์ค‘์š”ํ•œ ์š”์†Œ๋กœ, ์ด์ƒ์น˜๋Š” ๊ฒฐ๊ณผ์— ํฐ ์˜ํ–ฅ ๋ฏธ์น  ์ˆ˜ ์žˆ์Œ
  • 3์ฐจ์› ์‹œ๊ฐํ™”๋Š” ์›๊ธˆ๊ฐ์œผ๋กœ ์ธ์ง€์— ๋Œ€ํ•œ ์˜ค์ฐจ๊ฐ€ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ ์กด์žฌ. ๋ฏธ์  ์•„๋ฆ„๋‹ค์›€๋ณด๋‹ค ๋ฐ์ดํ„ฐ ์ดํ•ด์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๋‹จ์ถ•์„ ์ค‘์‹œ
  • ๋Œ€์‹œ๋ณด๋“œ : ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ๋น„๊ตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๋Š” ์—ฌ๋Ÿฌ ๋ทฐ์˜ ๋ชจ์Œ


๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

  • ์งˆ์ ๋ณ€์ˆ˜: ๋ช…๋ชฉํ˜•(์ˆœ์„œ์— ์˜๋ฏธ๋ถ€์—ฌ ๋ถˆ๊ฐ€), ์ˆœ์„œํ˜•(์ˆœ์„œ์— ์˜๋ฏธ๋ถ€์—ฌ ๊ฐ€๋Šฅ)
    • ๋ช…๋ชฉํ˜• : ์„ฑ๋ณ„, ํ˜ˆ์•กํ˜•, ์ง€์—ญ
    • ์ˆœ์„œํ˜• : ํ•™๋…„, ๊ณ ๊ฐ๋“ฑ๊ธ‰
  • ์–‘์ ๋ณ€์ˆ˜: ์ด์‚ฐํ˜•, ์—ฐ์†ํ˜•
    • ์ด์‚ฐํ˜• : ํ•™์ƒ ์ˆ˜, ์ฃผ๋ฌธ ์ˆ˜
    • ์—ฐ์†ํ˜•: ๋ชธ๋ฌด๊ฒŒ, ํ‚ค


๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”

  • ์‹œ๊ฐ„ ์‹œ๊ฐํ™”: ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๋ณ€ํ™”
    • ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ: ์‹œ๊ฐ„ ์ˆœ์„œ์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ
    • ๋ถ„์ ˆํ˜• ๋ฐ์ดํ„ฐ: ์ด์‚ฐํ˜• ๋ฐ์ดํ„ฐ๋กœ ํŠน์ • ์‹œ์ ์„ ๋‚˜ํƒ€๋ƒ„
  • ๋ถ„ํฌ ์‹œ๊ฐํ™”
    • ์›๊ทธ๋ž˜ํ”„: ์ ์€ ์ˆ˜์˜ ํ•ญ๋ชฉ์„ ํผ์„ผํŠธ์™€ ํ•จ๊ป˜ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹์Œ
    • ํŠธ๋ฆฌ๋งต: ์˜์—ญ ๊ธฐ๋ฐ˜ ์‹œ๊ฐํ™”,๊ณ„์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ
    • ๋ˆ„์  ์—ฐ์† ๊ทธ๋ž˜ํ”„: ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ˆ„์ ํ•˜์—ฌ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ
  • ๊ด€๊ณ„ ์‹œ๊ฐํ™”
    • ์‚ฐ์ ๋„ (Scatter Plot): ๋‘ ๋ณ€์ˆ˜ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋‚˜ํƒ€๋ƒ„. ์–‘์˜ ์ƒ๊ด€๊ด€๊ณ„, ์Œ์˜ ์ƒ๊ด€๊ด€๊ณ„, ๊ด€๊ณ„์—†์Œ
    • ๋ฒ„๋ธ” ์ฐจํŠธ: ์‚ฐ์ ๋„์— ๊ฐ ์š”์†Œ๋ณ„ ๋น„์ค‘์„ ๋”ํ•จ์œผ๋กœ์จ ์„ธ๊ฐ€์ง€ ์š”์†Œ ์ƒ๊ด€๊ด€๊ณ„ ํฌํ˜„, ๊ฐ€๋กœ์ถ•๋ณ€์ˆ˜,์„ธ๋กœ์ถ•๋ณ€์ˆ˜,๋ฒ„๋ธ”ํฌ๊ธฐ, ์›์˜ ์ง€๋ฆ„์„ ๋ณด๊ณ  ํŒ๋‹จ
    • ํžˆ์Šคํ† ๊ทธ๋žจ: ํ‰๊ท ๊ณผ ์ค‘์•™๊ฐ’์˜ ์ฐจ์ด๋ฅผ ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ํ‰๊ท ์€ ๊ทน๋‹จ๊ฐ’ ์˜ํ–ฅ๋ฐ›์Œ, ์ค‘์•™๊ฐ’์€ ๊ทน๋‹จ๊ฐ’ ์˜ํ–ฅ๋ฐ›์ง€ ์•Š์Œ
  • ๋น„๊ต ์‹œ๊ฐํ™”
    • ํžˆํŠธ๋งต (Heatmap): ๊ฐ ์นธ์˜ ์ƒ‰์ƒ์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ํ‘œํ˜„
    • ๋‹ค์ฐจ์›์ฒ™๋„๋ฒ•: ์œ ์‚ฌ๋„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”
    • ๊ณต๊ฐ„ ์‹œ๊ฐํ™” (Geocoding): ์œ„์น˜ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€๋„์— ์‹œ๊ฐํ™”ํ•˜์—ฌ ํŒจํ„ด ๋ถ„์„

https://markets.hankyung.com/marketmap/kospi

์ฃผ์‹์ฐฝ์€ ํžˆํŠธ๋งต์ด๋ฉด์„œ ํŠธ๋ฆฌ๋งต์ด๋‹ค.

 

Matplotlib

 

Matplotlib์€ Python์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ•๋ ฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ, ๊ด€๊ณ„, ๋ณ€ํ™” ๋“ฑ์„ ์ง๊ด€์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ ์‹œ ๋„ํ™”์ง€์™€ ์ถ•์„ ์„ค์ •ํ•˜์—ฌ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๋งˆ๋ จํ•˜๊ณ , plt.plot(), plt.bar(), plt.hist() ๋“ฑ์˜ ํ•จ์ˆ˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™” ํ•œ๋‹ค.


๋„ํ™”์ง€์™€ ์ถ• ๊ฐ์ฒด ์ƒ์„ฑ

  • ๋„ํ™”์ง€ ๊ฐ์ฒด (figure): ๋„ํ™”์ง€ ๊ฐ์ฒด๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์บ”๋ฒ„์Šค๋ฅผ ์ œ๊ณต
    • plt.figure(figsize=(x, y)): ๋„ํ™”์ง€ ํฌ๊ธฐ๋ฅผ ์„ค์ •. x๋Š” ๊ฐ€๋กœ ํฌ๊ธฐ, y๋Š” ์„ธ๋กœ ํฌ๊ธฐ 
  • ์ถ• ๊ฐ์ฒด (axes): ์ถ• ๊ฐ์ฒด๋Š” ๋„ํ™”์ง€ ์œ„์— ํ‘œ์‹œ๋˜๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ถ•์„ ์˜๋ฏธ
    • plt.axes(): ๊ธฐ๋ณธ ์ถ• ๊ฐ์ฒด ์ƒ์„ฑ
import matplotlib.pyplot as plt
import numpy as np

# 1) ๋„ํ™”์ง€ ๊ฐ์ฒด ์ƒ์„ฑ
plt.figure(figsize=(6, 4))

# 2) ์ œ๋ชฉ ์ถ”๊ฐ€
plt.title('ํ…Œ์ŠคํŠธ: ํ•œ๊ธ€ ํฐํŠธ ํ™•์ธ')

# 3) ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ
plt.plot([1, 2, 3], [4, 5, 6])

# 4) ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ
plt.show()

 

๊ทธ๋ž˜ํ”„์˜ ์ถ• ์ œํ•œ ์„ค์ •

  • xlim(): x์ถ•์˜ ๋ฒ”์œ„๋ฅผ ์„ค์ •
  • ylim(): y์ถ•์˜ ๋ฒ”์œ„๋ฅผ ์„ค์ •
plt.figure(figsize=(6, 4))
x = [0, 2, 4, 6, 8]
y = [1, 2, 3, 4, 5]

plt.plot(x, y)

# x์ถ•๊ณผ y์ถ•์˜ ๋ฒ”์œ„ ์ œํ•œ
plt.xlim(-5, 5) # x์ถ• limit ์ขŒ ์šฐ
plt.ylim(-5, 50) # y์ถ• limit ์ƒํ•˜

plt.show()

 

xlim(-5, 5)์™€ ylim(-5, 50)์œผ๋กœ ์ถ•์˜ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•˜์—ฌ, ์„ค์ •๋œ ์˜์—ญ ๋ฐ–์˜ ๋ฐ์ดํ„ฐ๋Š” ๋ณด์ด์ง€ ์•Š์Œ


๋ ˆ์ด๋ธ” ๋ฐ ๋ฒ”๋ก€ ์„ค์ •

  • plt.xlabel()๊ณผ plt.ylabel(): ๊ฐ๊ฐ x์ถ•๊ณผ y์ถ•์— ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€
  • plt.title(): ๊ทธ๋ž˜ํ”„์— ์ œ๋ชฉ์„ ์ถ”๊ฐ€
  • plt.legend(): ๋ฒ”๋ก€๋ฅผ ์ถ”๊ฐ€ 
plt.plot(np.random.randn(30).cumsum(), 'g-.x', label='2023๋…„')
plt.plot(np.random.randn(30).cumsum(), 'b-.x', label='2024๋…„')

# ์ถ• ๋ ˆ์ด๋ธ”๊ณผ ์ œ๋ชฉ ์„ค์ •
plt.title('3์›” ๋งค์ถœ')
plt.xlabel('์‹œ๊ฐ„(๋‹จ์œ„: ์ผ)')
plt.ylabel('๋งค์ถœ(๋‹จ์œ„: ์–ต์›)')

# ๋ฒ”๋ก€ ์„ค์ •
plt.legend(loc='upper right', frameon=False)

# ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ
plt.show()
  • label='2023๋…„'๊ณผ label='2024๋…„'์„ ์‚ฌ์šฉํ•ด ๋ฒ”๋ก€๋ฅผ ์ถ”๊ฐ€, plt.legend(loc='upper right')๋กœ ๋ฒ”๋ก€์˜ ์œ„์น˜๋ฅผ ์„ค์ •
  • frameon=False๋กœ ๋ฒ”๋ก€์˜ ๋ฐฐ๊ฒฝ ์‚ญ์ œ



์ด๋ฅผ ํ† ๋Œ€๋กœ

Bar plots, histograms, scatter plots, stack plots,  pie charts,  fill_between and alpah, 

3d scatter plots, subplotting using subplot2grid ๋“ฑ์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

๋‹ค ๋น„์Šทํ•˜๋‹ค.


(1) Bar plot (๋ง‰๋Œ€๊ทธ๋ž˜ํ”„)

x = ['A', 'B', 'C', 'D']
y = [3, 5, 2, 4]
plt.bar(x, y)
plt.show()


(2) Histogram (ํžˆ์Šคํ† ๊ทธ๋žจ)

data = np.random.randn(1000)
plt.hist(data, bins=30, alpha=0.7, color='blue')
plt.show()


(3) Scatter plot (์‚ฐ์ ๋„)

x = np.random.randn(100)
y = np.random.randn(100)
plt.scatter(x, y, alpha=0.5)
plt.show()


(4) Stack plot (๋ˆ„์  ๊ทธ๋ž˜ํ”„)

x = np.arange(1, 6)
y1 = [1, 2, 3, 4, 5]
y2 = [2, 3, 4, 5, 6]
y3 = [3, 4, 5, 6, 7]
plt.stackplot(x, y1, y2, y3, labels=['A', 'B', 'C'], alpha=0.7)
plt.legend(loc='upper left')
plt.show()


(5) Pie chart (์›ํ˜• ์ฐจํŠธ)

labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.show()


(6) Fill_between (์˜์—ญ ์ฑ„์šฐ๊ธฐ)

x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.fill_between(x, y, alpha=0.5)
plt.show()


(7) 3D Scatter plot

from mpl_toolkits.mplot3d import Axes3D

# 3D ๋„ํ™”์ง€ ์ƒ์„ฑ
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# ๋žœ๋ค ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100)

# 3D ์‚ฐ์ ๋„
ax.scatter(x, y, z)
plt.show()


(8)  Subplot2Grid ์„ ์‚ฌ์šฉํ•œ ์„œ๋ธŒํ”Œ๋กฏ ์ƒ์„ฑ -> ๋ณต์žกํ•œ ๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ ์ƒ์„ฑ

fig = plt.figure(figsize=(8, 6))

# ์ „์ฒด 5x2 ๊ทธ๋ฆฌ๋“œ์—์„œ (0, 0)๋ถ€ํ„ฐ ์‹œ์ž‘, 1ํ–‰ 2์—ด
ax1 = plt.subplot2grid((5, 2), (0, 0), rowspan=1, colspan=2)

# ๊ทธ๋ž˜ํ”„ ์ถ”๊ฐ€
ax1.plot([1, 2, 3], [4, 5, 6])
ax1.set_title('์„œ๋ธŒํ”Œ๋กฏ ์˜ˆ์‹œ')

plt.show()

์ „์ฒด 5x2 ๊ทธ๋ฆฌ๋“œ ์ค‘ ์ฒซ ๋ฒˆ์งธ ํ–‰(rowspan)์˜ ๋‘ ์นธ(colspan)์„ ์ฐจ์ง€ํ•˜๋Š” ์„œ๋ธŒํ”Œ๋กฏ์ด ์ƒ์„ฑ

 

Seaborn

 

Matplotlib์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ์‹œ๊ฐํ™” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ†ต๊ณ„์  ์ฐจํŠธ๋ฅผ ์‰ฝ๊ฒŒ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Matplotlib์„ ์‚ฌ์šฉํ•  ๋•Œ๋ณด๋‹ค ๋” ์ง๊ด€์ ์ด๊ณ , ๋‹ค์–‘ํ•œ ์ƒ‰์ƒ ํ…Œ๋งˆ์™€ ์Šคํƒ€์ผ์„ ์ œ๊ณต

๊ณต์‹์‚ฌ์ดํŠธ: https://seaborn.pydata.org/

๊ณตํ†ต ํ•จ์ˆ˜

plt.savefig()
# ๋ชจ๋“  Seaborn ํ”Œ๋กฏ์€ Matplotlib ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ๋กœ ์ €์žฅ ๊ฐ€๋Šฅ
# ex) plt.savefig('figure.png')

plt.show()
# ํ”Œ๋กฏ์„ ํ™”๋ฉด์— ํ‘œ์‹œ

 

(1) lmplot (Logistic Model Plot):์„ ํ˜• ํšŒ๊ท€(๋˜๋Š” ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€) ๋ชจ๋ธ์„ ์‹œ๊ฐํ™”ํ•˜๋Š” ํ•จ์ˆ˜

  • hue ์ธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๋ฒ”์ฃผ๋ฅผ ์ƒ‰์ƒ์œผ๋กœ ๊ตฌ๋ถ„
import seaborn as sns
import matplotlib.pyplot as plt

# ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
sns.set(style="whitegrid")
df = sns.load_dataset('tips')

# lmplot ์˜ˆ์‹œ
sns.lmplot(data=df, x='total_bill', y='tip', hue='sex', col='time', palette='muted')
plt.show()

 

(2)Barplot

sns.barplot(x='day', y='total_bill', data=df, palette='Blues')
plt.show()



(3)์„œ๋ธŒํ”Œ๋กฏ (FacetGrid / FacetPlot)

g = sns.FacetGrid(df, col="sex", row="time")
g.map(sns.scatterplot, "total_bill", "tip")
plt.show()



(4) Despine (์ถ•/ํ…Œ๋‘๋ฆฌ ์ œ๊ฑฐ)

sns.set(style="whitegrid")
sns.barplot(x='day', y='total_bill', data=df)
sns.despine()
plt.show()



(5) Lineplot

sns.lineplot(x="size", y="tip", data=df)
plt.show()

 

(6) ScatterPlot

sns.scatterplot(x="total_bill", y="tip", data=df, hue="time", style="sex")
plt.show()



(7) CountPlot

sns.countplot(x='day', data=df)
plt.show()



(8) Distplot

sns.distplot(df['total_bill'], kde=True, bins=30)
plt.show()


(9) Kdeplot: ์ปค๋„ ๋ฐ€๋„ ์ถ”์ •(KDE)์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ ๋ฐ€๋„๋ฅผ ์‹œ๊ฐํ™”

sns.kdeplot(df['total_bill'], shade=True)
plt.show()


(10) Boxplot: ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ์™€ ์ด์ƒ์น˜๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ์ƒ์ž ๊ทธ๋ฆผ

sns.boxplot(x='day', y='total_bill', data=df)
plt.show()


(11) Violin Plot

sns.violinplot(x='day', y='total_bill', data=df)
plt.show()


(12) Heatmap

correlation = df.corr()
sns.heatmap(correlation, annot=True, cmap='coolwarm')
plt.show()



(13) PairPlot: ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ•œ ๋ฒˆ์— ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜

  • ๊ฐ ๋ณ€์ˆ˜ ๊ฐ„์˜ ์‚ฐ์ ๋„์™€ ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๊ทธ๋ฆผ
sns.pairplot(df, hue="sex")
plt.show()



 

Tuesday (01.14)

๋”๋ณด๊ธฐ

์˜ค๋Š˜์˜ ์ ์‹ฌ

๋ณ„์  โญ๏ธ โญ๏ธ โญ๏ธ โญ๏ธ

์œก์ „๊ตญ๋ฐฅ 10000์›...

๋ง›์žˆ๋‹ค! ์œก์ „ ์ž์ฒด๊ฐ€ ๋น„์‹ผ๋ฐ, ๋ˆ์—†์„๋•Œ ์œก์ „๋จน๊ณ  ์‹ถ์œผ๋ฉด ๋จน์œผ๋ฉด ๋”ฑ์ด๋‹ค!

https://naver.me/GtU3ugRf

 

๋„ค์ด๋ฒ„ ์ง€๋„

์œก์ „๊ตญ๋ฐฅ ์ƒ์•”๋“œ๋ฆผํƒ€์›Œ์ 

map.naver.com

 

 

ํŒ๋‹ค์Šค์—์„œ ์—ด ์ด๋ฆ„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฒ•

https://docs.kanaries.net/ko/topics/Pandas/pandas-rename-column

 

Plotly

  • ์ธํ„ฐ๋ ‰ํ‹ฐ๋ธŒ ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ
  • dictํ˜•์‹์œผ๋กœ ๋ช…๋ น์–ด ์ž‘์„ฑ
  • JSON ํ˜•์‹์œผ๋กœ ์ €์žฅ
  • ๋‹ค์–‘ํ•œ๋ฐฉ์‹์œผ๋กœ Export

 

px.data.tips() # Plotly Express์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‚ด์žฅ ๋ฐ์ดํ„ฐ์…‹ ๋ถˆ๋Ÿฌ์˜ค๋Š” ํ•จ์ˆ˜

# include='all'์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์š”์•ฝ ํ†ต๊ณ„๋„ ์ถœ๋ ฅ
tips.describe(include='all') 
tips.info()
tips.day.unique() # day ์ปฌ๋Ÿผ์˜ ๊ณ ์œ ํ•œ(unique) ๊ฐ’๋“ค์„ ๋ฐ˜ํ™˜
tips['size'] # tips ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์—์„œ size ์ปฌ๋Ÿผ ์„ ํƒ

 

gapminder = px.data.gapminder()

# ์‚ฐ์ ๋„ ์ƒ์„ฑ
fig = px.scatter(
    gapminder,              # ๋ฐ์ดํ„ฐ ์ด๋ฆ„ (๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ํ˜•์‹์ด์–ด์•ผ ํ•จ)
    x='gdpPercap',          # x์ถ•์— ํ‘œ์‹œํ•  ๋ฐ์ดํ„ฐ ์ปฌ๋Ÿผ (1์ธ๋‹น GDP)
    y='lifeExp',            # y์ถ•์— ํ‘œ์‹œํ•  ๋ฐ์ดํ„ฐ ์ปฌ๋Ÿผ (ํ‰๊ท  ๊ธฐ๋Œ€ ์ˆ˜๋ช…)
    color='continent',      # ๋Œ€๋ฅ™๋ณ„ ์ƒ‰์ƒ ๊ตฌ๋ถ„
    size='pop',             # ์›์˜ ํฌ๊ธฐ๋กœ ์ธ๊ตฌ๋ฅผ ํ‘œ์‹œ
    hover_name='country',   # ๋งˆ์šฐ์Šค ์˜ค๋ฒ„ ์‹œ ํ‘œ์‹œ๋  ์ตœ์ƒ๋‹จ ์ •๋ณด (๊ตญ๊ฐ€ ์ด๋ฆ„)
    log_x=True,             # x์ถ• ๋กœ๊ทธ ์Šค์ผ€์ผ ์ ์šฉ
    title='Life Expectancy vs GDP Per Capita - Scatter Plot', # ๊ทธ๋ž˜ํ”„ ์ œ๋ชฉ
    labels={'gdpPercap': 'GDP Per Capita', 'lifeExp': 'Life Expectancy'}, # ์ถ• ๋ ˆ์ด๋ธ” ๋ณ€๊ฒฝ
    width=800,              # ๊ทธ๋ž˜ํ”„์˜ ๊ฐ€๋กœ ํฌ๊ธฐ
    height=600              # ๊ทธ๋ž˜ํ”„์˜ ์„ธ๋กœ ํฌ๊ธฐ
)

# ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ
fig.show()

์ด๋ฒˆ์—๋Š” iris ๋ฐ์ดํ„ฐ

px.data.iris()

iris.describe(include='all') #  species_id: ์งˆ์ ๋ณ€์ˆ˜(๋ฌธ์ž์—ด, ๋ฒ”์ฃผํ˜• - setosa, versicolor, virginica)
gapminder.describe(include='all').T # ํ–‰์—ด ์ „์น˜

iris.columns #์ปฌ๋Ÿผ ํ™•์ธ
# ์ปฌ๋Ÿผ๋ช… ๋ณ€๊ฒฝ
# inplace=True: ์›๋ณธ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ์ง์ ‘ ์ˆ˜์ • -> ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์กด ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ๋ณ€ํ•จ
iris.rename(columns={'sepal_length':'๊ฝƒ๋ฐ›์นจ๊ธธ์ด', 'sepal_width':'๊ฝƒ๋ฐ›์นจ๋„ˆ๋น„','petal_length':'๊ฝƒ์žŽ๊ธธ์ด','petal_width':'๊ฝƒ์žŽ๋„ˆ๋น„'},inplace=True)




1) Scatter Plot

facet_row: ์ง€์ • ์ปฌ๋Ÿผ ๊ธฐ์ค€์œผ๋กœ subplot์„ ๊ทธ๋ฆผ

fig = px.scatter(tips, x='total_bill', y='tip', color='sex', facet_row='day')
from sklearn.datasets import load_iris

iris = load_iris()
print(iris.DESCR) # ์•„์ด๋ฆฌ์Šค ๋ฐ์ดํ„ฐ์…‹์— ๋Œ€ํ•œ ์„ค๋ช…์„ ํฌํ•จํ•˜๋Š” ์†์„ฑ
# ๋Œ€๋ฅ™๋ณ„๋กœ ์ƒ‰๊น”์„ ์ •ํ•จ
px.scatter(gap2007, x='gdpPercap', y='lifeExp', color='continent')

#x์ถ•์„ ๋กœ๊ทธ ์Šค์ผ€์ผ, ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํšŒ๊ท€์„  ์ถ”๊ฐ€ lowess: ๋กœ์ปฌ ํšŒ๊ท€์„ 
px.scatter(gap2007,log_x=True, title='2007๋…„์˜ ๋Œ€๋ฅ™๋ณ„ ๊ธฐ๋Œ€์ˆ˜๋ช…', trendline='lowess')

 

2) ์‚ฐ์ ๋„ ๋งคํŠธ๋ฆญ์Šค(Scatter Matrix): ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ•œ ๋ฒˆ์— ๋ณด๊ธฐ ์œ„ํ•ด ์‚ฐ์ ๋„ ๋งคํŠธ๋ฆญ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜

๊ฐ ๋ณ€์ˆ˜ ๊ฐ„์˜ scatter plot๊ณผ ๋Œ€๊ฐ์„  ์ƒ์˜ ํžˆ์Šคํ† ๊ทธ๋žจ์„ ํ•จ๊ป˜ ๊ทธ๋ ค์คŒ

# px.scatter_matrix๋Š” seaborn์˜ pairplot๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰
px.scatter_matrix(gap2007): gap2007์˜ ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‚ฐ์ ๋„ ๋งคํŠธ๋ฆญ์Šค๋ฅผ ๊ทธ๋ฆฐ๋‹ค
px.scatter_matrix(gap2007, ['year', 'pop', 'lifeExp', 'gdpPercap']): ์ธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฐ์ ๋„ ๋งคํŠธ๋ฆญ์Šค๋ฅผ ๊ทธ๋ฆด ๋ณ€์ˆ˜๋“ค์„ ์ง€์ •

 

3) Line Chart

๊ฐ ์•„์‹œ์•„ ๊ตญ๊ฐ€์˜ ๊ธฐ๋Œ€์ˆ˜๋ช…์ด ์‹œ๊ฐ„์ด ํ๋ฆ„์— ๋”ฐ๋ผ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ผ์ธ ์ฐจํŠธ

px.line(gapAsia, x='year', y='lifeExp', color='country')


4) ์‹œ๊ณ„์—ด ๊ทธ๋ž˜ํ”„

<์ „์ฒด๊ธฐ๊ฐ„>

import plotly.express as px
import yfinance as yf

# ์‚ผ์„ฑ์ „์ž์˜ ์ฃผ์‹ ๋ฐ์ดํ„ฐ ๋‹ค์šด๋กœ๋“œ
samsung = yf.download('005930.KS', start='2020-01-13', end='2025-01-13')

# ๋ฐ์ดํ„ฐ ๋ฆฌ์…‹ ๋ฐ ์ปฌ๋Ÿผ ์ด๋ฆ„ ์กฐ์ •
samsung = samsung.reset_index()

# ์ปฌ๋Ÿผ์˜ ๋ฉ€ํ‹ฐ ์ธ๋ฑ์Šค๋ฅผ 1์ฐจ์›์œผ๋กœ ๋ณ€๊ฒฝ: ์ปฌ๋Ÿผ ์ด๋ฆ„์ด ๋ฉ€ํ‹ฐ ์ธ๋ฑ์Šค(pandas์—์„œ ํ•œ ์—ด์— ๋‘๊ฐœ ์ด์ƒ ์ธ๋ฑ์Šค) ํ˜•ํƒœ๋กœ ๋˜์–ด ์žˆ์„ ๋•Œ, 
๋‘ ๋ฒˆ์งธ ๋ ˆ๋ฒจ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ์ปฌ๋Ÿผ ์ด๋ฆ„์„ 1์ฐจ์›์œผ๋กœ ๋งŒ๋“œ๋Š” ์ž‘์—…
samsung.columns = samsung.columns.droplevel(1)  

# ์ „์ฒด ๊ธฐ๊ฐ„์— ๋Œ€ํ•œ ์‹œ๊ณ„์—ด ๊ทธ๋ž˜ํ”„
fig = px.line(samsung, x='Date', y='Close', title='Samsung Stock Closing Price Over Time')
fig.show()



<ํŠน์ •๊ธฐ๊ฐ„: range_x>

# ํŠน์ • ๊ธฐ๊ฐ„(2022๋…„ 12์›” 31์ผ๋ถ€ํ„ฐ 2024๋…„ 1์›” 31์ผ๊นŒ์ง€)์˜ ์‹œ๊ณ„์—ด ๊ทธ๋ž˜ํ”„
fig2 = px.line(samsung, x='Date', y='Close', range_x=['2022-12-31', '2024-01-31'], title='Samsung Stock Closing Price from Dec 2022 to Jan 2024')
fig2.show()

 


streamlit์„ ์‚ฌ์šฉํ•ด๋ณด์ž

  • ๊ฐ€์ƒํ™˜๊ฒฝ(ํŒŒ์ด์ฌ) -> ์™ธ์ถœ์šฉ ๊ฐ€๋ฐฉ, ์—ฌํ–‰์šฉ ๊ฐ€๋ฐฉ ์ฒ˜๋Ÿผ ๋ชจ๋“ ๊ฑธ ์‹ธ๋“ค๊ณ  ๊ฐ€๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ๋ชฉ์ ์— ๋งž๋Š” ํŒจํ‚ค์ง€๋“ค๋งŒ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด๋†“์€ ์ž„์˜์˜ ๊ฐ€์ƒํ™˜๊ฒฝ.
  • ์ด๋ฅผ ํŒŒ์ด์ฌ ์œ„์—์„œ ๋Œ๋ฆผ
import streamlit as st

# text๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒ€์ƒ‰์ฐฝ ํ•˜๋‚˜ ๋งŒ๋“ค๊ธฐ
# anly_list์— ์žˆ๋Š” ๊ธ€์ž๊ฐ€ ์ผ๋ถ€๋ผ๋„ ๋“ค์–ด๊ฐ€๋ฉด 
# ์ด๋ฏธ์ง€ ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ๊ฒ€์ƒ‰์ฐฝ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”

word= st.text_input("๊ฒ€์ƒ‰ํ•˜์‹ค ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ž…๋ ฅํ•˜์„ธ์š”")
ani_list = ['์งฑ๊ตฌ๋Š”๋ชป๋ง๋ ค', '๋ชฌ์Šคํ„ฐ','๋ฆญ์•ค๋ชจํ‹ฐ']
img_list = ['https://i.imgur.com/t2ewhfH.png', 
            'https://i.imgur.com/ECROFMC.png', 
            'https://i.imgur.com/MDKQoDc.jpg']
dict={}
for i in range(len(ani_list)):
    dict[ani_list[i]] = img_list[i]

if not word:
    st.text("No title")
else:
    for ani in ani_list:
        if word in ani:
            st.image(dict[ani], width=1000)

 

Wednesday(01.15)

๋”๋ณด๊ธฐ

์˜ค๋Š˜์˜ ์ ์‹ฌ

๋ณ„์  โญ๏ธ โญ๏ธ โญ๏ธ 

๋‚™์ง€๋ฎ๋ฐฅ์„ ๋จน์—ˆ๋‹ค. 

์ข…ํ•ฉ๋ถ„์‹์  ์น˜๊ณ ๋Š” ๊ดœ์ฐฎ์€ ๋ง›์ด์—ˆ๋Š”๋ฐ, ๊ฐ™์ด ๋จน์€ ๋‚จํ•ด์—์„œ ์˜จ ์นœ๊ตฌ๋Š” ๋‚™์ง€์˜ ์‹ ์„ ํ•จ์ด ๋ถ€์กฑํ•˜๋‹ค๊ณ  ํ–ˆ๋‹ค.

์—ญ์‹œ ๋ฐ”๋‹ท๊ฐ€์—์„œ ์˜จ ์นœ๊ตฌ๋ผ ํ•ด์‚ฐ๋ฌผ์— ๋Œ€ํ•œ ๊ธฐ์ค€์ด ๋†’์€๊ฒƒ ๊ฐ™๋‹ค.

๋ฌผ๊ณ ๊ธฐ ๋จน๊ณ ์‹ถ์œผ๋ฉด ์ฐฝ๋ฌธ์—์„œ ๋‚š์‹œ ํ•ด์„œ ๋จน์„ ์ˆ˜ ์žˆ๋‹ค๋ผ๋Š” ๋ง์ด ...

 

https://naver.me/5Q3CG9gW

 

๋„ค์ด๋ฒ„ ์ง€๋„

์ตœ๊ฐ€๋„ค๊น€๋ฐฅ

map.naver.com

 

Thursday(01.16)

๋”๋ณด๊ธฐ

์˜ค๋Š˜์˜ ์ ์‹ฌ

๋ณ„์  โญ๏ธ โญ๏ธ โญ๏ธ โญ๏ธ

๋ฏธ๋ถ„๋‹น์€ ์–ด๋Š ์ง€์ ์— ๊ฐ€๋„ ํ•ญ์ƒ ์ค‘๊ฐ„ ์ด์ƒ์€ ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. 

๊ณ ๊ธฐ๊ฐ€ ์ •๋ง ๋„‰๋„‰ํ•˜๋‹ค ใ…Žใ…Ž

https://naver.me/FnmxD6ue 

 

๋„ค์ด๋ฒ„ ์ง€๋„

๋ฏธ๋ถ„๋‹น ์ƒ์•”DMC์ 

map.naver.com

 

 

ํŒ€ํ”„๋กœ์ ํŠธ ์ง„ํ–‰

 

์ด๋ฒˆ์ฃผ ์ˆ˜์š”์ผ, ๋ชฉ์š”์ผ์€ ํ•ฉ์ณ์„œ ๊ธฐ๋กํ•˜๊ฒ ๋‹ค. ์ดํ‹€๋™์•ˆ ๊ฐ„๋‹จํ•œ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์˜€๋‹ค. (์ˆ˜์š”์ผ ์˜คํ›„, ๋ชฉ์š”์ผ ์˜ค์ „)

์ด๋ฒˆ์ฃผ์— ๋ฐฐ์šด ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ํˆด๊ณผ steramlit์„ ์ด์šฉํ•˜์—ฌ, ํ•˜๋‚˜์˜ ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ์ž‘์—…์ด์—ˆ๋‹ค.

5๋ช…์ด์„œ ์ž‘์—…ํ•˜์˜€๊ณ , ๊ฐœ๋ฐœ์—๋Š” 8์‹œ๊ฐ„์ •๋„์˜ ์‹œ๊ฐ„๋ฐ–์— ์—†์–ด์„œ ๊ธ‰ํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.

์ฃผ์ œ์— ๋Œ€ํ•œ ํฌ์ธํŠธ๋ฅผ FISA ์ˆ˜๊ฐ•์ƒ๋“ค์—๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์ ํ•ฉํ•œ ์ฃผ์ œ๋กœ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€ ๋‚˜์˜จ ๊ฒƒ์ด ์‹๋‹น์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜€๋‹ค.

๋ฌผ๋ก , ์นด์นด์˜ค๋งต์ด๋‚˜ ๋„ค์ด๋ฒ„ ์ง€๋„์™€๊ฐ™์€ ๋” ์ข‹์€ ์•ฑ์ด ์กด์žฌํ•˜์ง€๋งŒ, ์ˆ˜๊ฐ•์ƒ๋“ค์„ ํƒ€๊ฒŸ์ธต์œผ๋กœ ์ƒ๊ฐํ•ด๋ดค์„ ๋•Œ๋Š”, ์ „์ฒด ๊ฑฐ๋ฆฌ๊ฐ€ ์•„๋‹Œ ์ƒ์•”๋™ ๊ทผ์ฒ˜ ์‹๋‹น ์œ„์ฃผ๋กœ ๋งž์ถคํ˜•์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š”๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํŒ๋‹จํ•˜์˜€๋‹ค.

ํ•ญ์ƒ 1์‹œ๊ฐ„์˜ ์ ์‹ฌ์‹œ๊ฐ„์—, ๋ฐฅ์„๋จน๊ณ  ๋Œ์•„์™€์•ผํ•˜๋Š”๋ฐ, ์กฐ๊ธˆ ๋จผ ๊ฐ€๊ฒŒ๋ฅผ ๊ฐˆ ๊ฒฝ์šฐ ์‹œ๊ฐ„์•ˆ์— ๋„์ฐฉํ•˜๊ธฐ ์• ๋งคํ• ๋•Œ๊ฐ€ ์žˆ์–ด์„œ, ์ด ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค๋ฉด ์ข‹์€ ๋„๊ตฌ๋กœ ์“ธ ์ˆ˜ ์žˆ์„๊ฒƒ ๊ฐ™์•˜๋‹ค.

๋ฐ˜๋ณ„๋กœ ์–ด๋–ค ์Œ์‹์ ์„ ๋งŽ์ด๊ฐ€๊ณ , ๊ต์œก์žฅ์†Œ์—์„œ ๊ฐ€๊ฒŒ๊นŒ์ง€ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๊ณ , ๋‹ค๋ฅธ ์ˆ˜๊ฐ•์ƒ๋“ค์€ ์–ด๋””๋ฅผ ๊ฐ”๋‹ค์™”๋Š”์ง€๋ฅผ ํ•œ๋ฒˆ์— ๋ณผ ์ˆ˜  ์žˆ๋Š” ๋งž์ถคํ˜• ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค.

  1. ํผ ํ˜•์‹์œผ๋กœ ๋จน๊ณ  ์˜จ ์ ์‹ฌ์„ ๊ธฐ๋กํ•˜๋Š” ์ฐฝ
  2. ๋ฐ˜๋ณ„, ์ฃผ์ฐจ๋ณ„ ์–ด๋–ค ์‹๋‹น์„ ๋งŽ์ด ๊ฐ€๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ฐฝ
  3. ๊ต์œก์žฅ์†Œ์™€ ๊ฐ€๊ฒŒ์˜ ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๋Š” ์ฐฝ
  4. ๋‹ค๋ฅธ ์ˆ˜๊ฐ•์ƒ๋“ค์ด ๊ฐ”๋‹ค์˜จ ํ›„๊ธฐ๋ฅผ ํ™•์ธํ•˜๋Š” ์ฐฝ

์ด๋ ‡๊ฒŒ 4๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. 

์ด๋ฒˆ์— ์ˆ˜์—…์—์„œ ๋ฐฐ์šด ๋Œ€์‹œ๋ณด๋“œ ๋งŒ๋“œ๋Š” ๋ถ€๋ถ„์„ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ, ๋‹ค๋ฅธ ๋ถ€๋ถ„์„ ๋งก์•„์„œ ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™์•„ ํŒ€์›๋“ค์—๊ฒŒ ๋ถ€ํƒํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งก์€ ๋ถ€๋ถ„์€ DB์—ฐ๊ฒฐ ๋ฐ ๊ตฌ์ถ•, ์‚ฌ์ง„ ์ €์žฅ์— ๋Œ€ํ•œ ๋ถ€๋ถ„, ์ง€๋„, ํ›„๊ธฐ์— ๋Œ€ํ•œ ๊ฒŒ์‹œ๊ธ€ ์ด๋ ‡๊ฒŒ ๋งก์•˜๋‹ค.

๊ฐ ๋ถ€๋ถ„์„ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๋ฉด

  1. ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ์ •๋ณด๋ฅผ ๋ฐ›์•„์„œ ํ•ด์•ผํ–ˆ๊ธฐ์— DB ์‚ฌ์šฉ์€ ํ•„์ˆ˜ ์˜€๊ธฐ์—, ์ •๋ณด ์ €์žฅ๊ณผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ž‘์—…
  2. ์‚ฌ์ง„์˜ ๊ฒฝ์šฐ S3์— ์ผ๋ฐ˜์ ์œผ๋กœ ์ €์žฅํ•˜๋Š”๋ฐ, ํด๋ผ์šฐ๋“œ ์—ฐ๊ฒฐ์— ์žˆ์–ด ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…์ด ์ƒ๊ธธ๊ฑฐ๋ผ ํŒ๋‹จํ•˜์—ฌ, ์‚ฌ์ง„ ์ž์ฒด๋ฅผ BLOB์œผ๋กœ ์ €์žฅํ•˜์˜€๋‹ค. ํ˜„ ์‹œ์ ์—์„œ 100๊ฐœ ์ •๋„์˜ ๋ฐ์ดํ„ฐ์ด๊ธฐ์—, DB ์ ‘๊ทผ ์‹œ๊ฐ„์—์„œ๋Š” ํฐ ๋ฌธ์ œ๊ฐ€ ์—†์„๊ฑฐ๋ผ ํŒ๋‹จํ•˜์˜€๋‹ค.
  3. ์ง€๋„๋Š” OSM์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ๋ฌด๋ฃŒ์ธ ๋ถ€๋ถ„๋„ ์žˆ์—ˆ๊ณ , (๋ฌผ๋ก  ์นด์นด์˜ค๋„ ์ด์ •๋„ API ์š”์ฒญ์€ ๋ฌด๋ฃŒ๋‹ค.) ์นด์นด์˜ค๋‚˜ ๋„ค์ด๋ฒ„์ง€๋„์˜ ๊ฒฝ์šฐ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ์ •๋ณด๊ฐ€ ๋งŽ๋‹ค๊ณ  ๋Š๊ปด์„œ ์ด๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ , ๋งˆ์ปค๋Š” Folium ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€๋„์— ํ‘œ์‹œํ•˜์˜€๋‹ค.
  4. DB์— ์ €์žฅ๋œ ์‚ฌ์šฉ์ž ํ›„๊ธฐ๋ฅผ ํ…์ŠคํŠธ, ์‚ฌ์ง„์œผ๋กœ ๋ถˆ๋Ÿฌ์™€์„œ ๋ณด์—ฌ์ฃผ๊ณ , ํŽ˜์ด์ง€๋„ค์ด์…˜๊ณผ ์˜ค๋ฅ˜์ฒ˜๋ฆฌ๋ฅผ ํ•˜์˜€๋‹ค.

๋ชฉ์š”์ผ์— ๋ฐœํ‘œ๋ฅผ ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ๋ฐœํ‘œ์ง์ „๊นŒ์ง€ ์‹œ๊ฐ„์ด ๋ถ€์กฑํ–ˆ๋˜ ๋ถ€๋ถ„์€ 2๊ฐ€์ง€์˜€๋‹ค.

 

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

๋‚ด๊ฐ€ ๊ฒช์€ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…๋งŒ ๊ธฐ๋กํ•˜์ž๋ฉด,

    1. ์ง€๋„๋ฅผ ๋งคํ•‘ํ•ด์•ผ ํ•˜๋Š”๋ฐ, '๊น€์น˜๋„๊ฐ€'๋ผ๋Š” ์‹๋‹น์ด ์žˆ์„ ๋•Œ,"๊น€์น˜๋„๊ฐ€ ์ƒ์•”"์€ ๋‚˜์˜ค๊ณ , "๊น€์น˜๋„๊ฐ€ ์ƒ์•”์ "์€ ์•ˆ ๋‚˜์˜ค๋Š” ๋ฌธ์ œ

OSM์˜ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์ธ๊ฒƒ ๊ฐ™๋‹ค.

    2. ์•…์„ฑ์œ ์ €๋Š” ๊ฐ”๋‹ค์˜ค์ง€ ์•Š์€ ์žฅ์†Œ๋ฅผ ๊ฐ”๋‹ค์™”๋‹ค๊ณ  ํ•  ๊ฒƒ + ์‹ค์ œ๋กœ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์žฅ์†Œ๋ฅผ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ

๊ธˆ๋ฐฉ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ, ์ด๊ฒƒ์กฐ์ฐจ ํ•  ์‹œ๊ฐ„์ด ์•ˆ๋˜์–ด์„œ ๋ฐœํ‘œ๋๋‚˜๊ณ  ์ง„ํ–‰์„ ํ•ด๋ณด๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ํ•ด๊ฒฐ๋ฐฉ์•ˆ์€ OSM์— ๋“ฑ๋ก๋œ ๊ฐ€๊ฒŒ์˜ ๊ฒฝ์šฐ, ๊น€์น˜๋„๊ฐ€๋ฅผ ์˜ˆ๋ฅผ ๋“ค๋ฉด "๊น€์น˜๋„๊ฐ€ ์ƒ์•”", "๊น€์น˜๋„๊ฐ€ ์ƒ์•”์ " ์ด๋Ÿฐ์‹์œผ๋กœ ์–ด๋Š์ •๋„์˜ ํ˜•์‹์€ ๊ณ ์ •๋˜์–ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ด๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๋งคํ•‘ํ•ด์„œ, 

{"๊น€์น˜๋„๊ฐ€" : "๊น€์น˜๋„๊ฐ€ ์ƒ์•”", "๊น€์น˜๋„๊ฐ€ ์ƒ์•”์ " }

์ด๋Ÿฐ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•œ๋‹ค๋ฉด, ์‹ค์ œ๋กœ ๊ฐ€๊ฒŒ๊ฐ€ ์—†๊ฑฐ๋‚˜, ์ƒ์•”์ด ์•„๋‹ˆ๋ผ์„œ 1์‹œ๊ฐ„๋‚ด๋กœ ๋จน๊ณ  ์˜ฌ ์ˆ˜ ์—†๋Š” ๊ฐ€๊ฒŒ๋ฅผ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ๋“ค์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๊ณ , ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๊ฐ€๊ฒŒ๋ฅผ ์ง€๋„์— ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ์‹œ๊ฐ„์  ์—ฌ์œ ๊ฐ€ ์žˆ์„ ๋•Œ ํ•ด๊ฒฐํ•ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค.  1/23 ๊ธฐ์ค€ ํ•ด๊ฒฐ์™„๋ฃŒ

๋ฐœํ‘œ๋Š” ํฐ ๋ฌธ์ œ ์—†์ด ์ง„ํ–‰ํ–ˆ๊ณ , 5๊ฐœ์ •๋„์˜ ์งˆ๋ฌธ์„ ๋ฐ›์•˜๋Š”๋ฐ, ์งˆ๋ฌธ ๋ชจ๋‘ ๊ฐ์•ˆํ•˜๊ณ  ์žˆ์—ˆ๋˜ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…์— ๋Œ€ํ•œ ๋ถ€๋ถ„์ด์—ˆ๋‹ค. 

 

ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” ์Šฌ๋ž™์—์„œ ํ™๋ณด๋ฅผ ํ•ด์•ผ ํ–ˆ๊ณ , ๋ฐœํ‘œ ๋๋‚˜๊ณ  ์ปคํ”ผ ์ถ”์ฒจ์„ ํ•˜์˜€๋Š”๋ฐ, ์ฒ˜์Œ์— ํŒ€์›์ด ๋‹น์ฒจ๋˜์–ด์„œ ์ข‹์•„ํ•˜๋Š” ๋ชจ์Šต์ด ์›ƒ๊ฒผ๋‹ค.

ํœด๋Œ€ํฐ ๋’ท๋ฒˆํ˜ธ ๋Œ๋ฆผํŒ์— ๋„ฃ๊ณ  ๋Œ๋ฆผํŒ ๋Œ๋ฆฌ๋Š”๋ฐ, ๋ฒˆํ˜ธ ๋‚˜์˜ค๋‹ˆ๊นŒ 1์ดˆ ์žˆ๋‹ค๊ฐ€ "์–ด! ๋‚˜๋‹ค" ํ•˜๋Š”๊ฒŒ ์–ด์ด๊ฐ€ ์—†์œผ๋ฉด์„œ ์›ƒ๊ฒผ๋‹ค. (์ฟ ํฐ์€ ๋‹ค์‹œ ์ถ”์ฒจํ•ด์„œ ๋‹ค๋ฅธ ์ธ์›์—๊ฒŒ ๋Œ์•„๊ฐ”๋‹ค.)

 

์ด ์ •๋„ ์งง์€ ์‹œ๊ฐ„์— ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์ ์–ด์„œ, ์‹œ๊ฐ„์— ๋Œ€ํ•œ ์••๋ฐ•๊ฐ์ด ์ปธ๋‹ค. ๊ทธ๋ž˜์„œ ๋ชฉ์š”์ผ ์ ์‹ฌ์€ ์ •๋ง ๋Œ€์ถฉ ๋จน๊ณ  ์ง„ํ–‰ ํ–ˆ๊ณ , ๊ทธ๋ž˜๋„ ๋งˆ๋ฌด๋ฆฌ๋ฅผ ์ž˜ ํ•ด์•ผํ–ˆ๊ธฐ์—, ์ฑ…์ž„๊ฐ์„ ๊ฐ€์ง€๊ณ  ๋งˆ๋ฌด๋ฆฌ ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

ํŒ€์›์ด ๊ณ ์ƒํ–ˆ๋‹ค๊ณ  ํ•ด์ค˜์„œ ๋ฟŒ๋“ฏํ•œ ํ”„๋กœ์ ํŠธ์˜€๋‹ค.

 

https://github.com/FISAFOODIE/main

https://fisafoodie.streamlit.app/

 

Friday(01.17)

๋”๋ณด๊ธฐ

์˜ค๋Š˜์˜ ์ ์‹ฌ

๋ณ„์  โญ๏ธ โญ๏ธ โญ๏ธ โญ๏ธ

 

JTBC ๊ตฌ๋‚ด์‹๋‹น์—์„œ ์‹์‚ฌํ–ˆ๋‹ค.

6500์›์ด๋ผ๋Š” ๊ฐ€๊ฒฉ์— ์ด์ •๋„๋ฉด ๊ฑฐ๋ฆฌ๊ฐ€ ์กฐ๊ธˆ ๋จผ๊ฑธ ๊ฐ์•ˆํ•˜๋”๋ผ๋„ ๋จน์„๋งŒ ํ•˜๋‹ค.

 

https://naver.me/G1wOEZF8

 

๋„ค์ด๋ฒ„ ์ง€๋„

์‹ ์„ธ๊ณ„ํ‘ธ๋“œ ์ค‘์•™๊ทธ๋ฃน์ 

map.naver.com

 

์˜ค๋Š˜์€ SQL ์œ„์ฃผ๋กœ ๋ฐฐ์› ๋‹ค. ๊ฐ„๋‹จํžˆ DB์— ๊ด€ํ•œ ์ •๋ฆฌ๋งŒ ํ•˜๊ฒ ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ์ •๋ฆฌ: https://koreatstm.tistory.com/156

๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜

  • ์ •ํ˜•
  • ๋ฐ˜์ •ํ˜•: json, xml, html, yaml
  • ๋น„์ •ํ˜•: ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€

๋น…๋ฐ์ดํ„ฐ: ์ •ํ˜•&๋ฐ˜์ •ํ˜•&๋น„์ •ํ˜•

  • ํŠน์„ฑ
    • ๋‹ค์–‘์„ฑ
    • ๊ทœ๋ชจ
    • ์†๋„
    • ์ถ”๊ฐ€๋กœ ๊ฐ€์น˜, ๋ณ€๋™์„ฑ,์ •ํ™•์„ฑ,๋ณต์žก์„ฑ

 

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ, ๋…ผ๋ฆฌ์ ์ธ ๊ฐœ๋…
  • DBMS: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ
  • ๋ฆด๋ ˆ์ด์…˜: ํ–‰๊ณผ ์—ด๋กœ ๊ตฌ์„ฑ๋œ ํ…Œ์ด๋ธ” -> ํ…Œ์ด๋ธ”๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๋…ผ๋ฆฌ์ ์ธ ๊ฐœ๋…์—์„œ '๋ฆด๋ ˆ์ด์…˜'์ด ๋” ๊ฐ•์กฐ๋จ. ํ…Œ์ด๋ธ”์€ ๋ฌผ๋ฆฌ์ ์ธ ๊ฐ์ฒด์ด๋ฏ€๋กœ, ํ…Œ์ด๋ธ”๊ณผ ๋ฆด๋ ˆ์ด์…˜์˜ ์ฐจ์ด๋Š” ๋…ผ๋ฆฌ์ /๋ฌผ๋ฆฌ์  ๊ด€์ ์˜ ์ฐจ์ด์—์„œ ๋ฐœ์ƒ
  • ํ…Œ์ด๋ธ”: 2์ฐจ์› ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด, ํ‘œ ํ˜•ํƒœ
  • ์Šคํ‚ค๋งˆ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๋…ผ๋ฆฌ์  ์„ค๊ณ„   
  • MySQL์€ ๋…ผ๋ฆฌ์  ์Šคํ‚ค๋งˆ ๊ณ„์ธต๊ณผ ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณ„์ธต์„ ๋ช…ํ™•ํ•˜์ง€ ์•Š์•„์„œ CREATE DATABASE ์™€ CREATE SCHEMA๊ฐ€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜์—ฌ ํ—ท๊ฐˆ๋ฆฐ๊ฒƒ
  • ์ธ์Šคํ„ด์Šค: ์Šคํ‚ค๋งˆ์— ๋”ฐ๋ผ ์‹ค์ œ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ



์–ดํŠธ๋ฆฌ๋ทฐํŠธ=์—ด=์†์„ฑ=ํ•„๋“œ=์ปฌ๋Ÿผ

๋กœ์šฐ=ํ–‰=ํŠœํ”Œ=๋ ˆ์ฝ”๋“œ


Data Mart & Data Warehouse & Data Lake

  • ๋ฐ์ดํ„ฐ ๋งˆํŠธ: ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์œผ๋กœ, ๋น„์ฆˆ๋‹ˆ์Šค ์šฉ๋„๋ฅผ ์œ„ํ•ด ์ •์ œ๋œ ๋ฐ์ดํ„ฐ ์ œ๊ณต
  • ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค: DM์— ๊ณต๊ธ‰ํ•  ๋ฐ์ดํ„ฐ๋ฅผ  raw data๋ฅผ ๊ฐ€์ง€๊ณ  ์ฃผ์ œ๋ณ„๋กœ ์ €์žฅํ•จ์ด๋•Œ, ๋ฐ์ดํ„ฐ ์ •์ œ ํ•  ๋•Œ ๋ฒ„๋ ค์ง€๋Š” ๋ฐ์ดํ„ฐ์™€ ๋น„์šฉ์ด ๋“ค์–ด์„œ DL์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ๊ตฌ์กฐ๊ฐ€ ๋ฐœ์ƒ
  • ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ: raw data๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™€ ์ €์žฅ, ๋‹ค์–‘ํ•œ ํ˜•์‹ ์ง€์›



DBMS ์œ ํ˜•

์‚ฌ์šฉ์ž๊ฐ€ DB์— ๋Œ€ํ•œ ์—‘์„ธ์Šค๋ฅผ ์ •์˜, ์ƒ์„ฑ, ์œ ์ง€, ์ œ์–ด ํ•  ์ˆ˜ ์žˆ๋„๋ก ์†Œํ”„ํŠธ์›จ์–ด์‘์šฉํ”„๋กœ๊ทธ๋žจ

  • ๊ณ„์ธต์  DBMS: ํŠธ๋ฆฌ์™€ ๊ฐ™์€ ๊ตฌ์กฐ → ์ผ๋Œ€๋‹ค ๊ด€๊ณ„์— ํšจ์œจ์ ์ด์ง€๋งŒ ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.(๋ณ€๊ฒฝ ๊นŒ๋‹ค๋กญ๊ณ  ์›ํ•˜๋Š” ์ •๋ณด ์ฐพ๊ธฐ ํž˜๋“ค๋‹ค), ํ˜„์žฌ๋Š” ์‚ฌ์šฉ ์•ˆํ•จ
  • ๋„คํŠธ์›Œํฌ DBMS: ๋‹ค๋Œ€๋‹ค ์ง€์›, ๊ณ„์ธต์  DBMS๋ณด๋‹ค๋Š” ์œ ์—ฐํ•˜์ง€๋งŒ, ์„ค๊ณ„,๊ด€๋ฆฌ๊ฐ€ ๋ณต์žก
  • RDBMS: ํ…Œ์ด๋ธ” ๋‹จ์œ„(ํ–‰&์—ด)๋กœ ๊ตฌ์„ฑ๋จ, SQL๋กœ ์กฐ์ž‘, ์—ฌ๋Ÿฌ ์ œ์•ฝ์กฐ๊ฑด์œผ๋กœ ๋ฌด๊ฒฐ์„ฑ ์กด์žฌ
  • NoSQL(Not Only SQL): ํ™•์žฅ์„ฑ, ๋ถ„์‚ฐ ์ €์žฅ, ๋น„(๋ฐ˜)์ •ํ˜• ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์—  ์ ํ•ฉ, Key Value(Redis), Document(Mongo), Graph(Neo4j), Column Family(Casandra) ์ข…๋ฅ˜๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ, ๋น…๋ฐ์ดํ„ฐ์— ์ ํ•ฉํ•˜๋‹ค.

    



๋ฐ์ดํ„ฐ ์–ธ์–ด

https://koreatstm.tistory.com/157#3.%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%96%B8%EC%96%B4-1

 

SQL ์—ฐ์Šต์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ ํ•˜๊ธฐ ์ข‹๋‹ค. ์ด์ „์— SQLD ์ค€๋น„ํ•  ๋•Œ ํ’€์—ˆ์—ˆ๋Š”๋ฐ, ์•„์ง ๋ชป ํ‘ผ ๋ฌธ์ œ๋“ค์ด ์žˆ๋‹ค.

https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit

์ด๋ฒˆ์ฃผ SQL ์ˆ˜์—… ํ•˜๋Š” ๊น€์—, ๋‚จ์€ 20๋ฌธ์ œ๋ฅผ ๋‹ค ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค. 

์ฝ”๋“œ๋Š” ๋”ฐ๋กœ ๊ณต์œ ํ•˜๊ฒ ๋‹ค.