728x90
데이터 전처리를 하다보면 하나의 행에서 원하는 값만 뽑아내고 싶을 때가 있다.
대충 예시를 위해 만들어본 csv파일
여기서 1번컬럼에서 J가 들어가는 것들만 뽑아내고 싶다고 한다면?
import pandas as pd
df = pd.read_csv('test.csv', encoding='cp949')
j_df = df[df['1번컬럼'].str.contains('J')]
# j_df = df[df['1번컬럼'].str.contains('J', na=False)] << 해당 컬럼에 null값이 있을경우
encoding='cp949'는 한글나오게 인코딩
이런 식의 결과가 나온다.
두번째로 2번컬럼이 년,월,일로 정해져있는데 년,월으로만 표기하고 싶을 때는 100으로 나눠서 몫만 보면되는데 전체 데이터프레임을 적용할 때 코딩 초보자는 for문을 사용해야하나 while문을 사용해나 싶다. 내가 그랬다.
그런데 map과 lambda를 이용하면 아주 빠르고 간단하게 처리가 된다.
여기서
df['2번컬럼'] = df['2번컬럼'].map(lambda x:x//100)
x를 100을 나눈 몫을 x로 전개해버린다는 느낌?
코딩 후 컬럼은 이렇게 정리된다.
마지막으로
3번컬럼에서 '미드'에 해당하는 것만 알고 싶다면?
df[df['3번컬럼'] == '미드']
DataFrame속의 특정컬럼이 '미드'인것만 출력
위에서 했던 것들을 모두 응용하면
1번 컬럼에서 J가 포함된 것들 중에서 3번컬럼에서 '미드'인 것을 출력하고자 한다면
j_df = df[df['1번컬럼'].str.contains('J')]
newj_df = j_df[j_df['3번컬럼'] == '미드']
이렇게 예쁘게 나온다.
728x90
'Study > Python' 카테고리의 다른 글
[Python]Sckit-Learn에 있는 데이터를 csv로 만들기 (0) | 2022.03.17 |
---|---|
[Python]Pycaret을 이용해서 타이타닉 머신러닝하기 (0) | 2022.02.28 |
Python groupyby 두가지 변수로 묶어서 정렬하기 (0) | 2021.12.01 |
폴더 속 모든 csv파일 하나의 dataframe으로 합치기 (0) | 2021.11.29 |
[Python]for문 돌리면서 루프마다 새로운 변수 선언하기 (0) | 2021.11.12 |