오늘은 파이썬의 pandas 라이브러리를 활용하여 데이터프레임을 다뤄보겠습니다.
pandas는 주로 데이터 분석 및 처리를 위해 쓰이는 오픈 소스 파이썬 라이브러리로, 행과 열로 이루어진 2차원 데이터를 효율적으로 가공/처리할 수 있는 다양한 기능을 제공합니다.
pandas의 핵심 자료구조는 1차원 데이터를 다루기 위한 시리즈(Series)와 2차원 데이터를 다루기 위한 데이터프레임(DataFrame)입니다.
시리즈와 데이터프레임은 데이터에 인덱스를 지정하여 관리하는 방식의 자료구조로 시리즈는 하나의 열로 구성, 데이터프레임은 열이 여러개인 형태라는 점에서 차이를 보입니다.
예제를 통해 데이터프레임에 대해 자세히 다뤄보겠습니다.
그 전에 흥미로운 데이터를 다뤄보면 더 재밌을 것 같아 캐글(Kaggle)이라는 데이터 에측/분석 플랫폼을 통해 데이터셋을 얻었는데요.
저는 리그오브레전드 챔피언 데이터를 다뤄보려합니다.
LoL-Champions.csv 데이터셋은 위처럼 챔피언 이름, 직업군, 스타일, 난이도, 데미지타입 등의 데이터가 들어있는데요
Style 데이터는 객관적인 지표가 아닌듯해 삭제시키고 다뤄보겠습니다.
[pandas 라이브러리 및 데이터셋 불러오기]
import pandas as pd
lol = pd.read_csv("/content/sample_data/LoL-Champions.csv")
print(lol)
csv파일 불러오는 방법은 다양한데, 저는 코랩을 사용해서 코랩 샘플데이터 파일에 업로드한 뒤 진행하였습니다.
실행하면
이렇게 데이터셋이 전부 출력됩니다.
이중 직업군(Class)이 전사(Warrior)인 챔피언 데이터만 불러오려면
print(lol[lol.Class == 'Warrior'])
이렇게 pandas의 Class 함수를 사용하여 특정 데이터만 추출할 수 있습니다.
이중 데미지 타입이 M(마법계열)인 챔피언만 출력해보겠습니다.
출력문이 너무 길다보니
lol_warrior 변수를 만들어서
head함수를 통해 10줄만 출력하게하고
DamageType이 'M'인 데이터만 출력하게 해줍니다.
lol_warrior = lol[lol.Class == 'Warrior']
print(lol_warrior.head(10))
print(lol_warrior[lol_warrior.DamageType == 'M'])
위와 같이 전사직업군 챔피언이 위에서부터 10줄만 출력되고
데미지타입이 마법계열인 전사직업군인 Mordekaiser의 데이터가 출력됩니다.