[Python] CH 2. 필터링과 정렬

이진호·2024년 10월 14일

특정 컬럼의 값이 n인 데이터 출력하기

# head()로 5개만 출력
# df['컬럼명'==n]이 true를 리턴하는 행을 확인
df[df['컬럼명'==n]].head()

위에서 추출한 데이터의 index를 0부터 정렬하기

df[df['컬럼명'==n]].head().reset_index(drop=True)
# drop=True를 해주지 않으면, index를 새로운 컬럼으로 만듬
# index가 컬럼일 필요가 없으면 drop=True해주기

두 개의 컬럼으로 구성된 새로운 데이터 프레임 만들기

df[['컬럼명1', '컬럼명2']]

대괄호를 2개씩 쓴 이유?

대괄호 1개: 하나의 열만 선택 (Series로 반환)
대괄호 2개: 여러 개의 열을 선택 (DataFrame으로 반환)

컬럼에서 특정 문자를 제거하고, 새로운 타입으로 지정하기

여기에선 'item_price' 컬럼이 $1.23 같은 string으로 저장되어있다고 가정합니다.
여기에서 $를 없애고, 숫자값을 float로 저장합니다.

# str[1:]는, 데이터의 1번째 인덱스부터만 취하겠다는 의미
df['item_price'] = df['item_price'].str[1:].astype('float')

특정 컬럼이 n 이하의 값을 가지는 데이터프레임 추출하기 (+ 개수 구하기)

len(df[df['item_price']<=5])

특정 컬럼 값에 따라 오름차순으로 정렬하기 (+ index 초기화)

# sort_values의 default는 오름차순 정렬
df.sort_values('컬럼명').reset_index(drop=True)

특정 컬럼 값에 따라 오름차순으로 정렬하기 (+ index 초기화)

# sort_values의 default는 오름차순 정렬
df.sort_values('컬럼명', ascending = False).reset_index(drop=True)

string형 컬럼의 값 중, 특정 문자열을 포함하는 데이터 출력하기

# 실습해보니, Cannot mask with non-boolean array containing NA / NaN values 라는 오류가 나서 notnull() 조건을 추가해주었음
# df.isnull().sum() 했을 때 null 수가 0이라고 되어있었는데.. 흠

df[df["컬럼명"].notnull() & df.컬럼명.str.contains('확인할문자열')].head()

string형 컬럼의 값 중, 특정 문자열을 포함하지 않는 데이터 출력하기

# 조건 앞에 '-'를 붙여줌
df[df["컬럼명"].notnull() & -df.컬럼명.str.contains('확인할문자열')].head()

string형 컬럼의 값 중, 특정 문자열로 시작하는 데이터 출력하기

# A로 시작하는 데이터를 찾는다고 하면,
df[df.컬럼명.str.startswith('A')]

string형 컬럼의 값 중, 문자열의 길이가 n 이상인 데이터 출력하기

df[df.컬럼명.str.len() >= n]

여러 컬럼의 값 필터링하여 출력하기

df[df['컬럼명'=='값'] | df['컬럼명'==값]]
#또는
df[(df.컬럼명 == '값' | df.컬럼명== '값')]
#또는
df.loc[(df.컬럼명 == '값' | df.컬럼명== '값')]

짝수번째 컬럼만을 포함하는 데이터프레임 출력하기

# ::2 에서 2는 step을 지정함
# 즉, 컬럼의 인덱스를 2씩 증가시키며 가져오라는 의미
df.iloc[:, ::2]

특정 컬럼의 값을 기준으로 중복되는 값 제거하기 (+ 첫 번째 케이스만 남기기)

df.drop_duplicates('컬럼명')

특정 컬럼의 값을 기준으로 중복되는 값 제거하기 (+ 마지막 케이스만 남기기)

df.drop_duplicates('컬럼명', keep='last')

평균값 이상을 가지는 데이터만 출력하기

df[df.컬럼명 >= df.컬럼명.mean()]

특정 컬럼에서, 조건을 만족하는 데이터 수정하기

# loc[행, 열]
# loc의 첫 번째 인자로 특정 행만 추출한 후, 두 번째 인자에서 특정 컬럼에만 접근하도록 함
df.loc[df.컬럼명 == '값', '컬럼명'] = '새로운 값'

특정 컬럼에서, NaN인 데이터들을 수정하기

df.loc[df.컬럼명.isnull(), '컬럼명'] = '새로운 값'

list에 값이 존재하는 데이터만 출력하기

list = [1, 2, 3, 4, ... 10]
df.loc[df.컬럼명.isin(list)]

🔵 흥미로웠던 점 :
데이터 분석 프로젝트를 클론 코딩한 후에 이 강의를 들으니 '아 이래서 이랬구나' 하며 이해가 더 잘 되었다. (특히 iloc)

🔵 다음 학습 계획 :
그룹핑에 대해 배울 것입니다.

0개의 댓글