[전처리/과제] pandas 전처리(2) - 조건 필터링 | 데이터 정렬&정제 | 결측치&중복값 처리
🎯 이제 조건 필터링은 재밌게 해볼 수 있을 것 같다! 아니야... 아직 먼 것 같다... 결측치를 처리할 때 열 삭제 / 행 삭제가 아직 조금은 헷깔리는(🤔) 듯 하다... 신기한 단축키를 배웠다!!! ➡️ alt(option) +shift + 아래 방향키 : 해당줄 아래복사
😌 과제 후 회고 및 느낀점
이번 전처리 세션과 미니과제를 통해 배운 것 그리고 방법들을 다음 프로젝트에 반드시 적용해야겠다는 생각이 들었다. 지난 번 프로젝트 때 아쉬운 점들이 많아서 그런지 그 욕구가 더 커지는 듯 하다. 아쉬운 점을 두 가지만 나열해 보자면 다음과 같다. 1️⃣ customer | transactions | articles 3개의 파일에서 결측치, 중복값을 처리하고 저장한 새로운 파일로 진행했던 점 2️⃣ 전처리 과정을 명시적으로 드라나게 진행하지 않은 점. 예: print("중복 제거 후 행 수:" len(dropped_dup)) 처럼
실습파일로 전처리 파헤치기
🔍 customer_hm.csv 파일
[조건필터링/행 개수 출력] 갑자기 헷깔려버리기!! 🤪 40세 이상 고객 필터링까지는 어찌했는데, 첫5행과 행 수 출력에서 혼동
[정렬] .sort_values() 까진 알았지만, ( ) 안에 들어가는 파라미터를 까먹음! (columns='age')를 사용했음...ㅠㅠ ➡️ .sort_values(by='age', ascending=False) 나이(age) 기준 내림차순으로 정렬하여 상위 5명 출력
[열 제거] 잘못 제거해버리는 바람에, csv파일 다시 불러왔지..ㅎㅎ삭제는 조심조심! 분석에 불필요하다고 가정하고 FN 열을 제거한 새로운 데이터프레임을 만들어 컬럼 목록 출력
# 열 삭제: .drop(columns=' ') vs [구분] 결측치 있는 열 삭제: .dropna(axis=1)
# ➡️ 전자에 결측치 컬럼을 모두 적어준다면,, 결과는 같음.
dropped_fn = df.drop(columns='FN')
# 컬럼 목록
dropped_fn.columns
고객 파일보단 부동산 파일이 재밌는 것 같다..ㅎㅎ 한글이 있어서 그런가?? 무튼! 그렇다.
import pandas as pd
df= pd.read_csv("2024.csv", encoding="cp949")
df.head()
우선, 판다스 불러와주고 csv 파일 불러와주고 여기서 한글 안깨지게 인코딩 해주고 5행만 불러와주고! ✅ 조건을 만족하는 특정 행들을 불러올 것이 아니라면!! ➡️ 위 처럼 df['조건 필터링'] 하고 변수에 저장!! ✅ 행의 개수를 확인하고 싶다면!! ➡️ len(df) 또는 df.shape[0]
이건 그냥 참고 및 기억용으로 기록! 🔍 .isnull() 결과를 뽑으면, 불린 시리즈로 불러와짐!! ➡️ 따라서 결측 조건 필터링인 샘이다.
정렬을 하고 제대로 됐는지 확인하고 싶을 땐, 정렬 후 바로 df.head() 하지 말고 ❌ ➡️ 정렬한 컬럼과 원하는 컬럼을 몇개 지정해서 뽑아보자. 다중 정렬도 마찬가지! ✅ 아래 풀이 처럼.
열 제거 실수를 거듭하여 이번에는 실수하지 않음 😏. 위에서 '권리구분' 열을 삭제하고 아래에서 결과를 확인해 볼 수 있다. 💡 열 제거: .drop(columns='열') 💡 열 이름 변경: .rename(columns={'기존명' : '대체명', ' ' : ' '} ✅ 모두 파라미터로 columns= 를 사용한다!!
어느정도 잘 풀어낸 것 같다. but, 원본 자체를 변경할 때는 .copy()를 해두자!!