DataFrame¶
Series들이 모인 데이터로 Series는 1차원 데이터 DataFrame은 2차원 데이터
롤 캐릭터 몇개들로 데이터프레임을 만들어봅시다.
데이터프레임은 딕셔너리, 리스트로 만들 수 있습니다. (배열도 있으나 생략)
1. 딕셔너리로 만들기¶
In [1]:
import numpy as np
import pandas as pd
In [2]:
data = {
'이름' : ['카이사', '나서스', '제이스', '르블랑', '시비르', '신지드', '쓰레쉬'],
'공격 속성' : ['ad', 'ad', 'ad', 'ap', 'ad', 'ap', 'ap'],
'학교' : ['잭스고', '마이고', '마이고', '조이고', '잭스고','조이고', '마이고'],
'1렙 ad' : [55, 61, 59, 51, 54, 57, 44],
'1렙 체력' : [500, 550, 510, 520, 530, 575, 545],
'1렙 방어력' : [30, 40, 33, 28, 30, 35, 33],
'1렙 마방' : [30, 42, 39, 33, 27, 35, 30]
}
data # 딕셔너리 생성
lol = pd.DataFrame(data, index = ['1번', '2번', '3번', '4번', '5번', '6번', '7번'])
lol
Out[2]:
이름 | 공격 속성 | 학교 | 1렙 ad | 1렙 체력 | 1렙 방어력 | 1렙 마방 | |
---|---|---|---|---|---|---|---|
1번 | 카이사 | ad | 잭스고 | 55 | 500 | 30 | 30 |
2번 | 나서스 | ad | 마이고 | 61 | 550 | 40 | 42 |
3번 | 제이스 | ad | 마이고 | 59 | 510 | 33 | 39 |
4번 | 르블랑 | ap | 조이고 | 51 | 520 | 28 | 33 |
5번 | 시비르 | ad | 잭스고 | 54 | 530 | 30 | 27 |
6번 | 신지드 | ap | 조이고 | 57 | 575 | 35 | 35 |
7번 | 쓰레쉬 | ap | 마이고 | 44 | 545 | 33 | 30 |
2. 리스트로 만들기¶
In [3]:
lol = pd.DataFrame([['카이사', 'ad', '잭스고', 55, 500, 30, 30],
['나서스', 'ad', '마이고', 59, 510, 33, 39],
['제이스', 'ad', '마이고', 59, 510, 33, 39],
['르블랑', 'ap', '조이고', 51, 520, 28, 33],
['시비르', 'ad', '잭스고', 54, 530, 30, 27],
['신지드', 'ap', '조이고', 57, 575, 35, 35],
['쓰레쉬', 'ap', '마이고', 44, 545, 33, 30]],
index = ['1번', '2번', '3번', '4번', '5번', '6번', '7번'],
columns = ['이름', '공격 속성', '학교', '1렙 ad', '1렙 체력', '1렙 방어력', '1렙 마방'])
lol
Out[3]:
이름 | 공격 속성 | 학교 | 1렙 ad | 1렙 체력 | 1렙 방어력 | 1렙 마방 | |
---|---|---|---|---|---|---|---|
1번 | 카이사 | ad | 잭스고 | 55 | 500 | 30 | 30 |
2번 | 나서스 | ad | 마이고 | 59 | 510 | 33 | 39 |
3번 | 제이스 | ad | 마이고 | 59 | 510 | 33 | 39 |
4번 | 르블랑 | ap | 조이고 | 51 | 520 | 28 | 33 |
5번 | 시비르 | ad | 잭스고 | 54 | 530 | 30 | 27 |
6번 | 신지드 | ap | 조이고 | 57 | 575 | 35 | 35 |
7번 | 쓰레쉬 | ap | 마이고 | 44 | 545 | 33 | 30 |
DataFrame 확인¶
index 이름 설정¶
In [4]:
lol.index.name = '순서'
lol
Out[4]:
이름 | 공격 속성 | 학교 | 1렙 ad | 1렙 체력 | 1렙 방어력 | 1렙 마방 | |
---|---|---|---|---|---|---|---|
순서 | |||||||
1번 | 카이사 | ad | 잭스고 | 55 | 500 | 30 | 30 |
2번 | 나서스 | ad | 마이고 | 59 | 510 | 33 | 39 |
3번 | 제이스 | ad | 마이고 | 59 | 510 | 33 | 39 |
4번 | 르블랑 | ap | 조이고 | 51 | 520 | 28 | 33 |
5번 | 시비르 | ad | 잭스고 | 54 | 530 | 30 | 27 |
6번 | 신지드 | ap | 조이고 | 57 | 575 | 35 | 35 |
7번 | 쓰레쉬 | ap | 마이고 | 44 | 545 | 33 | 30 |
index 초기화¶
In [5]:
lol.reset_index() #초기화를 했더니 맨 앞 숫자가 붙으면서 인덱스는 칼럼으로 남아있음
Out[5]:
순서 | 이름 | 공격 속성 | 학교 | 1렙 ad | 1렙 체력 | 1렙 방어력 | 1렙 마방 | |
---|---|---|---|---|---|---|---|---|
0 | 1번 | 카이사 | ad | 잭스고 | 55 | 500 | 30 | 30 |
1 | 2번 | 나서스 | ad | 마이고 | 59 | 510 | 33 | 39 |
2 | 3번 | 제이스 | ad | 마이고 | 59 | 510 | 33 | 39 |
3 | 4번 | 르블랑 | ap | 조이고 | 51 | 520 | 28 | 33 |
4 | 5번 | 시비르 | ad | 잭스고 | 54 | 530 | 30 | 27 |
5 | 6번 | 신지드 | ap | 조이고 | 57 | 575 | 35 | 35 |
6 | 7번 | 쓰레쉬 | ap | 마이고 | 44 | 545 | 33 | 30 |
In [6]:
lol.reset_index(drop = True) #원래 쓰던 index 인덱스를 없애주기 위함
lol
Out[6]:
이름 | 공격 속성 | 학교 | 1렙 ad | 1렙 체력 | 1렙 방어력 | 1렙 마방 | |
---|---|---|---|---|---|---|---|
순서 | |||||||
1번 | 카이사 | ad | 잭스고 | 55 | 500 | 30 | 30 |
2번 | 나서스 | ad | 마이고 | 59 | 510 | 33 | 39 |
3번 | 제이스 | ad | 마이고 | 59 | 510 | 33 | 39 |
4번 | 르블랑 | ap | 조이고 | 51 | 520 | 28 | 33 |
5번 | 시비르 | ad | 잭스고 | 54 | 530 | 30 | 27 |
6번 | 신지드 | ap | 조이고 | 57 | 575 | 35 | 35 |
7번 | 쓰레쉬 | ap | 마이고 | 44 | 545 | 33 | 30 |
index 설정¶
In [7]:
lol.set_index('이름')
lol
Out[7]:
이름 | 공격 속성 | 학교 | 1렙 ad | 1렙 체력 | 1렙 방어력 | 1렙 마방 | |
---|---|---|---|---|---|---|---|
순서 | |||||||
1번 | 카이사 | ad | 잭스고 | 55 | 500 | 30 | 30 |
2번 | 나서스 | ad | 마이고 | 59 | 510 | 33 | 39 |
3번 | 제이스 | ad | 마이고 | 59 | 510 | 33 | 39 |
4번 | 르블랑 | ap | 조이고 | 51 | 520 | 28 | 33 |
5번 | 시비르 | ad | 잭스고 | 54 | 530 | 30 | 27 |
6번 | 신지드 | ap | 조이고 | 57 | 575 | 35 | 35 |
7번 | 쓰레쉬 | ap | 마이고 | 44 | 545 | 33 | 30 |
In [8]:
lol.set_index('이름', inplace = True)
lol
Out[8]:
공격 속성 | 학교 | 1렙 ad | 1렙 체력 | 1렙 방어력 | 1렙 마방 | |
---|---|---|---|---|---|---|
이름 | ||||||
카이사 | ad | 잭스고 | 55 | 500 | 30 | 30 |
나서스 | ad | 마이고 | 59 | 510 | 33 | 39 |
제이스 | ad | 마이고 | 59 | 510 | 33 | 39 |
르블랑 | ap | 조이고 | 51 | 520 | 28 | 33 |
시비르 | ad | 잭스고 | 54 | 530 | 30 | 27 |
신지드 | ap | 조이고 | 57 | 575 | 35 | 35 |
쓰레쉬 | ap | 마이고 | 44 | 545 | 33 | 30 |
index 정렬¶
In [9]:
lol.sort_index() #인덱스를 오름차순
Out[9]:
공격 속성 | 학교 | 1렙 ad | 1렙 체력 | 1렙 방어력 | 1렙 마방 | |
---|---|---|---|---|---|---|
이름 | ||||||
나서스 | ad | 마이고 | 59 | 510 | 33 | 39 |
르블랑 | ap | 조이고 | 51 | 520 | 28 | 33 |
시비르 | ad | 잭스고 | 54 | 530 | 30 | 27 |
신지드 | ap | 조이고 | 57 | 575 | 35 | 35 |
쓰레쉬 | ap | 마이고 | 44 | 545 | 33 | 30 |
제이스 | ad | 마이고 | 59 | 510 | 33 | 39 |
카이사 | ad | 잭스고 | 55 | 500 | 30 | 30 |
In [10]:
lol.sort_index(ascending = False) #내림차순
Out[10]:
공격 속성 | 학교 | 1렙 ad | 1렙 체력 | 1렙 방어력 | 1렙 마방 | |
---|---|---|---|---|---|---|
이름 | ||||||
카이사 | ad | 잭스고 | 55 | 500 | 30 | 30 |
제이스 | ad | 마이고 | 59 | 510 | 33 | 39 |
쓰레쉬 | ap | 마이고 | 44 | 545 | 33 | 30 |
신지드 | ap | 조이고 | 57 | 575 | 35 | 35 |
시비르 | ad | 잭스고 | 54 | 530 | 30 | 27 |
르블랑 | ap | 조이고 | 51 | 520 | 28 | 33 |
나서스 | ad | 마이고 | 59 | 510 | 33 | 39 |
데이터 노출¶
In [11]:
lol.head() # lol의 위부터 5개를 볼 수 있음
Out[11]:
공격 속성 | 학교 | 1렙 ad | 1렙 체력 | 1렙 방어력 | 1렙 마방 | |
---|---|---|---|---|---|---|
이름 | ||||||
카이사 | ad | 잭스고 | 55 | 500 | 30 | 30 |
나서스 | ad | 마이고 | 59 | 510 | 33 | 39 |
제이스 | ad | 마이고 | 59 | 510 | 33 | 39 |
르블랑 | ap | 조이고 | 51 | 520 | 28 | 33 |
시비르 | ad | 잭스고 | 54 | 530 | 30 | 27 |
In [12]:
lol.head(3) # 괄호안에 숫자를 넣으면 숫자만큼 데이터를 볼 수 있음
Out[12]:
공격 속성 | 학교 | 1렙 ad | 1렙 체력 | 1렙 방어력 | 1렙 마방 | |
---|---|---|---|---|---|---|
이름 | ||||||
카이사 | ad | 잭스고 | 55 | 500 | 30 | 30 |
나서스 | ad | 마이고 | 59 | 510 | 33 | 39 |
제이스 | ad | 마이고 | 59 | 510 | 33 | 39 |
In [13]:
lol.tail() #끝에서 5개를 볼 수있음 , 괄호 안 숫자를 넣으면 똑같음
Out[13]:
공격 속성 | 학교 | 1렙 ad | 1렙 체력 | 1렙 방어력 | 1렙 마방 | |
---|---|---|---|---|---|---|
이름 | ||||||
제이스 | ad | 마이고 | 59 | 510 | 33 | 39 |
르블랑 | ap | 조이고 | 51 | 520 | 28 | 33 |
시비르 | ad | 잭스고 | 54 | 530 | 30 | 27 |
신지드 | ap | 조이고 | 57 | 575 | 35 | 35 |
쓰레쉬 | ap | 마이고 | 44 | 545 | 33 | 30 |
In [14]:
lol.shape #각각 행 렬의 개수를 알 수 있음
Out[14]:
(7, 6)
더 많은 데이터 프레임 docu는¶
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html
'데이터' 카테고리의 다른 글
데이터프레임 데이터정렬 (Data Frame sort_values, 데이터프레임 sort, DataFrame 정렬) (0) | 2023.01.05 |
---|---|
데이터 프레임에서 데이터 선택(조건, 또는, 그리고, and, or, str, startswith, contains) (0) | 2023.01.05 |
DataFrame loc, iloc ( 데이터 프레임 loc, iloc , pandas loc, iloc) (0) | 2023.01.01 |