728x90
๋ฐ˜์‘ํ˜•

pyqt๋ฅผ ์ด์šฉํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์ผ์ด ์ƒ๊ฒจ ์ž‘์„ฑํ•œ๋‹ค.

vscode์™€ ์•„๋‚˜์ฝ˜๋‹ค ์„ค์น˜๊ฐ€ ๋˜์–ด ์žˆ์—ˆ์•ผํ•œ๋‹ค.

 


โ€ป ์•„๋‚˜์ฝ˜๋‹ค ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์„ค์ • ๋ฐ ๊ธฐ๋ณธ ์„ค์ •์ด ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ์—์„œ ์ง„ํ–‰

 

1. vscode ํ™•์žฅํ”„๋กœ๊ทธ๋žจ(Extensions)์—์„œ Python๊ณผ Code Runner๋ฅผ ์„ค์น˜

python
code runner

2. F1 ๋˜๋Š” Ctrl + Shift + P ๋‹จ์ถ•ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ๋ช…๋ น์–ด ํŒ”๋ ˆํŠธ๋ฅผ ์—ด๊ณ  Python: Select Interpreter๋ฅผ ์ž…๋ ฅํ•จ

 

3. ์•„๋‚˜์ฝ˜๋‹ค์—์„œ ๋ฏธ๋ฆฌ ์„ค์ •ํ•œ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์„ ํƒ

    - ๋ณธ์ธ์€ pyqt๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์‚ฌ์šฉ

 

