Pandas Selection

[참조] 패스트캠퍼스 - 직장인을 위한 파이썬 데이터분석 올인원 패키지 Online.

Selection

Column 선택

df['이름']

열 이름을 지정해서 선택한다.

df.이름

이렇게 코드를 작성할 수도 있지만 잘 사용되지 않는 방식이기 때문에 위와 같이 작성한다.

index에 대한 범위 선택

df[:3]

인덱스 3미만의 데이터를 선택한다.

df.head(3)

head()를 사용해도 동일한 결과를 얻을 수 있다.

loc

loc를 이용해 행과 열에 조건을 주어 데이터를 선택할 수 있다.

df.loc[:, '이름']

모든 행에서 ‘이름’ 열의 데이터를 출력한다.

df.loc[:, ['이름', '생년월일']]

모든 행에서 ‘이름’ 열과 ‘생년월일’ 데이터를 출력한다.

df.loc[3:8, ['이름', '생년월일']]

3행부터 8행까지 ‘이름’ 열과 ‘생년월일’ 데이터를 출력한다. 3:8 부분을 보면 numpy와 다르게 이하로 처리하기 때문에 주의해야 한다.

iloc

열 이름이 아니라 포지션으로 색인하는 것이 가능하다.

df.iloc[:4, [0, 2]]

처음부터 3행까지 0, 2번쨰에 위치한 열의 데이터를 출력한다. :4를 보면 iloc은 loc와 다르게 numpy 규칙을 따른다.

df.iloc[1:5, 1:4]

1 ~ 4행, 1 ~ 3열에 해당되는 데이터를 출력한다.

Boolean Indexing

데이터를 선택할 때 Boolean Indexing 조건을 주어 조건을 만족하는 데이터만 색인해 낼 수 있다.

df[df['키'] < 170]

하지만 조건을 만족하는 모든 열의 데이터를 가져오게 된다.

df[df['키'] > 180]['이름']
df[df['키'] > 180][['이름', '키']]

이렇게 해당 조건을 만족하는 ‘이름’ 열의 데이터 또는 복수열의 데이터 가져올 수 있다.

loc

loc를 활용하면 좀 더 쉽게 구현할 수 있다.

df.loc[df['키'] > 180, '이름']
df.loc[df['키'] > 180, '이름':'성별']

열 범위 지정하는 것도 가능하다.

df.loc[ df['키'] > 180, ['이름', '키']]

열을 복수개 선택할 때는 위와 같이 작성한다.

isin, isnull, insna, notnull

isin

my_condition = ['플레디스', 'SM']
df.loc[ df['소속사'].isin(my_condition) ]

isin() 메서드를 이용해 해당 데이터를 가지고 있는 행을 선택할 수 있다.

df.loc[df['소속사'].isin(my_condition), '이름']

isnull 또는 isna

Null은 결측값을 의미하고 pandas에서는 Not a Number의 약자인 NaN으로 표기한다.

df.isna()
df.isnull()

이와 같이 Data Frame에서 빠진 데이터를 알 수 있다.

df['그룹'][df['그룹'].isna()]

또는

df.loc[df['그룹'].isna()]

이와 같이 빠진 데이터만 색출해 낼 수가 있다.

notnull

isnullisna는 결측값을 색출해 냈다면 notnullNaN 값이 아닌 값을 색출해 낼 수 있다.

df['그룹'].notnull()
df.loc[df['그룹'].notnull(), ['키', '혈액형']]

[참조] 패스트캠퍼스 - 직장인을 위한 파이썬 데이터분석 올인원 패키지 Online.

끝!