[PY] 간단하지만 유용한 데이터 클렌징 코드s in Pandas
🔔 판다스를 이용해 데이터를 가공할때 한 번쯤은 사용하는 코드들을 기록했습니다.
✔ 테이블 컬럼명을 변경하고 싶을 땐?
1) rename
# 'A':'B' => 'A' 컬럼명을 'B'로 바꿔줘
df = df.rename(columns={'요청일자':'확인일자', '노출기간':'확인기간', '상품명', '상품이름'})
✔ 테이블 컬럼값의 개수 혹은 비율을 확인할 땐?
1) value_counts()
# 개수 확인
cnt_category = df['category'].value_counts()
# 개수 조건 걸기, 100개 이상인 카테고리만 보여줘
cnt_category_100 = cnt_category[cnt_category >= 100]
2) value_counts(normalize=True)
# 비율 확인
rte_category = df['category'].value_counts(normalize=True)
# 비율 조건 걸기, 상위 비율 10개만 보여주는데, 소수점 두자릿 수까지 반올림해줘
rte_category_n = round(rate_category[:10], 2)
✔ 테이블 컬럼값을 sorting할 땐?
1) sort_values()
# 올림차순 기본정렬, 'mean'이라는 컬럼명의 값을 올림차순 정렬 해줘
sort_category = df.sort_values(by='mean')
2) sort_values(ascending=False)
# 내림차순 정렬, 'mean'이라는 컬럼명의 값을 내림차순 정렬 해줘
sort_category = df.sort_values(by='mean', ascendong=False)
# 정렬 컬럼이 여러개일 때, 'mean', 'std' 컬럼명의 값들을 내림차순 정렬해줘
sort_category = df.sort_values(['mean', 'std'], ascending=(0,0))
# 정렬 컬럼이 여러개일 때, 'mean'은 올림차순, 'std'는 내림차순 정렬해줘
sort_category = df.sort_values(['mean', 'std'], ascending=(1,0))
✔ 조건을 걸어서 행을 필터링하고 싶을 땐?
1) 연산 부호 혹은 등호를 쓸 경우
n1 = 10
n2 = 40
category = 'fruits'
# 기준이 한개, 'balance-count' 컬럼값이 n1 이상인 행들만 cat_bnd_n1에 저장해줘
cat_bnd_n1 = cat_brands.loc[cat_brands[('balance','count')] >= n1]
# 기준이 한개, 'name-category' 컬럼값이 fruits인 행들만 cat_name에 저장해줘
cat_name = cat.loc[cat[('name','category')] == category]
# 기준이 두개 이상
# 'balance-count' 컬럼값이 n1 이상이면서 'balance-std' 컬럼값이 n2 이하인 행들만 cat_bnd_n1_n2에 저장해줘
cat_bnd_n1_n2 = cat_brands.loc[(cat_brands[('balance','count')] >= n1] & (cat_brands[('balance','std')] <= n2])
2) 리스트를 쓸 경우(포함 / 미포함)
category_yes = ['숟가락', '나이프', '주걱', '선풍기', '거울']
category_no = ['책상', '창문', '블라인드', '소파']
# 원하는 조건에 해당하는 경우를 필터링할 경우
# df의 'cat_name' 칼럼값이 category_yes에 해당하는 행들만 depth_df에 저장해줘
depth_yes = df.loc[df['cat_name'].isin(category_yes)]
# 원하는 조건에 해당하지 않는 경우를 필터링할 경우
# df의 'cat_name' 컬럼값이 category_no에 해당하는 행들을 제외하고 depth_no에 저장해줘
pattern = '|'.join(category_no)
depth_no = df[df['cat_name'].str.contains(pattern) == False]
# 위의 코드를 다시 풀어 쓰면
depth_no = df[df['cat_name'].str.contains('책상|창문|블라인드|소파') == False]
📌 추후에도 계속 업데이트할 예정입니다👩🏻💻
댓글남기기