4. Ctrl + Shift + `(๋ฐฑํ‹ฑ) ๋‹จ์ถ•ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ์ƒˆํ„ฐ๋ฏธ๋„์„ ์ƒ์„ฑํ•˜๋ฉด conda activate [๊ฐ€์ƒํ™˜๊ฒฝ์ด๋ฆ„] ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰

    - ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜๋ฉด ๊ฐ€์ƒํ™˜๊ฒฝ์ด ํ™œ์„ฑํ™”๋˜๋ฉฐ vscode์™€ ์•„๋‚˜์ฝ˜๋‹ค๊ฐ€ ์—ฐ๋™์ด ๋จ

 

5. ์ƒˆํด๋”์—์„œ ํŒŒ์ด์ฌ ํŒŒ์ผ๋ฅผ ๋งŒ๋“ค์–ด ์‹คํ–‰์ด ๋˜๋Š”์ง€ ํ™•์ธ 
    - ๋นจ๊ฐ„์ƒ‰ ํ‘œ์‹œํ•œ ๋ฒ„ํŠผ์ด๋‚˜ Ctrl + Alt + N ๋‹จ์ถ•ํ‚ค๋ฅผ ๋ˆ„๋ฆ„

    - ํŒŒ์ผ ์ €์žฅ ํ›„ ์‹คํ–‰

 

6. ์ถœ๋ ฅ์ด ๋˜๋ฉด ์™„๋ฃŒ


์—ฌ๊ธฐ๊นŒ์ง€ ์˜ค๋ฉด ๋

 

์ž˜ ์•ˆ๋˜๊ฑฐ๋‚˜ ๋ชจ๋ฅด๋Š”๊ฒŒ ์žˆ์œผ๋ฉด ๋Œ“๊ธ€ ๋‹ฌ์•„์ฃผ์„ธ์š”.

728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Matplotlib๋กœ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ํ•  ๋•Œ๋งˆ๋‹ค ํ•œ๊ธ€๋“ค์ด ๊นจ์ง€๋Š” ํ˜„์ƒ๋“ค์„ ๋งŽ์ด ๋ณผ๊ฑฐ๋‹ค.

๋ฌผ๋ก  ์˜์–ด๋กœ ์ž‘์„ฑํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋Š” ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์„๊ฑฐ์ง€๋งŒ.....

์—ฌํŠผ ์˜ค๋Š˜์€ ํ•œ๊ธ€๊นจ์ง ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์˜ฌ๋ฆฌ๊ณ ์ž ํ•œ๋‹ค.

 

๊ฐœ๋ฐœํ™˜๊ฒฝ - Jupyter Notebook

 

Matplotlib ํ•œ๊ธ€ ํฐํŠธ ์ •๋ณด ์กฐํšŒ

1. Matplotlib์˜ font_manager์— ํ˜„์žฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ „์ฒด ํฐํŠธ์™€ ๊ฒฝ๋กœ๋ฅผ ํ•˜๋‚˜ ํ•˜๋‚˜์”ฉ ์ฐพ๋Š” ๋ฐฉ๋ฒ•

import matplotlib.font_manager as fm
font_list = fm.findSystemFonts(fontpaths=None, fontext='ttf')
font_list[:]

 

2. ์•Œ๊ณ  ์žˆ๋Š” ํฐํŠธ๋ฅผ ์ž…๋ ฅํ•ด์„œ ํฐํŠธ์˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•

import matplotlib.font_manager as fm

font_name = 'Nanum'
[(f.name, f.name) for f in fm.fontManager.ttflist if f'{font_name}' in f.name]

 

2๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘ ์•„๋ฌด ๋ฐฉ๋ฒ•์ด๋‚˜ ์‚ฌ์šฉํ•ด์„œ ํฐํŠธ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด์ฃผ๋ฉฐ ๋ฉ๋‹ˆ๋‹ค.

 

Matplotlib ํ•œ๊ธ€ ์ ์šฉ

ํ•œ๊ธ€ ์ ์šฉ์€ importํ•ด์„œ ๋ถˆ๋Ÿฌ์™€์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•œ๊ธ€ ํฐํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ๋งˆ์ด๋„ˆ์Šค ( - )๊ฐ€ ๊นจ์ง ํ˜„์ƒ๋„ ์ผ์–ด๋‚˜๋Š”๋ฐ ๊ทธ ๋งˆ์ด๋„ˆ์Šค์— ๊ด€ํ•œ ๋‚ด์šฉ๋„ ๋ฐ‘์— ์ ์–ด ๋‘์—ˆ๋‹ค.

import matplotlib.pyplot as plt

# family์—๋‹ค๊ฐ€ ์ž๊ธฐ๊ฐ€ ์“ธ ํฐํŠธ ์ด๋ฆ„์„ ์ ์–ด์ค€๋‹ค.
# ํฐํŠธ ์„ค์ •
plt.rc('font', family='NanumGothicCoding')
# ๋งˆ์ด๋„ˆ์Šค ๊นจ์ง ํ˜„์ƒ
plt.rc('axes', unicode_minus=False)

 

728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

์„ค๋ช…

- '์ƒ์ž ์ˆ˜์—ผ ๊ทธ๋ฆผ(box-and-whisker plot, box-and-whisker diagram)' ๋˜๋Š” ์ƒ์ž ๊ทธ๋ฆผ(Box plot) ๋˜๋Š” ์ƒ์ž ์ฐจํŠธ(Box Chart)๋ผ๊ณ  ๋ถˆ๋ฆผ

- ๋ฐ์ดํ„ฐ์˜ ์ตœ๋Œ€, ์ตœ์†Œ, ์ค‘๊ฐ„๊ฐ’๊ณผ ์‚ฌ๋ถ„์œ„ ์ˆ˜ ๋“ฑ์„ ํšจ์œจ์ ์œผ๋กœ ๊ฐ€์‹œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์ฐจํŠธ

- ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ ๊ธฐ์ค€์œผ๋กœ ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ํŒŒ์•…ํ•˜๋Š”๋ฐ ์ ํ•ฉ

- ๋ฐ์ดํ„ฐ์˜ ์ค‘์‹ฌ๊ณผ ์‚ฐํฌ, ๋ชจ์–‘์„ ๊ฐœ๋žต์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Œ

- ์ด์ƒ์น˜์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•  ๋•Œ ์‚ฌ์šฉ

- ๊ทธ๋ฃน๊ฐ„ ํ‰๊ท ๊ณผ ์‚ฐํฌ ๋น„๊ต์— ํšจ๊ณผ์ 

- 5๊ฐœ์˜ ํ†ต๊ณ„๋Ÿ‰๊ณผ ์ž๋ฃŒ์˜ ํ‰๊ท ๊ฐ’, ์‚ฌ๋ถ„์œ„์ˆ˜ ๋ฒ”์œ„๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…

- ์ž๋ฃŒ ๋ถ„ํฌ์˜ ๋น„๋Œ€์นญ๋„๋ฅผ ํŒŒ์•… → ์ž๋ฃŒ์˜ ํ‰๊ท ๊ณผ ์ค‘์•™๊ฐ’์„ ๋น„๊ต

- ๊ทธ๋ž˜ํ”„

  1. 25th percentile, Lower Quartile, ์ œ 1์‚ฌ๋ถ„์œ„(Q1)
    โ˜ž 25%์˜ ์œ„์น˜
    โ˜ž  Q1 = (n+1) * 4๋ฒˆ์งธ ์ˆซ์ž์˜ ๊ฐ’
  2.  ์ค‘์•™๊ฐ’(MEDIAN), ์ œ 2์‚ฌ๋ถ„์œ„(Q2)
    โ˜ž ์ค‘์•™๊ฐ’ 50%์˜ ์œ„์น˜ 
    โ˜ž ์ค‘์•™ ๊ฐ’์€ ์ง์ˆ˜์ผ ๊ฒฝ์šฐ 2๊ฐœ๊ฐ€ ๋  ์ˆ˜ ๋„ ์žˆ๊ณ , ๊ทธ๊ฒƒ์˜ ํ‰๊ท ์ด ์ค‘์•™ ๊ฐ’์ด ๋  ์ˆ˜ ์žˆ์Œ
    โ˜ž ํ™€์ˆ˜์ผ ๊ฒฝ์šฐ, ์ค‘์•™ ๊ฐ’์€ 1๊ฐœ๊ฐ€ ๋จ
  3.  75th percentile, Upper quartile, ์ œ 3์‚ฌ๋ถ„์œ„ (Q3)
    โ˜ž 75%์˜ ์œ„์น˜
    โ˜ž Q3 = (n+1) * (3 / 4)๋ฒˆ์งธ ์ˆซ์ž์˜ ๊ฐ’
  4. ๋ฐ•์Šค(Box), IQR(Inter Quartile Range)
    โ˜ž 25%(Q1) ~ 75%(Q3) ๊นŒ์ง€ ๊ฐ’๋“ค์„ ๋ฐ•์Šค๋กœ ๋‘˜๋Ÿฌ ์Œˆ
    โ˜ž Q3 - Q1์˜ ๊ฐ’
  5.  ์ˆ˜์—ผ(Whisker)
    โ˜ž ๋ฐ•์Šค์˜ ๊ฐ ๋ชจ์„œ๋ฆฌ (Q1, Q3)๋กœ ๋ถ€ํ„ฐ IQR์˜ 1.5๋ฐฐ ๋‚ด์— ์žˆ๋Š” ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ๋ฐ์ดํ„ฐ ์ ๊นŒ์ง€ ์ด์–ด์ ธ ์žˆ๋Š” ๊ฒƒ
    โ˜ž ๋ฐ•์Šค์˜ ์ƒํ™”์ขŒ์šฐ๋กœ ๋ป—์–ด ๋‚˜๊ฐ€๋Š” ์„ 
    โ˜ž ์ตœ๋Œ“๊ฐ’ : ์ œ 3์‚ฌ๋ถ„์œ„์ˆ˜ + (1.5 * IQR๊ฐ’) = ์ตœ๋Œ“๊ฐ’
    โ˜ž ์ตœ์†Ÿ๊ฐ’ : ์ œ 1์‚ฌ๋ถ„์œ„์ˆ˜ - (1.5 * IQR๊ฐ’) = ์ตœ์†Ÿ๊ฐ’
  6.  Outlier(์ด์ƒ์น˜), Extreme(๊ทน๋‹จ์น˜)
    โ˜ž ์ˆ˜์—ผ๋ณด๋‹ค ๋ฐ”๊นฅ์ชฝ์— ์œ„์น˜ํ•œ ๋ฐ์ดํ„ฐ
    โ˜ž ์ด์ƒ์น˜ : ์ˆ˜์—ผ์˜ ์ตœ๋Œ“ · ์ตœ์†Ÿ ๊ฐ’์„ ๋ฒ—์–ด๋‚œ ๋ฐ์ดํ„ฐ
                   ๋ฐ•์Šค๊ธธ์ด์˜ 1.5๋ฐฐ
    โ˜ž ๊ทน๋‹จ์น˜ : ๋ฐ•์Šค ๊ธธ์ด์˜ 3๋ฐฐ
                   ์ œ 3 ์‚ฌ๋ถ„์œ„์ˆ˜ + (3.0 * IQR๊ฐ’) ๋ฒ—์–ด๋‚œ ๋ฐ์ดํ„ฐ
                   ์ œ 1 ์‚ฌ๋ถ„์œ„์ˆ˜ - (3.0 * IQR๊ฐ’) ๋ฒ—์–ด๋‚œ ๋ฐ์ดํ„ฐ

Python ์ฝ”๋“œ

Jupyter Notebook ํ™œ์šฉ ํ–ˆ๊ณ , ์ž์„ธํ•œ ๋‚ด์šฉ๋“ค์€ ๋‚˜์ค‘์— ๋‹ค์‹œ ์ถ”๊ฐ€ ํ•  ์˜ˆ์ •

์„ธ๋กœ

๊ฐ€๋กœ

์—ฌ๋Ÿฌ๊ฐœ

 

ํŠน์„ฑ ์ด์šฉ


์ฐธ๊ณ  ์‚ฌ์ดํŠธ

 

์ƒ์ž ์ˆ˜์—ผ ๊ทธ๋ฆผ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

๊ธฐ์ˆ  ํ†ต๊ณ„ํ•™์—์„œ '์ƒ์ž ์ˆ˜์—ผ ๊ทธ๋ฆผ'(box-and-whisker plot, box-and-whisker diagram) ๋˜๋Š” '์ƒ์ž ๊ทธ๋ฆผ'(box plot, boxplot)์€ ์ˆ˜์น˜์  ์ž๋ฃŒ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค. ์ด ๊ทธ๋ž˜ํ”„๋Š” ๊ฐ€๊ณตํ•˜์ง€ ์•Š์€ ์ž๋ฃŒ ๊ทธ๋Œ€๋กœ๋ฅผ ์ด์šฉํ•˜

ko.wikipedia.org

 

Chapter 11. ์ฐจํŠธ๋ฅผ ๋ฉ‹์ง€๊ฒŒ ๊ทธ๋ ค๋ณด์ž

์ด๋ฒˆ ์‹œ๊ฐ„์˜ ๋ชฉ์ฐจ 1. ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”๊ฐ€ ๊ผญ ํ•„์š”ํ• ๊นŒ? 2. ํŒŒ์ด์ฌ์—์„œ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”์˜ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๋งทํ”Œ๋กฏ๋ฆฝ 3. plot() ํ•จ์ˆ˜๋ฅผ ์ข€ ๋” ๋‹ค์–‘ํ•˜๊ฒŒ ์จ ๋ณด์ž! 4. ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค ๋ณด์ž! 5. ์‚ฐํฌ๋„ ๊ทธ๋ž˜ํ”„๋ฅผ

jiwoncho20213135python.tistory.com

 

๊ต์œกํ†ต๊ณ„ 2.3. ๋ฐ•์Šคํ”Œ๋กฏ(Box Plot)๊ณผ ์‚ฐํฌ๋„

5. ๋ฐ•์Šค ํ”Œ๋กฏ (Box Plot) : ๋ฐ•์Šค ๋ชจ์–‘์˜ ๊ทธ๋ž˜ํ”„. 1) ๊ฐ€์šด๋ฐ ๋ฐ•์Šค๋Š” ์ „์ฒด ์ž๋ฃŒ์˜ 50%๊ฐ’. (ํ•˜์œ„ 25%์™€ ์ƒ์œ„...

blog.naver.com

 

matplotlib.pyplot.boxplot — Matplotlib 3.4.3 documentation

Parameters: xArray or a sequence of vectors.The input data. notchbool, default: FalseWhether to draw a notched box plot (True), or a rectangular box plot (False). The notches represent the confidence interval (CI) around the median. The documentation for b

matplotlib.org

 

(ํŒŒ์ด์ฌ-Matplotlib) ์‹œ๊ฐํ™” ํŠœํ† ๋ฆฌ์–ผ - ๋ฐ•์Šคํ”Œ๋กฏ

๊ฐ•์˜ ํ™๋ณด ์ทจ์ค€์ƒ์„ ์œ„ํ•œ ๊ฐ•์˜๋ฅผ ์ œ์ž‘ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ณธ ๋ธ”๋กœ๊ทธ๋ฅผ ํ†ตํ•ด์„œ ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜์‹  ๋ถ„์€ ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ๊ณผ ๋งํฌ๋ฅผ ์ˆ˜๊ฐ•ํ•˜์—ฌ ์ธํ”„๋Ÿฐ ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•ด ๋ณด๋‚ด์ฃผ์‹œ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์Šคํƒ€๋ฒ…์Šค ์•„์ด์Šค ์•„

dschloe.github.io

 

Boxplot ์ƒ์ž๋„ํ‘œ๋ฅผ ํ†ตํ•œ ์ด์ƒ์น˜ ํƒ์ง€ - [๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ]

Boxplot๋ž€? ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ํ•œ ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ์‹œ๊ฐํ™”ํ•˜์—ฌ ์ด์ƒ์น˜(Outlier)๋“ฑ์„ ํƒ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐํ™” ๋„๊ตฌ. median - ์ค‘์•™๊ฐ’ IQR - 25% ~ 75%์— ํ•ด๋‹นํ•œ ๋ถ€๋ถ„   75th Percentile - ์ œ 3์‚ฌ๋ถ„์œ„์ˆ˜ 25th Percen..

yoon1seok.tistory.com

 

728x90
๋ฐ˜์‘ํ˜•

+ Recent posts