- 판다 스란
Pandas는 쉽고 직관적인 관계형 또는 분류된 데이터로 작업할 수 있도록 설계된 빠르고 유연하며 표현이 풍부한 데이터 구조를 제공하는 Python 패키지이다.
적합한 사용용도
- SQL 테이블 또는 Excel 스프레드 시트에서와 같이 이질적으로 유형이 지정된 열이 있는 데이블 형식 데이터
- 정렬되고 정렬되지 않은 시계열 데이터
- 행 및 열 레이블이 포함된 임의의 행렬 데이터
- 다른 형태의 관찰 / 통계 데이터 세트
Pandas import 하기 & 시각화를 위한 matplotlib import 하기
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
[1].데이터 오브젝트 생성하기
데이터 오브젝트는 ‘데이터를 담고 있는 그릇’이라고 생각하시면 쉬운데요. 여러분이 pandas에서 자주 사용하시게 될 데이터 오브젝트는 Series와 DataFrame 이 있습니다. 이 두 종류의 데이터 오브젝트를 잘 이해하고 사용하는 것이 pandas의 전부라고 해도 과언이 아닐 정도로 중요합니다. 그렇다면 이 두 종류의 ‘그릇’의 차이점은 무엇일까요? 바로 데이터를 담는 그릇의 ‘형태’가 다른데요. 쉽게 말하자면 Series는 1차원 배열로, DataFrame 은 2차원 배열로 데이터를 담고 있다고 생각하시면 됩니다.
1. series 예시
Pandas의 중요한 데이터 오브젝트 중 하나인 Series는 기본적으로 아래와 같이 값의 리스트를 넘겨주어 만들 수 있습니다. 또한 값이 위치하고 있는 정보인 인덱스(index)가 Series에 같이 저장되게 되는데요. 따로 전달해주지 않는 한 기본적으로 0부터 시작하여 1씩 증가하는 정수 인덱스가 사용됨을 알 수 있습니다.
s = pd.Series([1,2,3,4,5,6,7,8,0])
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 0
dtype: int64
2. DataFrame 예시
앞서 설명드린 것처럼 DataFrame 은 2차원 배열의 형태를 띠고 있습니다. 따라서 우리가 자주 보는 표 형태와 같이 두 가지의 기준에 따라 데이터를 담고 있습니다. 아래의 예제에서는 첫 번째 기준은 날짜, 두 번째 기준은 장소(A, B, C, D라는 네 곳의 위치) 1에 따라 측정된 어떤 값들이 담겨 있다고 생각하면 쉬울 것 같습니다. DataFrame을 만들기 위해서는 pd.DataFrame()라는 클래스 생성자를 사용하며, 행에 해당하는 기준(첫 번째 기준)인 인덱스를 index라는 인수로 전달하며, 열에 해당하는 기준(두 번째 기준)인 칼럼을 columns이라는 인수로 전달합니다. 여기에서는 인덱스로 pd.date_range()를 사용하여 날짜 값들을 만들어 전달해 주었고, 칼럼의 이름은 A, B, C, D라는 이름이 담긴 리스트로 넣어보았습니다.
import numpy as np
dates = pd.date_range('20220211', periods=6)
test_df = pd.DataFrame(np.random.randn(6,4), index = dates, columns=list('1234'))
#pd.DataFrame(6행4열, 행 = dates , 열=list('1234'))
print(test_df)
1 2 3 4
2022-02-11 1.956898 -0.122927 -0.931170 0.015135
2022-02-12 0.030996 -0.669072 -0.332000 -0.135516
2022-02-13 -1.498388 -0.052584 0.417320 0.936394
2022-02-14 0.840114 -0.932452 -0.105882 -0.107110
2022-02-15 -1.013161 -0.556173 1.116761 -0.258014
2022-02-16 0.027746 0.258323 0.953349 1.009835
[2]. 데이터 확인하기
- 맨 앞의 자료 알아보기 head()
test_df.head(3)
1 2 3 4
2022-02-11 0.406779 1.065839 -1.186665 -1.983997
2022-02-12 0.812809 -0.122140 -0.853396 0.419013
2022-02-13 -0.121689 -1.129283 -0.113698 -1.522146
- 마지막의 자료 알아보기 tail()
test_df.tail(2)
1 2 3 4
2022-02-15 -0.373809 0.263235 0.961776 0.497790
2022-02-16 -0.283699 0.259866 -0.175386 -0.287302
- DataFrame의 인덱스를 보려면. index 속성 사용
- 칼럼을 보려면. columns 속성 사용
- 안에 들어있는 numpy 데이터를 보려면. values 속성 사용
- . describe() 메서드는 생성했던 DataFrame의 간단한 통계 정보를 보여줍니다. 칼럼 별로 데이터의 개수(count), 데이터의 평균값(mean), 표준 편차(std), 최솟값(min), 4분 위수(25%, 50%, 75%), 그리고 최댓값(max)들의 정보를 알 수 있습니다.
- . T 속성은 DataFrame에서 index와 column을 바꾼 형태의 DataFrame입니다. pandas.DataFrame.T 에는. T를 ‘Transpose index and columns’와 같이 설명해 놓고 있어서index와 column을 바꾼 후 리턴 값으로 돌려주는 메서드로 착각할 수 있습니다. 따라서. T()로 호출하는 경우가 있으실 텐데, 그렇게 해보니 에러가 나는군요. 메서드가 아니라 미리 계산되어 저장되어 있는 ‘속성’이라는 점을 다시 강조합니다.
- 그리고. sort_index()라는 메서드로 행과 열 이름을 정렬하여 나타낼 수도 있습니다. 정렬할 대상 축을 결정할 때에는 axis를 이용합니다. axis=0라고 써주면 인덱스를 기준으로 정렬하며(기본값), axis=1라고 써주면 칼럼을 기준으로 정렬합니다. 정렬의 방향에 대한 파라미터는 ascending를 이용합니다. ascending=True는 오름차순 정렬을 하겠다는 것이고(기본값), ascending=False는 내림차순 정렬을 하겠다는 의미입니다. 다음은 칼럼에 대하여 내림차순 정렬을 하는 예제입니다.
[3]. 데이터 선택하기
- 데이터 프레임 자체가 갖고 있는 [] 슬라이싱 기능을 이용하는 방법입니다. 특정 ‘칼럼’의 값들만 가져오고 싶다면 df ['A']와 같은 형태로 입력합니다. 이는 df.A와 동일합니다. 리턴되는 값은 Series의 자료구조를 갖고 있습니다.
예시)
- 특정 행을 갖고 오기
- 인덱스명에 해당하는 값들을 가져옵니다.
예시)
- 이름을 이용하여 선택하기 :. loc
-라벨의 이름을 이용하여 선택할 수 있는. loc를 이용할 수도 있습니다.
예시)
- test_df.loc [row(시작):row(끝), '칼럼명']와 같이 행과 칼럼에 조건에 맞는 데이터 선택하기
예시)
- 위치를 이용하여 선택하기:. iloc
예시)
- test_df.iloc [3:5,0:2]
- 인덱스 번호로 행뿐만 아니라 열도 선택할 수 있습니다. 또한 numpy 나 python의 슬라이싱 기능과 비슷하게 사용할 수 있습니다. 아래는 행과 열의 인덱스를 기준으로 이용하여 데이터를 선택하는 예제입니다. 행의 인덱스는 3:5로 네 번째 행과 다섯 번째 행을 선택하며, 열의 인덱스는 0:2로 첫 번째 열과 두 번째 열을 선택합니다.
예시)
자료 출처
[예시] https://dandyrilla.github.io/2017-08-12/pandas-10 min/
댓글