파이썬 판다스 데이터 전처리 핵심 정리, 엑셀보다 10배 빠른 업무 스킬

판다스

요즘 데이터 분석 공부하시는 분들 많으시죠? 저도 처음에 파이썬 시작했을 때가 생각나네요. 멋진 인공지능 모델을 만들고 싶어서 시작했는데, 정작 현실은 지저분한 엑셀 파일이랑 씨름하느라 하루를 다 보냈거든요. 흔히들 데이터 분석의 80%는 전처리 과정이라고 하는데, 이거 진짜 맞는 말이에요. 원본 데이터가 깨끗한 경우는 거의 없으니까요.

그래서 오늘은 제가 실무에서 맨날 쓰는 파이썬 판다스(Pandas) 데이터 전처리 꿀팁들을 좀 풀어볼까 해요. 복잡한 이론보다는 당장 내일 회사에서 써먹을 수 있는 실전 압축 노하우 위주로 이야기해 볼게요. 엑셀로 하다가 버벅거리던 작업들, 판다스로 바꾸면 진짜 신세계가 열리거든요.

일단 데이터를 뜯어보는 게 순서죠

데이터를 불러왔으면 무턱대고 가공부터 하려고 들면 안 돼요. 일단 이 녀석이 어떻게 생겨먹었는지 견적을 좀 내야 하거든요. 보통 read_csv로 파일 불러오고 나서 바로 head() 찍어보시잖아요? 근데 그것만으로는 부족해요.

저는 무조건 info() 함수부터 실행해요. 이게 왜 중요하냐면, 데이터의 전체적인 뼈대를 보여주거든요. 결측치가 어디에 얼마나 있는지, 숫자여야 할 데이터가 문자로 인식되고 있지는 않은지 한눈에 딱 들어오죠. 가끔 숫자 데이터에 콤마(,)가 섞여 있어서 문자로 인식되는 경우도 있는데, 이거 모르고 평균 구하려다 에러 나면 진짜 멘붕 오거든요. 미리미리 확인하는 습관이 퇴근 시간을 결정해요.

파이썬

그리고 describe() 함수도 잊지 마세요. 기술 통계량을 쫙 뽑아주는데, 데이터의 이상치(Outlier) 잡을 때 이만한 게 없어요. 예를 들어 나이 데이터인데 최솟값이 음수라거나, 최댓값이 500살이라면 뭔가 잘못된 거잖아요? 이런 걸 초반에 잡아내야 나중에 고생 안 해요.

골치 아픈 결측치, 어떻게 처리할까요?

데이터 전처리의 영원한 숙제, 바로 결측치(NaN) 처리예요. 이거 그냥 0으로 채우면 되는 거 아니냐고 묻는 분들도 계신데, 상황에 따라 완전 달라져야 해요. 무작정 0으로 채웠다가는 데이터의 평균이 확 깎여버려서 분석 결과가 왜곡될 수 있거든요.

가장 쉬운 건 dropna()로 그냥 날려버리는 건데, 데이터가 충분히 많다면 쿨하게 지워버리는 것도 방법이에요. 하지만 데이터 하나하나가 소중하다면 채워 넣어야죠. fillna() 함수를 쓰면 되는데, 저는 보통 평균값이나 중앙값으로 채우는 걸 선호해요. 시계열 데이터라면 바로 앞의 값으로 채우는 ffill 옵션도 꽤 유용하더라고요.

아래 표에 상황별로 어떻게 대처하면 좋은지 간단히 정리해봤어요. 이거 캡처해두고 필요할 때마다 보세요.

상황 추천 처리 방법 판다스 함수 활용 비고
데이터가 넘쳐날 때 행 삭제 dropna() 가장 깔끔하지만 정보 손실 위험
수치형 데이터 보정 평균/중앙값 대체 fillna(df.mean()) 데이터 분포 유지에 유리
시계열/순차 데이터 앞/뒤 값으로 대체 fillna(method='ffill') 흐름이 끊기지 않게 연결
범주형 데이터 최빈값 대체 fillna(df.mode()) 가장 많이 등장한 값으로 채움

원하는 데이터만 쏙쏙 뽑아내기

데이터가 수십만 줄 넘어가면 엑셀은 필터 걸다가 멈추잖아요? 판다스는 그런 거 없어서 너무 좋아요. 여기서 lociloc 헷갈려 하시는 분들 진짜 많은데, 딱 정해드릴게요.

이름(Label)으로 찾고 싶으면 loc, 순서(Index)로 찾고 싶으면 iloc이에요. 예를 들어 ‘날짜’가 2024년 1월인 데이터만 보고 싶다면 loc를 쓰는 게 직관적이죠. 조건 검색도 진짜 편해요. 엑셀에서 복잡한 수식 걸어야 하는 것도 판다스에서는 한 줄이면 끝나거든요. 여러 조건을 걸 때는 &(교집합)나 |(합집합) 연산자만 잘 써도 웬만한 건 다 걸러낼 수 있어요.

코딩독학

아, 그리고 isin() 함수 이거 진짜 물건이에요. 특정 리스트에 포함된 데이터만 뽑을 때 쓰는데, for문 돌릴 필요 없이 한 방에 해결되니까 속도도 빠르고 코드도 엄청 깔끔해져요. 코드가 간결해야 나중에 유지보수하기도 편하잖아요.

데이터 타입 정리와 중복 제거

데이터 타입 맞추는 것도 은근히 중요해요. 날짜가 그냥 문자열(Object)로 되어 있으면 날짜 계산이 안 되잖아요? pd.to_datetime()으로 형 변환부터 해줘야 시계열 분석이 가능해지죠. 숫자도 가끔 문자열로 들어오는데, astype() 써서 정수나 실수로 바꿔주는 작업은 필수예요.

그리고 중복 데이터! drop_duplicates() 이거 안 돌리고 분석했다가 낭패 본 적 있어요. 같은 사람이 두 번 집계되거나 해서 결과가 뻥튀기되는 경우가 있거든요. 분석 시작 전에 중복 제거는 그냥 습관처럼 해주세요.

데이터 전처리라는 게 처음에는 좀 귀찮고 지루해 보일 수 있어요. 근데 이 과정을 탄탄하게 해두면 뒤에 이어지는 분석이나 머신러닝 모델링 과정이 거짓말처럼 수월해져요. 요리가 재료 손질에서 시작되듯, 데이터 분석도 전처리가 반 이상이라는 거 꼭 기억해주세요. 오늘 알려드린 내용들 하나씩 적용해 보시면, 확실히 업무 속도가 빨라지는 걸 느끼실 거예요.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다