[시각화 도구/Matplotlib - 기본 그래프 도구] 선 그래프
그래프를 이용하면 데이터의 구조와 패턴을 파악하기 용이하다.
또한 다양한 관점에서 데이터에 관한 통찰력을 제공한다.
Matplotlib은 파이썬 표준 시각화 도구라고 부를 수 있을 정도로 2D 평면 그래프에 관한 다양한 포맷과 기능을 지원한다.
비교적 사용법을 익히기 쉽다는 점에서 실무에서 많이 활용된다.
선 그래프는 연속하는 데이터 값들을 직선 또는 곡선으로 연결하여 데이터 값 사이의 관계를 나타낸다.
특히 시계열 데이터와 같이 연속적인 값의 변화와 패턴을 파악하는데 적합하다.
선 그래프를 그리기 위해 통계청에서 제공하는 시도 간 인구 이동 데이터셋을 사용한다.
목차
1. 기본 사용법
4. 그래프 꾸미기
5. 화면 분할하여 그래프 여러 개 그리기 - axe 객체 활용
기본 사용법
# 예제 4-1(1)
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('시도별 전출입 인구수.xlsx', engine='openpyxl', header=0)
df.head()
데이터 시각화에 사용할 matplotlib.pyplot 모듈을 약칭 plt로 임포트한다.
# 예제 4-1(2)
df = df.fillna(method='ffill')
mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')
df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1)
df_seoul.rename({'전입지별': '전입지'}, axis=1, inplace=True)
df_seoul.set_index('전입지', inplace=True)
df_seoul.head(8)
'전출지별' 열에는 누락 데이터(NaN)가 다수 들어 있다.
fillna() 메소드의 method='ffill' 옵션을 사용하면 누락 데이터가 들어 있는 행의 바로 앞에 위치한 행의 데이터 값으로 채운다.
그리고 '전출지별' 열에서 '서울특별시'라는 값을 갖는 데이터만 추출하여 변수 df_seoul에 저장한다.
서울에서 다른 지역으로 전출하는 데이터만 남게된다.
'전출지별'열 값들은 필요가 없어졌으니 drop해준다.
'전입지별'열의 이름을 '전입지'로 바꾸고, '전입지'열을 df_seoul의 행 인덱스로 지정한다.
# 예제 4-1(3)
sr_one = df_seoul.loc['경기도']
sr_one.head()
df_seoul에서 '전입지'가 '경기도'인 행 데이터를 선택하여 sr_one에 저장한다.
# 예제 4-1(4)
plt.plot(sr_one.index, sr_one.values)
선 그래프를 그리는 plot() 함수에 입력할 x, y축 데이터를 선택한다. 시리즈의 인덱스를 x축 데이터로, 데이터 값을 y축 데이터로 plot() 함수에 전달한다.
# 예제 4-1(5)
plt.plot(sr_one)
시리즈 또는 데이터프레임 객체를 plot() 함수에 직접 입력하는 것도 가능하다.
차트 제목, 축 이름 추가
# 예제 4-2
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('시도별 전출입 인구수.xlsx', engine='openpyxl', header=0)
df = df.fillna(method='ffill')
mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')
df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1)
df_seoul.rename({'전입지별': '전입지'}, axis=1, inplace=True)
df_seoul.set_index('전입지', inplace=True)
sr_one = df_seoul.loc['경기도']
plt.plot(sr_one.index, sr_one.values)
plt.title('서울 -> 경기 인구 이동')
plt.xlabel('기간')
plt.ylabel('이동 인구수')
plt.show()
그래프 객체에 차트 제목을 추가할 때는 title() 함수를 사용한다.
x축 이름은 xlabel() 함수를 이용하고, y축 이름은 ylabel() 함수를 활용하여 추가한다.
축 이름과 차트 제목이 제대로 표시되지 않고 네모 박스로 보이는 문제가 있다.
이처럼 Matplotlib에서는 한글을 사용할 때 글자가 깨지는 현상이 발생한다.
Matplotlib 한글 폰트 오류 해결
Matplotplib은 한글 폰트를 지원하지 않는 문제가 있다.
이 문제를 해결하려면 Matplotlib을 사용하는 파이썬 프로그램의 앞부분에 한글 폰트를 지정하는 다음의 코드를 추가한다.
from matplotlib import font_manager, rc
font_path = './malgunsl.ttf' # 폰트 파일 위치
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)
# 예제 4-3
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
font_path = 'C:\Windows\Fonts\malgunsl.ttf'
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)
df = pd.read_excel('시도별 전출입 인구수.xlsx', engine='openpyxl', header=0)
df = df.fillna(method='ffill')
mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')
df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1)
df_seoul.rename({'전입지별': '전입지'}, axis=1, inplace=True)
df_seoul.set_index('전입지', inplace=True)
sr_one = df_seoul.loc['경기도']
plt.plot(sr_one.index, sr_one.values)
plt.title('서울 -> 경기 인구 이동')
plt.xlabel('기간')
plt.ylabel('이동 인구수')
plt.show()
<예제 4-2>의 코드에 한글 폰트 문제를 해결하는 코드를 추가한 것이다.
그래프 꾸미기
위 예제들을 보면 x축 눈금 라벨의 글씨가 겹쳐 잘 보이지 않는 것을 볼 수 있다.
이 문제는 눈금 라벨이 들어갈 만한 충분한 여유 공간이 없어서 발생하는 문제이다.
# 예제 4-4
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
font_path = 'C:\Windows\Fonts\malgunsl.ttf'
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)
df = pd.read_excel('시도별 전출입 인구수.xlsx', engine='openpyxl', header=0)
df = df.fillna(method='ffill')
mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')
df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1)
df_seoul.rename({'전입지별': '전입지'}, axis=1, inplace=True)
df_seoul.set_index('전입지', inplace=True)
sr_one = df_seoul.loc['경기도']
plt.figure(figsize=(14, 5))
plt.xticks(rotation='vertical')
plt.plot(sr_one.index, sr_one.values)
plt.title('서울 -> 경기 인구 이동')
plt.xlabel('기간')
plt.ylabel('이동 인구수')
plt.legend(labels=['서울 -> 경기'], loc='best')
plt.show()
글씨가 들어갈 수 있는 공간을 확보하기 위해 두 가지 방법을 적용한다.
1. 공간을 만들기 위해 figure() 함수로 그림틀의 가로 사이즈를 더 크게 설정한다.
2. xticks() 함수를 활용하여 x축 눈금 라벨을 반시계 방향으로 90도 회전하여 글씨가 서로 겹치지 않게 만든다.
글씨를 회전하기 위해 사용한 rotation='vertical' 옵션에 'vertical' 대신 각도를 나타내는 숫자를 입력해도 된다.
다음은 Matplotlib의 스타일 서식 지정에 대해 알아본다.
색, 폰트 등 디자인적 요소를 사전에 지정된 스타일로 빠르게 일괄 변경한다.
단, 스타일 서식을 지정하는 것은 Matplotlib 실행 환경 설정을 변경하는 것이므로 다른 파일을 실행할 때도 계속 적용되는 점에 유의한다.
# 예제 4-5
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
font_path = 'C:\Windows\Fonts\malgunsl.ttf'
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)
df = pd.read_excel('시도별 전출입 인구수.xlsx', engine='openpyxl', header=0)
df = df.fillna(method='ffill')
mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')
df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1)
df_seoul.rename({'전입지별': '전입지'}, axis=1, inplace=True)
df_seoul.set_index('전입지', inplace=True)
sr_one = df_seoul.loc['경기도']
plt.style.use('ggplot')
plt.figure(figsize=(14, 5))
plt.xticks(size=10, rotation='vertical')
plt.plot(sr_one.index, sr_one.values, marker='o', markersize=10)
plt.title('서울 -> 경기 인구 이동', size=30)
plt.xlabel('기간', size=20)
plt.ylabel('이동 인구수', size=20)
plt.legend(labels=['서울 - > 경기'], loc='best', fontsize=15)
plt.show()
plt.style.use()에 'ggplot'이라는 스타일 서식을 지정한다.
xticks() 함수에 size=10 옵션을 추가하여 폰트 크기를 10으로 설정한다.
plot() 함수에 marker='o' 옵션을 추가하면 원 모양의 점을 마커로 표시한다.
markersize=10 은 마커 사이즈를 10으로 설정하는 옵션이다.
※ Matplotlib 스타일 서식의 종류
# 예제 4-6
import matplotlib.pyplot as plt
print(plt.style.available)
plt.style.available을 통해서 현재 사용 가능한 Matplotlib의 스타일 옵션을 확인할 수 있다.
그래프의 대한 설명을 덧붙이는 주석에 대해 알아보자.
annotate() 함수를 사용한다.
주석 내용을 넣을 위치와 정렬 방법 등을 annotate() 함수에 함께 전달한다.
arrowprops 옵션을 사용하면 텍스트 대신 화살표가 표시된다.
화살표 스타일, 시작점과 끝점의 좌표를 입력한다.
# 예제 4-7
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
font_path = 'C:\Windows\Fonts\malgunsl.ttf'
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)
df = pd.read_excel('시도별 전출입 인구수.xlsx', engine='openpyxl', header=0)
df = df.fillna(method='ffill')
mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')
df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1)
df_seoul.rename({'전입지별': '전입지'}, axis=1, inplace=True)
df_seoul.set_index('전입지', inplace=True)
sr_one = df_seoul.loc['경기도']
plt.style.use('ggplot')
plt.figure(figsize=(14, 5))
plt.xticks(size=10, rotation='vertical')
plt.plot(sr_one.index, sr_one.values, marker='o', markersize=10)
plt.title('서울 -> 경기 인구 이동', size=30)
plt.xlabel('기간', size=20)
plt.ylabel('이동 인구수', size=20)
plt.legend(labels=['서울 - > 경기'], loc='best', fontsize=15)
plt.ylim(50000, 800000)
plt.annotate('',
xy=(20, 620000),
xytext=(2, 290000),
xycoords='data',
arrowprops=dict(arrowstyle='->', color='skyblue', lw=5),
)
plt.annotate('',
xy=(47, 450000),
xytext=(30, 580000),
xycoords='data',
arrowprops=dict(arrowstyle='->', color='olive', lw=5),
)
plt.annotate('인구 이동 증가(1970~1995)',
xy=(10, 400000),
rotation=25,
va='baseline',
ha='center',
fontsize=15,
)
plt.annotate('인구 이동 감소(1995-2017)',
xy=(40, 500000),
rotation=-11,
va='baseline',
ha='center',
fontsize=15,
)
plt.show()
주석을 넣을 여백 공간을 충분히 확보하기 위해 ylim() 함수를 사용하여 y축 범위를 늘려준다.
그리고 annotate() 함수로 화살표와 텍스트 위치를 잡아서 배치한다.
위치를 나타내는 (x, y) 좌표에서 x값은 인덱스 번호를 사용한다. y 좌표값에 들어갈 인구수 데이터는 숫자값이므로 그대로 사용할 수 있다.
annotate() 함수의 rotation 옵션에서 양의 회전 방향은 반시계방향이다.
글자를 위아래 세로 방향으로 정렬하는 va 옵션은 'center', 'top', 'bottom', 'baseline'이 있다.
좌우 가로 방향으로 정렬하는 ha 옵션에는 'center', 'left', 'right'가 있다.
서울특별시와 경기도 간의 인구 이동 변화가 화살표 주석과 함께 선 그래프로 표시된다.
1990년대 중반까지 경기도권 5대 신도시(분당, 일산 등) 개발로 서울 인구의 대규모 경기도 유입이 있었음을 추정할 수 있다.
이 시기를 정점으로 서울을 벗어나 경기권으로 이동하는 인구는 현재까지 계속 감소하는 트렌드를 보이고 있다.
화면 분할하여 그래프 여러 개 그리기 - axe 객체 활용
화면을 여러개로 분할하고 분할한 각 화면에 서로 다른 그래프를 그리는 방법이다.
여러 개의 axe 객체를 만들고, 분할된 화면마다 axe 객체를 하나씩 배정한다.
axe 객체는 각각 서로 다른 그래프를 표현할 수 있다.
한 화면에서 여러 개의 그래프를 비교하거나 다양한 정보를 동시에 보여줄 때 사용하면 좋다.
# 예제 4-8
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
font_path = 'C:\Windows\Fonts\malgunsl.ttf'
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)
df = pd.read_excel('시도별 전출입 인구수.xlsx', engine='openpyxl', header=0)
df = df.fillna(method='ffill')
mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')
df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1)
df_seoul.rename({'전입지별': '전입지'}, axis=1, inplace=True)
df_seoul.set_index('전입지', inplace=True)
sr_one = df_seoul.loc['경기도']
plt.style.use('ggplot')
fig = plt.figure(figsize=(10, 10))
ax1 = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2)
ax1.plot(sr_one, 'o', markersize=10)
ax2.plot(sr_one, marker='o', markerfacecolor='green', markersize=10, color='olive', linewidth=2, label='서울 -> 경기')
ax2.legend(loc='best')
ax1.set_ylim(50000, 800000)
ax2.set_ylim(50000, 800000)
ax1.set_xticklabels(sr_one.index, rotation=75)
ax2.set_xticklabels(sr_one.index, rotation=75)
plt.show()
figure() 함수를 사용하여 그래프를 그리는 그림틀(fig)을 만든다.
figsize 옵션으로 (가로, 세로) 그림틀의 크기를 설정한다.
fig 객체에 add_subplot() 메소드를 적용하여 그림틀을 여러 개로 분할한다.
이때 나눠진 각 부분을 axe 객체라고 부른다.
add_subplot() 메소드의 인자에 '행의 크기, 열의 크기, 서브플롯 순서'를 순서대로 입력한다.
예를 들어 add_subplot(2, 2, 2)은 2행 2열의 두 번째 부분을 의미한다.
ax2 객체에는 label 옵션을 추가하고 legend() 메소드를 적용하여 범례를 표시한다.
또한 y축의 최소값, 최대값 한계를 설정하기 위해 set_ylim() 메소드를 사용한다.
연도를 나타내는 x축 눈금 라벨의 글씨가 서로 겹치지 않도록 set_xtickslabels() 메소드를 사용하여 글자를 반시계 방향으로 75도 회전시킨다.
앞에서 그린 두 번째 그래프에 제목과 축 이름을 추가해본다.
# 예제 4-9
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
font_path = 'C:\Windows\Fonts\malgunsl.ttf'
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)
df = pd.read_excel('시도별 전출입 인구수.xlsx', engine='openpyxl', header=0)
df = df.fillna(method='ffill')
mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')
df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1)
df_seoul.rename({'전입지별': '전입지'}, axis=1, inplace=True)
df_seoul.set_index('전입지', inplace=True)
sr_one = df_seoul.loc['경기도']
plt.style.use('ggplot')
fig = plt.figure(figsize=(20, 5))
ax = fig.add_subplot(1, 1, 1)
ax.plot(sr_one, marker='o', markerfacecolor='orange', markersize=10, color='olive', linewidth=2, label='서울 -> 경기')
ax.legend(loc='best')
ax.set_ylim(50000, 800000)
ax.set_title('서울 -> 경기 인구 이동', size=20)
ax.set_xlabel('기간', size=12)
ax.set_ylabel('이동 인구수', size=12)
ax.set_xticklabels(sr_one.index, rotation=75)
ax.tick_params(axis='x', labelsize=10)
ax.tick_params(axis='y', labelsize=10)
plt.show()
그래프를 1개만 표시하기 위하여 fig.add_subplot(1, 1, 1)과 같이 axe 객체를 1개만 생성하고 변수 ax에 할당한다.
ax 객체에 set_title() 메소드를 적용하여 제목을 추가한다.
set_xlabel() 메소드로 x축 이름을 지정하고, set_ylabel() 메소드로 y축 이름을 지정한다.
tick_params() 메소드로 축 눈금 라벨의 크기를 조절한다.
동일한 그림(axe 객체)에 여러 개의 그래프를 추가하는 것도 가능하다.
# 예제 4-10
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
font_path = 'C:\Windows\Fonts\malgunsl.ttf'
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)
df = pd.read_excel('시도별 전출입 인구수.xlsx', engine='openpyxl', header=0)
df = df.fillna(method='ffill')
mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')
df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1)
df_seoul.rename({'전입지별': '전입지'}, axis=1, inplace=True)
df_seoul.set_index('전입지', inplace=True)
col_years = list(map(str, range(1970, 2018)))
df_3 = df_seoul.loc[['충청남도', '경상북도', '강원도'], col_years]
plt.style.use('ggplot')
fig = plt.figure(figsize=(20, 5))
ax = fig.add_subplot(1, 1, 1)
ax.plot(col_years, df_3.loc['충청남도', :], marker='o', markerfacecolor='green', markersize=10, color='olive', linewidth=2, label='서울 -> 충남')
ax.plot(col_years, df_3.loc['경상북도', :], marker='o', markerfacecolor='blue', markersize=10, color='skyblue', linewidth=2, label='서울 -> 경북')
ax.plot(col_years, df_3.loc['강원도', :], marker='o', markerfacecolor='red', markersize=10, color='magenta', linewidth=2, label='서울 -> 강원')
ax.legend(loc='best')
ax.set_title('서울 -> 충남, 경북, 강원 인구 이동', size=20)
ax.set_xlabel('기간', size=12)
ax.set_ylabel('이동 인구수', size=12)
ax.set_xticklabels(col_years, rotation=90)
ax.tick_params(axis='x', labelsize=10)
ax.tick_params(axis='y', labelsize=10)
plt.show()
서울특별시에서 충청남도, 경상북도, 강원도로 이동한 인구 변화 그래프 3개를 하나의 같은 화면에 그린다.
먼저 각 지역에 해당하는 행을 선택하고, 동일한 axe객체(ax)에 선 그래프로 출력하는 plot() 메소드를 3번 적용한다.
서울에서 서로 다른 3개 지역으로 빠져나간 인구 이동을 비교 파악하기 쉽게 그래프가 그려졌다.
특히 지리적으로 가까운 충남 지역으로 이동한 인구가 다른 두 지역에 비해 많은 편이다.
전반적으로 1970~80년대에는 서울에서 지방으로 전출하는 인구가 많았으나, 1990년 이후로는 줄곧 감소하는 패턴을 보이고 있다.
# 예제 4-11
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
font_path = 'C:\Windows\Fonts\malgunsl.ttf'
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)
df = pd.read_excel('시도별 전출입 인구수.xlsx', engine='openpyxl', header=0)
df = df.fillna(method='ffill')
mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')
df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1)
df_seoul.rename({'전입지별': '전입지'}, axis=1, inplace=True)
df_seoul.set_index('전입지', inplace=True)
col_years = list(map(str, range(1970, 2018)))
df_4 = df_seoul.loc[['충청남도', '경상북도', '강원도', '전라남도'], col_years]
plt.style.use('ggplot')
fig = plt.figure(figsize=(20, 10))
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
ax4 = fig.add_subplot(2, 2, 4)
ax1.plot(col_years, df_4.loc['충청남도', :], marker='o', markerfacecolor='green', markersize=10, color='olive', linewidth=2, label='서울 -> 충남')
ax2.plot(col_years, df_4.loc['경상북도', :], marker='o', markerfacecolor='blue', markersize=10, color='skyblue', linewidth=2, label='서울 -> 경북')
ax3.plot(col_years, df_4.loc['강원도', :], marker='o', markerfacecolor='red', markersize=10, color='magenta', linewidth=2, label='서울 -> 강원')
ax4.plot(col_years, df_4.loc['전라남도', :], marker='o', markerfacecolor='orange', markersize=10, color='yellow', linewidth=2, label='서울 -> 전남')
ax1.legend(loc='best')
ax2.legend(loc='best')
ax3.legend(loc='best')
ax4.legend(loc='best')
ax1.set_title('서울 -> 충남 인구 이동', size=15)
ax2.set_title('서울 -> 경북 인구 이동', size=15)
ax3.set_title('서울 -> 강원 인구 이동', size=15)
ax4.set_title('서울 -> 전남 인구 이동', size=15)
ax1.set_xticklabels(col_years, rotation=90)
ax2.set_xticklabels(col_years, rotation=90)
ax3.set_xticklabels(col_years, rotation=90)
ax4.set_xticklabels(col_years, rotation=90)
plt.show()
서울특별시에서 충청남도, 경상북도, 강원도, 전라남도 4개 지역으로 이동한 인구 변화 그래프를 그린다.
ax1~ax4까지 4개의 axe 객체를 생성한다.
각 지역에 해당하는 4개의 행을 선택하고, axe 객체에 하나씩 plot() 메소드를 적용한다.
※ Matplotlib에서 사용할 수 있는 색의 종류
# 예제 4-12
import matplotlib
colors={}
for name, hex in matplotlib.colors.cnames.items():
colors[name] = hex
print(colors)
위 코드로 Matplotlib에서 사용할 수 있는 색상의 종류를 확인할 수 있다.
![]() |
|
'공부 > 파이썬 머신러닝 판다스 데이터 분석' 카테고리의 다른 글
[시각화 도구/Matplotlib - 기본 그래프 도구] 막대 그래프 (1) | 2022.11.16 |
---|---|
[시각화 도구/Matplotlib - 기본 그래프 도구] 면적 그래프 (0) | 2022.11.16 |
[데이터 살펴보기/판다스 내장 그래프 도구 활용] (0) | 2022.10.28 |
[데이터 살펴보기/통계 함수 적용] 상관계수 (0) | 2022.10.28 |
[데이터 살펴보기/통계 함수 적용] 표준편차 (0) | 2022.10.28 |