Python Library - Pandas(6)
본 게시물은 코드프레소의 code.PRESS-UP 체험단 과정을 담은 게시물입니다.
해당 게시물 수강강좌 :
파이썬으로 배우는 데이터 분석 : Pandas
Pandas 라이브러리로 데이터 분석 시작하기
이번 포스팅에서는 데이터 조회를 위한 DataFrame 인덱싱 방법에 대해 알아보겠습니다.
Pandas를 활용하는 부분에 있어 코드프레소 강의가 많은 도움이 되고 있습니다.
set_index()
DataFrame은 기본적으로 index가 0부터 1씩 증가하는 정수로 생성됩니다.
다만 set_index를 이용하면 DataFrame의 index를 원하는대로 변경할 수 있습니다.
📌 특정 열의 데이터를 행의 인덱스 값으로 임의로 변경하는 함수
📌 특정 컬럼명을 지정하여 행의 인덱스 값으로 변경
#Syntax
set_index(keys = [k1, k2, ....],inplace = True/False, drop= True/False)
keys = [k1, k2, ...]
index로 설정할 list형태의 데이터
index는 보통 1줄이지만 2줄, 3줄 또는 그 이상이 될 수도 있다.
DataFrame의 행 개수와 동일한 list,Series 또는 DataFrame의 column name을 전달해야 한다.
inplace = True/False
True : set_index가 적용된 DataFrame 자체를 변경
False : set_index가 적용된 DataFrame은 원본 그대로 두고 다른 변수에 set_index가 적용된 DataFrame을 할당(False가 default 값)
drop = True/False
True : set_index의 key에 사용된 column을 index로 옮기고 column에서 삭제
False : set_index의 key에 사용된 column을 index로 옮기고 column에서 유지
(True가 default 값)
예시
import pandas as pd
dict_1 = {
'col1': [1, 2, 3, 4, 5],
'col2': [6, 7, 8, 9, 10],
'col3': [11, 12, 13, 14, 15],
'col4': [16, 17, 18, 19, 20]
}
df_1 = pd.DataFrame(dict_1)
print(df_1)
df_2 = df_1.set_index(keys=['col1'], inplace=False, drop=False)
print(df_2)
df_3 = df_1.set_index(keys=['col1'], inplace=False, drop=True)
print(df_3)
-- Result
col1 col2 col3 col4
0 1 6 11 16
1 2 7 12 17
2 3 8 13 18
3 4 9 14 19
4 5 10 15 20
col1 col2 col3 col4
col1
1 1 6 11 16
2 2 7 12 17
3 3 8 13 18
4 4 9 14 19
5 5 10 15 20
col2 col3 col4
col1
1 6 11 16
2 7 12 17
3 8 13 18
4 9 14 19
5 10 15 20
위 예시를 보면
set_index의 keys에는 ['col1']이 명시되어 있습니다.
df_1에 존재하는 col1이라는 column의 data를 DataFrame의 index로 옮기겠다는 의미입니다.
inplace = False로 df_1 자체에는 변형을 주지않고 set_index를 적용한 후 df_2 또는 df_3에 할당합니다.
df_2와 df_3의 차이를 보면 drop이 True인지 False인지가 차이납니다.
df_2는 drop=False이므로 col1의 결과에서도 존재하지만
df_3은 drop=True이므로 index의 셋팅에 사용된 col1이 DataFrame에서 삭제된것을 볼 수 있습니다.
import pandas as pd
dict_1 = {
'col1': [1, 2, 3, 4, 5],
'col2': [6, 7, 8, 9, 10],
'col3': [11, 12, 13, 14, 15],
'col4': [16, 17, 18, 19, 20]
}
df_1 = pd.DataFrame(dict_1)
print(df_1)
df_4 = df_1.set_index(keys=['col1', 'col2'], inplace=False, drop=True)
print(df_4)
-- Result
col1 col2 col3 col4
0 1 6 11 16
1 2 7 12 17
2 3 8 13 18
3 4 9 14 19
4 5 10 15 20
col3 col4
col1 col2
1 6 11 16
2 7 12 17
3 8 13 18
4 9 14 19
5 10 15 20
index는 반드시 1개일 필요는 없습니다.
위 예시처럼 index를 2줄 또는 그 이상으로 설정할 수도 있습니다.
import pandas as pd
dict_1 = {
'col1': [1, 2, 3, 4, 5],
'col2': [6, 7, 8, 9, 10],
'col3': [11, 12, 13, 14, 15],
'col4': [16, 17, 18, 19, 20]
}
df_1 = pd.DataFrame(dict_1)
print(df_1)
s = pd.Series(['a', 'b', 'c', 'd', 'e'])
df_5 = df_1.set_index(keys=[s], inplace=False)
print(df_5)
l = ['f', 'g', 'h', 'i', 'j']
df_6 = df_1.set_index(keys=[l], inplace=False)
print(df_6)
-- Result
col1 col2 col3 col4
0 1 6 11 16
1 2 7 12 17
2 3 8 13 18
3 4 9 14 19
4 5 10 15 20
col1 col2 col3 col4
a 1 6 11 16
b 2 7 12 17
c 3 8 13 18
d 4 9 14 19
e 5 10 15 20
col1 col2 col3 col4
f 1 6 11 16
g 2 7 12 17
h 3 8 13 18
i 4 9 14 19
j 5 10 15 20
또한 단순히 keys의 인자로서 DataFrame내에 존재하는 column이 아닌
Series나 list를 전달할 수도 있습니다.
다만 DataFrame의 행 개수와 동일한 길이어야 합니다.
데이터 조회를 위한 인덱싱에 대한 메소드 중
set_index()에 대해서 먼저 알아보았습니다.
이러한 메소드가 존재한다는 것은 코드프레소 강의를 통해 처음 알게 되었습니다.
다음 포스팅은 행 데이터 조회를 위한 메소드를 알아보도록 하겠습니다.
코드프레소 강의에서는 행 데이터 조회를 위한 인덱싱을 더 집중적으로 다루는 모습입니다.
다음 포스팅에서 뵙겠습니다.
Author And Source
이 문제에 관하여(Python Library - Pandas(6)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@vrooming13/Python-Library-Pandas6저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)