파이썬(Python)&판다스(Pandas)&Polars

[polars] 데이터 EDA 코드 만들기 (컬럼수, 행수, 결측값 등)

송채채 2024. 4. 9. 18:34

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분만에 끝남

반응형