파이썬으로 데이터 분석을 하기 위한 필수 패키지 삼대장이 있다. 바로 Pandas, Numpy, 그리고 Matplotlib이다. 세 개의 패키지 모두 아나콘다를 설치했다면 추가 설치 없이 사용할 수 있다. 그러나 아나콘다가 아닌 다른 에디터(Pycharm, Visual Studio Code 등)를 사용하는 경우에는 추가로 패키지 설치가 필요한 경우가 있을 수 있으니 잘 알아보고 설치한 후 실습을 진행하자. (설치 command도 실습 과정에 명시해 드릴 예정이라 일단 실습 따라오시면 될 듯!)
판다스(Pandas)는 파이썬 데이터 처리를 위한 라이브러리다. 파이썬을 이용한 데이터 분석 작업에서 필수적인 라이브러리로 알려져 있다. 아래의 링크는 Pandas 공식 문서가 있는 사이트니 참고하도록 하자.
Pandas 공식 사이트: https://pandas.pydata.org/pandas-docs/stable/
아나콘다를 설치했거나 Google Colab을 사용할 경우, Pandas가 기본적으로 포함되어 있다. 그러나 이러한 경우가 아니라면 아래의 명령어를 통해 Pandas를 별도로 설치할 수 있다.
pip install pandas
ipython 쉘을 실행하여 pandas 버전을 확인하면 위와 같다. Pandas의 경우 pd의 명칭으로 import 하는 것이 관례다.
import pandas as pd
Pandas는 아래의 두 가지의 구조화된 데이터를 사용한다.
이 중 행과 열로 이루어진 2차원 구조의 데이터프레임이 가장 많이 사용된다. 실습은 주피터 노트북을 활용하여 진행할 예정이다. (본인 편한 환경에서 실습하시면 될 듯)
시리즈(Series)는 데이터가 순차적으로 나열된 1차원 배열의 형태를 나타낸다. 시리즈 데이터는 인덱스(index)와 값(value)으로 구성되며, 이 둘은 서로 매칭되는 관계에 있다. 키(key)와 값(value)의 쌍(pair)으로 구성된 딕셔너리(dictionary)와 구조가 유사하다고 볼 수 있다. 아래의 실습을 통해 확인해 보자.
import pandas as pd # pandas 패키지를 pd라는 명칭으로 import 함.
# 값(가격)에 해당하는 인덱스(상품)를 부여하는 배열 sr 생성.
sr = pd.Series([17000, 18000, 1000, 5000],
index = ["피자", "치킨", "콜라", "맥주"])
print("시리즈 출력:")
print('-'*15)
print(sr)
# 실행 화면
시리즈 출력:
---------------
피자 17000
치킨 18000
콜라 1000
맥주 5000
dtype: int64
딕셔너리와 시리즈의 구조가 유사하여 딕셔너리를 시리즈로 변환하는 방법도 자주 활용된다. 이 과정은 Pandas의 Series() 함수를 통해 간단히 수행할 수 있으며, 변환하고자 하는 딕셔너리를 Series() 함수의 인자로 전달하면 된다. 아래의 실습을 통해 살펴보자.
import pandas as pd
# 값(가격)에 해당하는 key(상품)를 부여하는 딕셔너리 생성
dict = {"피자":17000, "치킨":18000, "콜라":1000, "맥주":5000}
# 딕셔너리를 시리즈로 변환
sr = pd.Series(dict)
print("시리즈 출력:")
print('-'*15)
print(sr)
# 실행 화면
시리즈 출력:
---------------
피자 17000
치킨 18000
콜라 1000
맥주 5000
dtype: int64
딕셔너리에서 각 key는 시리즈의 index로, 해당 key의 value는 시리즈의 데이터 값으로 설정되는 것을 확인할 수 있다.
아래와 같이 시리즈의 값(values)과 인덱스(index)를 따로 출력할 수도 있다.
import pandas as pd
sr = pd.Series([17000, 18000, 1000, 5000],
index = ["피자", "치킨", "콜라", "맥주"])
# 시리즈의 값을 출력하는 구문
print("시리즈의 값: {}".format(sr.values))
# 시리즈의 인덱스를 출력하는 구문
print("시리즈의 인덱스: {}".format(sr.index))
# 출력 화면
시리즈의 값: [17000 18000 1000 5000]
시리즈의 인덱스: Index(['피자', '치킨', '콜라', '맥주'], dtype='object')
index는 Pandas에서 데이터의 순서와 주소를 관리하는 핵심적인 기능을 수행한다.
import pandas as pd
# 리스트 데이터 정의
list = [10, 20, 30, 40, 50]
# 리스트를 시리즈로 변환
sr = pd.Series(list)
print("시리즈 출력:")
print('-'*15)
print(sr)
# 출력 화면
시리즈 출력:
---------------
0 10
1 20
2 30
3 40
4 50
dtype: int64
인덱스를 활용하여 특정 원소에 접근할 수도 있다. 하나의 원소, 또는 여러 원소를 선택할 수 있으며 접근 방법은 파이썬의 리스트와 동일하다. (인덱스 사용 or 슬라이싱 기법 적용)
참고) 리스트 문법 내용: https://bing-su-b.tistory.com/66
import pandas as pd
# 리스트 데이터 정의
list = [10, 20, 30, 40, 50]
# 리스트를 시리즈로 변환
sr = pd.Series(list)
# 단일 원소 선택: 시리즈의 첫 번째 원소를 선택
print(sr[0])
print()
# 다중 원소 선택: 시리즈의 두 번째부터 네 번째 원소까지를 선택
print(sr[1:4])
# 출력 화면
10
1 20
2 30
3 40
dtype: int64
데이터프레임은 같은 길이를 가진 1차원 배열, 즉, 원소의 개수가 동일한 여러 시리즈로 이루어져 있다. 각 시리즈는 모여 데이터프레임의 열을 구성하기 된다. 즉 데이터프레임은 행과 열을 가지는 자료구조라고 할 수 있다. 이차원 배열을 pandas의 DataFrame() 함수를 이용하여 데이터프레임으로 변환할 수 있다.
import pandas as pd
values = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # 구성 요소 - 값
index = ['one', 'two', 'three'] # 구성 요소 - 행 인덱스
columns = ['A', 'B', 'C'] # 구성 요소 - 열 이름
# 값, 인덱스, 열을 구성 요소로 하는 데이터프레임 df 생성.
df = pd.DataFrame(values, index=index, columns=columns)
print("데이터프레임 출력:")
print('-'*18)
print(df)
# 출력 화면
데이터프레임 출력:
------------------
A B C
one 1 2 3
two 4 5 6
three 7 8 9
아래와 같은 코드를 활용하면 생성된 데이터프레임에서 인덱스(index), 열(columns), 값(values)의 구성 요소를 각각 출력할 수 있다.
import pandas as pd
values = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
index = ['one', 'two', 'three']
columns = ['A', 'B', 'C']
df = pd.DataFrame(values, index=index, columns=columns)
# 데이터프레임의 인덱스를 출력하는 구문
print("데이터프레임의 인덱스: {}".format(df.index))
# 데이터프레임의 열을 출력하는 구문
print("데이터프레임의 열 이름: {}".format(df.columns))
# 데이터프레임의 값을 출력하는 구문
print("데이터프레임의 값:")
print('-'*18)
print(df.values)
# 출력 화면
데이터프레임의 인덱스: Index(['one', 'two', 'three'], dtype='object')
데이터프레임의 열 이름: Index(['A', 'B', 'C'], dtype='object')
데이터프레임의 값:
------------------
[[1 2 3]
[4 5 6]
[7 8 9]]
데이터프레임은 리스트(List), 시리즈(Series), 딕셔너리(dict), Numpy 패키지의 ndarrays, 또 다른 데이터프레임으로부터 생성할 수 있다. 일단 여기서는 리스트와 딕셔너리를 사용하여 데이터프레임을 생성해보고자 한다.
# 리스트로 데이터프레임 생성
import pandas as pd
data = [
['1000', 'Steve', 90.72],
['1001', 'James', 78.09],
['1002', 'Yuri', 98.43],
['1003', 'Jane', 64.19],
['1004', 'Tony', 81.30],
['1005', 'Judy', 99.14]
]
df = pd.DataFrame(data)
print(df)
# 출력 화면
0 1 2
0 1000 Steve 90.72
1 1001 James 78.09
2 1002 Yuri 98.43
3 1003 Jane 64.19
4 1004 Tony 81.30
5 1005 Judy 99.14
생성된 데이터프레임에 열(columns)을 지정할 수도 있다. 열 이름을 지정하고 출력해 보자.
import pandas as pd
data = [
['1000', 'Steve', 90.72],
['1001', 'James', 78.09],
['1002', 'Yuri', 98.43],
['1003', 'Jane', 64.19],
['1004', 'Tony', 81.30],
['1005', 'Judy', 99.14]
]
df = pd.DataFrame(data, columns=['학번', '이름', '점수'])
print(df)
# 출력 화면
학번 이름 점수
0 1000 Steve 90.72
1 1001 James 78.09
2 1002 Yuri 98.43
3 1003 Jane 64.19
4 1004 Tony 81.30
5 1005 Judy 99.14
파이썬 자료구조 중 하나인 딕셔너리(dictionary)를 통해서도 데이터프레임을 생성할 수 있다. 딕셔너리의 key는 데이터프레임의 열 이름으로 저장되고, value에 해당하는 리스트는 시리즈로 변환되어 데이터프레임의 열을 형성한다. 이때 DataFrame() 함수의 인자로는 열의 데이터를 나타내는 여러 개의 리스트를 원소로 가지는 딕셔너리를 지정하면 된다.
# 딕셔너리로 데이터프레임 생성
import pandas as pd
data = {
'학번' : ['1000', '1001', '1002', '1003', '1004', '1005'],
'이름' : ['Steve', 'James', 'Yuri', 'Jane', 'Tony', 'Judy'],
'점수' : [90.72, 78.09, 98.43, 64.19, 81.30, 99.14]
}
df = pd.DataFrame(data)
print(df)
# 출력 화면
학번 이름 점수
0 1000 Steve 90.72
1 1001 James 78.09
2 1002 Yuri 98.43
3 1003 Jane 64.19
4 1004 Tony 81.30
5 1005 Judy 99.14
아래의 명령어는 데이터프레임에서 원하는 구간만 확인하기 위한 명령어로서 유용하게 사용된다.
위에서 사용한 데이터프레임을 그대로 사용하여 실습을 진행하자.
''' 앞 부분을 3개만 봄. '''
print(df.head(3))
# 출력 화면
학번 이름 점수
0 1000 Steve 90.72
1 1001 James 78.09
2 1002 Yuri 98.43
''' 뒷 부분을 3개만 봄. '''
print(df.tail(3))
# 출력 화면
학번 이름 점수
3 1003 Jane 64.19
4 1004 Tony 81.30
5 1005 Judy 99.14
''' 학번에 해당되는 열을 보기 '''
print(df['학번'])
# 출력 화면
0 1000
1 1001
2 1002
3 1003
4 1004
5 1005
Name: 학번, dtype: object
Pandas는 CSV, 텍스트 Excel, SQL, HTML, JSON 등 다양한 데이터 파일을 읽고 데이터프레임을 생성할 수 있다. 이를 통해 외부 데이터를 Pandas의 데이터프레임 형태로 가져온 후, Pandas가 제공하는 다양한 데이터 처리 및 분석 기능을 활용할 수 있다. 또한, 데이터프레임을 다양한 형태의 파일로 저장하는 것도 가능하다.
Pandas가 지원하는 주요 입출력(I/O) 기능은 다음과 같다.
이 외에도 Pandas는 Parquet, Msgpack, HDF5, SAS, Stata, SPSS 등 다양한 형태의 데이터 소스를 지원한다. 자세한 사용 방법과 옵션은 Pandas 공식 문서를 참고하자.
링크: https://pandas.pydata.org/docs/user_guide/io.html
이번 실습에서는 csv 파일을 읽을 것이다. 아래의 파일을 통해 실습을 진행하자.
해당 파일을 아래와 같이 실습 파일이 있는 경로에 저장하자.
저장을 끝내고 아래의 코드로 실습을 진행하면 결과가 아래와 같이 뜬다.
import pandas as pd
# csv 파일을 읽어 와서 df에 저장.
df = pd.read_csv('test.csv')
# 저장된 데이터프레임 출력
print(df)
# 출력 화면
학번 이름 점수
0 1000 Steve 90.72
1 1001 James 78.09
2 1002 Yuri 98.43
3 1003 Jane 64.19
4 1004 Tony 81.30
5 1005 Judy 99.14
csv 파일을 읽어와 데이터프레임을 생성하면 위와 같이 인덱스가 자동을 부여되는 것을 확인할 수 있다. 파일에 열 이름이 있는 경우 자동으로 인식하며, 없는 경우에는 header=None 옵션을 사용하여 처리할 수 있다. 또한, 특정 열을 데이터프레임의 인덱스로 지정하고자 할 때는 index_col 매개변수를 사용하면 된다.
이제 인덱스를 출력하는 실습도 진행해 보자.
# df 데이터프레임의 인덱스 출력
print(df.index)
# 출력 화면
RangeIndex(start=0, stop=6, step=1) # 시작 번호: 0, 끝 번호: 6, 1씩 증가
넘파이(Numpy)는 수치 데이터를 다루는 파이썬 패키지다. Numpy의 핵심이라고 불리는 다차원 행렬 자료구조인 ndarray를 통해 벡터 및 행렬을 사용하는 선형대수 계산에서 해당 패키지가 주로 사용된다. Numpy는 편의성만이 아닌, 속도 면에서도 순수 파이썬에 비해 압도적으로 빠르다는 장점이 있다.
아나콘다를 설치하지 않았다면 아래의 명령어를 통해 Numpy를 별도로 설치할 수 있다.
pip install numpy
ipython 쉘을 실행하여 numpy 버전을 확인하면 위와 같다. Numpy의 경우 np의 명칭으로 import 하는 것이 관례다.
import numpy as np
Numpy에서의 핵심은 ndarray(n차원 배열) 객체다. np.array()는 리스트, 튜플, 배열로부터 ndarray 객체를 생성한다. 파이썬 자료구조 중 하나인 리스트를 활용하여 1차원 배열을 생성하는 실습을 진행해 보자.
import numpy as np # numpy 패키지를 np라는 명칭으로 import 함.
# 1차원 배열을 저장하는 vec 생성.
vec = np.array([1, 2, 3, 4, 5])
print(vec)
# 출력 화면
[1 2 3 4 5]
2차원 배열을 생성할 수도 있다. 주의할 점은 array() 안에는 하나의 리스트만 들어가므로 이 경우에는 리스트의 리스트를 넣어야 한다. 아래의 실습을 진행하며 이해해 보자.
import numpy as np
mat = np.array([[10, 20, 30], [60, 70, 80]])
print(mat)
# 출력 화면
[[10 20 30]
[60 70 80]]
아래의 코드로 두 배열의 타입을 확인할 수 있다.
import numpy as np
vec = np.array([1, 2, 3, 4, 5])
mat = np.array([[10, 20, 30], [60, 70, 80]])
print("vec의 타입 :", type(vec))
print("mat의 타입 :", type(mat))
# 출력 화면
vec의 타입 : <class 'numpy.ndarray'>
mat의 타입 : <class 'numpy.ndarray'>
vec과 mat 둘 다 numpy의 ndarray 객체로 생성된 배열이므로 동일하게 타입이 numpy.ndarray라고 나온다.
Numpy 배열에는 축의 개수(ndim)와 크기(shape)라는 개념이 존재하는데, 배열의 크기를 정확히 숙지하는 것이 딥 러닝에서는 매우 중요하다. 축의 개수와 크기가 어떤 의미를 가지는지에 대해서는 머신 러닝을 다루며 벡터와 행렬 연산을 설명할 때 자세히 설명하도록 하겠다. 축의 개수와 크기의 출력은 아래와 같은 코드로 할 수 있다.
import numpy as np
vec = np.array([1, 2, 3, 4, 5])
mat = np.array([[10, 20, 30], [60, 70, 80]])
print("vec의 축의 개수 :", vec.ndim)
print("vec의 크기(shape) :", vec.shape)
print("mat의 축의 개수 :", mat.ndim)
print("mat의 크기(shape) :", mat.shape)
# 출력 화면
vec의 축의 개수 : 1
vec의 크기(shape) : (5,)
mat의 축의 개수 : 2
mat의 크기(shape) : (2, 3)
리스트를 활용하는 방법 외에 ndarray를 만드는 다양한 다른 방법 또한 존재한다. 따라서 이번에는 다양한 배열을 생성하는 방법에 대해 다룰 예정이다.
- np.zeros() : 배열의 모든 원소에 0을 삽입한다.
# 모든 값이 0인 2*3 배열 생성
import numpy as np
zero_mat = np.zeros((2, 3))
print(zero_mat)
# 출력 결과
[[0. 0. 0.]
[0. 0. 0.]]
- np.ones() : 배열의 모든 원소에 1을 삽입한다.
# 모든 값이 1인 2*3 배열 생성.
import numpy as np
one_mat = np.ones((2, 3))
print(one_mat)
# 출력 화면
[[1. 1. 1.]
[1. 1. 1.]]
- np.full() : 배열에 사용자가 저장한 값을 삽입한다.
# 모든 값이 특정 상수(7)인 2*2 배열 생성.
import numpy as np
same_value_mat = np.full((2, 2), 7)
print(same_value_mat)
- np.eye() : 주대각성분이 1이고 나머지는 0인 2차원 배열을 생성한다.
# 대각선 값이 1이고 나머지 값이 0인 2차원 배열을 생성.
import numpy as np
eye_mat = np.eye(3)
print(eye_mat)
# 출력 화면
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
- np.random.random() : 임의의 값을 가지는 배열을 생성한다.
# 임의의 값으로 채워진 2*2 배열 생성
import numpy as np
random_mat = np.random.random((2, 2))
print(random_mat)
# 출력 화면
[[0.94639864 0.91739953]
[0.4739559 0.28905063]]
이 외에도 Numpy에는 배열을 만드는 방법이 존재하므로 필요한 방법을 사용하여 배열을 생성할 수 있다.
- np.arange(n) : 0부터 (n-1)까지의 값을 가지는 배열을 생성한다.
# 0부터 9까지의 값을 가지는 배열을 생성한다.
import numpy as np
range_vec = np.arange(10)
print(range_vec)
# 출력 결과
[0 1 2 3 4 5 6 7 8 9]
- np.arange(i, j, k) : i부터 (j-1)까지 k씩 증가하는 배열을 생성한다.
# 1부터 9까지 +2씩 적용되는 범위
import numpy as np
n = 2
range_n_step_vec = np.arange(1, 10, n)
print(range_n_step_vec)
# 출력 화면
[1 3 5 7 9]
np.reshape()은 내부 데이터는 변경하지 않으면서 배열의 구조를 바꾼다. 0부터 29까지의 숫자를 생성하는 arange(30)을 수행한 후, 원소의 개수가 30개이므로 5행 6열의 행렬로 변경하는 실습을 진행해 보자.
import numpy as np
reshape_mat = np.array(np.arange(30)).reshape((5, 6))
print(reshape_mat)
# 출력 화면
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]
[24 25 26 27 28 29]]
ndarray를 통해 만든 다차원 배열은 파이썬의 자료구조인 리스트(List)처럼 슬라이싱(slicing) 기능을 지원한다. 슬라이싱 기능을 사용하여 특정 행이나 열들의 원소들을 접근할 수 있다.
''' 2*3 행렬 생성 '''
import numpy as np
mat = np.array([[1, 2, 3], [4, 5, 6]])
print(mat)
# 출력 결과
[[1 2 3]
[4 5 6]]
''' 첫번째 행 출력 '''
import numpy as np
mat = np.array([[1, 2, 3], [4, 5, 6]])
slicing_mat = mat[0, :]
print(slicing_mat)
# 출력 결과
[1, 2, 3]
''' 두번째 열 출력 '''
import numpy as np
mat = np.array([[1, 2, 3], [4, 5, 6]])
slicing_mat = mat[:, 1]
print(slicing_mat)
# 출력 결과
[2, 5]
기존의 슬라이싱과 동일하게 진행하면 된다. 슬라이싱 까먹으신 분들은 이 링크 참고해 주세요.
슬라이싱을 사용하면 배열로부터 부분 배열을 추출할 수 있지만, 연속적이지 않은 원소로 배열을 만들고 싶을 때는 슬라이싱만으로는 만들 수 없다. 예를 들면 2행 2열의 원소와 5행 5열의 원소를 뽑아서 하나의 배열로 만들고자 하는 경우다. 이런 경우에는 인덱싱을 이용하여 배열을 구성할 수 있다. 인덱싱은 원하는 위치의 원소들을 뽑을 수 있다.
''' 2*3 행렬 생성. '''
import numpy as np
mat = np.array([[1, 2], [4, 5], [7, 8]])
print(mat)
# 출력 화면
[[1 2]
[4 5]
[7 8]]
''' 특정 위치(1행 0열)의 원소(4) 가져오기 '''
import numpy as np
mat = np.array([[1, 2], [4, 5], [7, 8]])
print(mat[1, 0])
# 출력 화면
4
''' 특정 위치 원소 두 개를 가져와 새로운 배열 생성 '''
# mat[[2행, 1행], [0열, 1열]]
import numpy as np
mat = np.array([[1, 2], [4, 5], [7, 8]])
indexing_mat = mat[[2, 1], [0, 1]]
print(indexing_mat)
# 출력 화면
[7, 5]
Numpy를 사용하면 배열간 연산을 손쉽게 수행할 수 있다. 사칙연산자(+, -, *, /)를 사용할 수 있거나 np.add(), np.subtract(), np.multiply(), np.divide()를 사용할 수 있다. 해당 연산자를 사용하면 요소별 연산이 수행된다. 아래의 실습을 통해 Numpy 연산에 대해 이해해 보자.
''' 덧셈(add) 연산 수행 '''
import numpy as np
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
result1 = x + y
result2 = np.add(x, y)
print(result1)
print(result2)
# 출력 화면
[5 7 9]
[5 7 9]
''' 뺼셈(subtract) 연산 수행 '''
result1 = x - y
result2 = np.subtract(x, y)
print(result1)
print(result2)
# 출력 화면
[-3 -3 -3]
[-3 -3 -3]
''' 곱셈(multiply) 연산 수행 '''
result1 = result1 * x
result2 = np.multiply(result2, x)
print(result1)
print(result2)
# 출력 화면
[-3 -6 -9]
[-3 -6 -9]
''' 나눗셈(divide) 연산 수행 '''
result1 = result1 / x
result2 = np.divide(result2, x)
print(result1)
print(result2)
# 출력 화면
[-3. -3. -3.]
[-3. -3. -3.]
위에서 *를 통해 수행한 것은 요소별 곱을 수행한 결과다. Numpy에서 벡터와 행렬곱을 수행하기 위해서는 dot() 함수를 사용해야 한다. 아래의 실습을 진행해 보자.
import numpy as np
mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[5, 6], [7, 8]])
mat3 = np.dot(mat1, mat2)
print(mat3)
# 출력 화면
[[19 22]
[43 50]]
맷플롯립(Matplotlib)은 데이터를 차트(chart)나 플롯(plot)으로 시각화하는 패키지다. 데이터 분석 이전이나 후에 데이터 이해를 위한 시각화로 해당 패키지를 사용할 수 있다.
아나콘다를 설치하지 않았다면 아래의 명령어를 통해 Matplotlib을 별도로 설치할 수 있다.
pip install matplotlib
ipython 쉘을 실행하여 matplotlib 버전을 확인하면 위와 같다. 아래 코드와 같이 Matplotlib의 경우 주요 모듈인 pyplot을 관례상 plt라는 명칭으로 임포트 한다.
import matplotlib.pyplot as plt
matplotlib.pyplot 모듈의 함수들을 사용하여 실습을 진행할 예정이다. plot() 함수는 라인 플롯을 그리는 기능을 수행한다. plot() 함수에 x축과 y축 값을 기재하고 show() 함수를 통해 그래프가 화면에 나타나도록 해 보자. title() 함수를 사용하면 그래프의 제목을 지정할 수 있다. 참고로 주피터 노트북에서는 show() 함수를 사용하지 않아도 그래프가 자동으로 랜더링 되므로 그래프가 시각화된다. 그러나 다른 개발 환경에서 사용할 때도 있으므로 show()를 코드에 삽입하여 실습을 진행할 예정이다.
import matplotlib.pyplot as plt
plt.title('test')
plt.plot([1, 2, 3, 4], [2, 4, 8, 6])
plt.show()
x축과 y축 각각에 축이름을 삽입하고 싶다면 xlabel('label_name')과 ylabel('label_name')을 사용하면 된다. 위의 실습에서 사용한 그래프에 hours와 score라는 축이름을 각각 추가해 보자.
import matplotlib.pyplot as plt
plt.title('test')
plt.plot([1, 2, 3, 4], [2, 4, 8, 6])
plt.xlabel('hours')
plt.ylabel('score')
plt.show()
다수의 plot을 하나의 그래프에 나타낼 수도 있다. 여러 개의 라인 플롯을 동시에 사용할 경우에는 각 선이 어떤 데이터를 나타내는지를 보여주기 위해 범례(legend)를 사용할 수 있다. 아래의 실습을 통해 해당 내용을 확인해 보자.
import matplotlib.pyplot as plt
plt.title('students')
plt.plot([1, 2, 3, 4], [2, 4, 8, 6]) # line_1
plt.plot([1.5, 2.5, 3.5, 4.5], [3, 5, 8, 10]) # line_2
plt.xlabel('hours')
plt.ylabel('score')
plt.legend(['A student', 'B student']) # 범례 삽입
plt.show()
[ Python ] 날짜와 시간 다루기 (0) | 2023.11.13 |
---|---|
[ Python ] 금융 데이터 분석을 위한 실습 환경 준비하기(2) (1) | 2023.08.03 |
[ Python ] 금융 데이터 분석을 위한 실습 환경 준비하기(1) (0) | 2023.08.03 |
댓글 영역