Polars 라이브러리를 사용하여 데이터 탐색적 분석(EDA) 코드를 만드는 방법을 소개합니다. 특히, 컬럼 수, 행 수, 결측값 수 등 기본적인 EDA 정보를 계산하는 코드를 다룹니다.
import chardet
#polars
import polars as pl
file_name = "데이터 경로"
charenc = detect_enc(file_name)
# open file
data = pl.read_csv(file_name, encoding = charenc, ignore_errors= True, low_memory=False, truncate_ragged_lines = True, infer_schema_length=0)
# 컬럼명
column_list = list(data.columns)
# 컬럼 수
column_count = data.shape[1]
# 행 수
row_count = data.shape[0]
# 결측값 수
# 정확한 계산을 위해 특수문자와 공백값을 전처리함
data = data.with_columns(
pl.when(pl.col(pl.Utf8).is_in(["", " ", "nan", "null", "na"]))
.then(None)
.otherwise(pl.col(pl.Utf8)) # keep original value
.name.keep()
)
pattern = "[-?@#$%^&*\(\)]"
for col in data.columns:
data = data.with_columns(pl.col(col).str.replace_all(pattern, ""))
null_count = pl.Series([value[0] for value in data.null_count().head(1)]).to_list()
# 데이터 프레임으로 저장
list_of_data = [file_name, file_format, charenc, column_count, row_count, column_list, null_count]
tmp_df = pl.DataFrame( {
'파일명' : [list_of_data[0]],
'확장자' : [list_of_data[1]],
'인코딩' : [list_of_data[2]],
'컬럼수' : [list_of_data[3]],
'행수' : [list_of_data[4]],
'컬럼명' : [list_of_data[5]],
'결측값수' : [list_of_data[6]]
})
결과 예시
1. 데이터 불러오기 및 인코딩 설정
detect_enc 함수를 사용하여 파일의 인코딩을 자동으로 감지합니다. # pip install chardet
pl.read_csv 함수를 사용하여 데이터를 불러옵니다.
2. 컬럼 및 행 정보
list(data.columns)를 사용하여 컬럼 리스트를 추출
data.shape[1]을 사용하여 컬럼 수를 계산함
data.shape[0]을 사용하여 행 수를 계산함
3. 결측값 처리
pl.when 함수를 사용하여 특수문자와 공백값을 None으로 변환
- 문자열 정제
정규표현식을 사용하여 특수문자를 정제함
ps. pandas로 같은 코드를 작성해서 실행했을 땐, 거의 2-3시간 걸리던 게 polars로 바꾸니 3분만에 끝남
반응형
'파이썬(Python)&판다스(Pandas)&Polars' 카테고리의 다른 글
[Python] JSON의 모든 key, value를 재귀적으로 탐색해서 데이터프레임으로 만들기 (0) | 2024.04.24 |
---|---|
[polars] 데이터프레임의 결측값을 리스트 형태로 추출하고 변환 (null_count, to_list) (0) | 2024.04.09 |
[Python] mp4를 mp3로 변환하기 (moviepy) (0) | 2024.02.13 |
[Python&Pandas] 유사한 문자열을 매칭하는 파이썬 라이브러리(difflib) (0) | 2024.01.04 |
[Pandas] 두 개의 데이터프레임에서 특정 문자열이 포함된 행 제거하기(~, isin) (2) | 2024.01.04 |