파이썬 버전 3.7 기준
pandas 버전 0.25.1 기준
.ix 인덱서를 이용한 인덱싱 |
본 포스팅에서는 .ix 메서드에 대해 좀 더 상세히 알아볼 것이며, 이 메서드를 이용한 인덱싱에 대해 살펴볼 것이다.
사실 .ix인덱서는 최근 버전에들어서는 사용하지 말 것을 권하고 있으며, 앞으로 사라질 가능성이 크다.
.ix 메서드에 대한 설명 |
.ix 메서드는 기본적으로 레이블(label)과 위치 정수를 사용하여 행에 접근하는 메서드이다.
하지만 최근 pandas 버전에서는 .ix 메서드의 사용을 하지 말 것을 권하고 있다.
○ 대화형 모드에서 .ix 인덱서를 사용할 경우 인덱싱은 되긴 하지만 경고가 뜬다.
○ 그 이유로는 레이블과 위치 정수 둘 다 사용할 수 있다는 장점이 있지만, 인덱싱을 할때 모호해지기 때문이다.
▷ 이런 모호성은 유저들에게 혼동을 줄 가능성이 크고 여태 많은 문제를 야기시켰다고 한다.
.ix 메서드의 특징 |
.ix 메서드에 대한 특징은 다음과 같다.
○ 레이블과 위치정수를 이용한 인덱싱이 가능하다.
○ 불린 배열(boolean array)과 함께 사용될 수 있다.
○ 위치정수던 레이이블이던 간에 해당 객체를 찾을 수 없을 경우 KeyError를 발생시킨다.
▷ 단 슬라이싱은 예외이다.
○ 슬라이싱 할 경우 레이블을 사용하면 .loc와 동일하게, 위치 정수를 사용할 경우 .iloc와 동일하게 적용된다.
▷ .loc 처음과 끝이 포함된다.
▷ .iloc 처음이 포함되고 끝은 포함이 안된다.
.ix 메서드의 사용법 |
.ix 메서드는 .loc와 .iloc와 동일하게 뒤에 대괄호를 붙여 사용한다.
구문 형식은 다음과 같다.
.loc 메서드의 기본적인 구문 형식)
# Series에서의 사용
① Series.ix[ index ] # Series에서의 요소 선택
# DataFrame에서의 사용
② DataFrame.ix[ index ] # 행의 선택
③ DataFrame.ix[ index, column ] # 하나의 요소 선택
index은 행을 선택하기 위한 인덱스의 레이블과 위치 정수 둘다 입력이 가능하다.
column은 행 선택 이후 해당 행에서 요소를 선택하기 위한 열의 레이블과 위치 정수을 입력받는다.
각 변수 위치에 슬라이싱을 입력해도 유효하다.
①은 Series에서 데이터를 선택하는 형식이며 하나의 요소를 반환한다.
②은 DataFrame에서 데이터를 선택하는 형식이며 행에 해당하는 Series를 반환한다.
③은 DataFrame에서 데이터를 선택하는 형식이며, 열의 레이블을 입력함으로써 하나의 요소를 선택하여 반환한다.
.ix 메서드의 입력 자료형 |
.ix에 사용 가능한 입력 자료형으로는 다음과 같다.
○ 하나의 레이블혹은 위치정수(예: 5, 'a' 등)
○ 레이블 및 위치정수의 리스트(list) (예: ['a', 'b', 'c'] )
○ 레이블 및 위치정수의 슬라이스 객체 (예: 'a':'f')
○ 불린(boolean) 배열 (예: [True, False])
○ callable 함수
대괄호 .loc, .iloc, .ix 메서드의 차이
.loc 메서드는 레이블을 이용하여 행을 선택하며,
▷ 슬라이싱을 할 경우 처음과 끝이 둘 다 포함된다.
.iloc메서드는 위치 정수를 이용하여 행을 선택한다.
▷ 슬라이싱을 할 경우 처음은 포함되나 끝 요소는 포함이 되지 않는다.
공통점으로는 둘 다 불린 배열(boolean array)를 이용한 인덱싱이 가능하다.
.ix 메서드는 레이블과 위치정수 둘 다 사용이 가능한 메서드이다.
▷ 단, 사용하는 것은 지양된다.
.ix 사용 예 |
.ix메서드의 사용법은 .loc 및 .iloc 메서드와 거의 동일하다.
또한, 앞으로 .ix 메서드는 사라지게 될 가능성이 크다.
따라서 많은 본 포스팅에서는 많은 예제를 다루지는 않을 것이다.
행의 선택 |
아래 예제는 하나의 인덱스 레이블을 이용하여 행을 선택한 예이다.
행의 선택 예)
# pandas와 numpy의 import
In[2]: import pandas as pd
In[3]: import numpy as np
# .ix메서드를 사용하여 행을 선택하는 예
In[4]: ex_df=pd.DataFrame([[0,1,2],[3,4,5],[6,7,8]], index=['r0','r1','r2'], columns=['c0','c1','c2'])
In[5]: ex_df.ix[1]
Out[5]:
c0 3
c1 4
c2 5
Name: r1, dtype: int64
n[6]: ex_df.ix['r1']
Out[6]:
c0 3
c1 4
c2 5
Name: r1, dtype: int64
DataFrame에서의 하나의 요소 선택 |
아래 예제는 위치정수와 레이블을 이용하여 하나의 요소를 선택하는 예제이다.
요소 선택 예)
# pandas와 numpy의 import
In[2]: import pandas as pd
In[3]: import numpy as np
# .ix메서드를 사용하여 요소를 선택하는 예
In[7]: ex_df=pd.DataFrame([[0,1,2],[3,4,5],[6,7,8]], index=['r0','r1','r2'], columns=['c0','c1','c2'])
In[8]: ex_df.ix[1,2] # 위치정수의 사용
Out[8]: 5
In[9]: ex_df.ix['r1','c2'] # 레이블의 사용
Out[9]: 5
In[10]: ex_df.ix[1,'c2'] # 위치정수와 레이블의 혼합 사용
Out[10]: 5
이 외에 .loc와 .iloc 메서드에서 사용하였던 슬라이싱, 불린배열, callable 함수 등이 사용이 가능하다.
|
|
|
| 참고자료 https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.ix.html |
|
|
|
|
'Python > Pandas' 카테고리의 다른 글
패스트 인덱싱(.at, .iat)-pandas(15) (0) | 2019.10.24 |
---|---|
불린 배열(boolean array)을 이용한 인덱싱-pandas(14) (0) | 2019.10.23 |
.iloc 메서드(정수 위치)를 이용한 인덱싱과 슬라이싱-pandas(12) (0) | 2019.10.21 |
.loc 메서드(레이블)를 이용한 인덱싱과 슬라이싱-pandas(11) (0) | 2019.10.20 |
데이터 인덱싱(loc, iloc, 슬라이싱, 불린인덱싱, at, iat, ix)-pandas(10) (0) | 2019.10.19 |
댓글