pandas
데이터 프레임의 부울 색인 생성
수색…
소개
DataFrame 인덱서 개체 .ix
, .loc
, .iloc
사용하여 데이터 프레임의 행에 액세스하고 부울 마스크를 사용하는 방법과 구별되는 방법.
부울 인덱스를 사용하여 DataFrame에 액세스
다음은 예제 데이터 프레임입니다.
df = pd.DataFrame({"color": ['red', 'blue', 'red', 'blue']},
index=[True, False, True, False])
color
True red
False blue
True red
False blue
.loc
액세스하기
df.loc[True]
color
True red
True red
.iloc
액세스하기
df.iloc[True]
>> TypeError
df.iloc[1]
color blue
dtype: object
유의할 점은 구형 팬더 버전은 부울과 정수 입력을 구별하지 못했기 때문에
.iloc[True]
는.iloc[1]
.ix
액세스하기
df.ix[True]
color
True red
True red
df.ix[1]
color blue
dtype: object
보다시피 .ix
에는 두 가지 동작이 있습니다. 이것은 코드에서 매우 나쁜 행위이므로 피해야합니다. 보다 명확하게하려면 .iloc
또는 .loc
을 사용하십시오.
부울 마스크를 데이터 프레임에 적용하기
다음은 예제 데이터 프레임입니다.
color name size
0 red rose big
1 blue violet big
2 red tulip small
3 blue harebell small
마법의 __getitem__
또는 []
접근 __getitem__
사용합니다. 데이터 프레임과 동일한 길이의 True 및 False 목록을 제공하면 다음과 같은 효과를 얻을 수 있습니다.
df[[True, False, True, False]]
color name size
0 red rose big
2 red tulip small
열 값을 기반으로 데이터 마스킹
다음은 예제 데이터 프레임입니다.
color name size
0 red rose big
1 blue violet small
2 red tulip small
3 blue harebell small
데이터 프레임에서 단일 열에 액세스하면 간단한 비교 ==
를 사용하여 열의 모든 요소를 지정된 변수와 비교하여 pd.Series
를 작성합니다. 참 및 거짓
df['size'] == 'small'
0 False
1 True
2 True
3 True
Name: size, dtype: bool
이 pd.Series
는 간단한 list
의 확장 인 np.array
의 확장입니다. 따라서 우리는 위의 예제 에서처럼 이것을 __getitem__
또는 []
접근 자로 넘길 수 있습니다.
size_small_mask = df['size'] == 'small'
df[size_small_mask]
color name size
1 blue violet small
2 red tulip small
3 blue harebell small
인덱스 값을 기반으로 데이터 마스킹
다음은 예제 데이터 프레임입니다.
color size
name
rose red big
violet blue small
tulip red small
harebell blue small
열 값처럼 인덱스 값을 기반으로 마스크를 만들 수 있습니다.
rose_mask = df.index == 'rose'
df[rose_mask]
color size
name
rose red big
그러나이 일을하는 것은 거의 동일
df.loc['rose']
color red
size big
Name: rose, dtype: object
중요한 차이점은 .loc
가 일치하는 인덱스에서 한 행만 발견하면 pd.Series
를 반환하고 일치하는 행이 더 pd.DataFrame
을 반환합니다. 이것은이 방법을 다소 불안정하게 만든다.
이 동작은 .loc
에 단일 항목의 목록을 제공하여 제어 할 수 있습니다. 이렇게하면 데이터 프레임을 반환하게됩니다.
df.loc[['rose']]
color size
name
rose red big