[python] 파이썬 스파크 프로그래밍을 통한 데이터 전처리

데이터 전처리는 데이터 과학 및 기계 학습 프로젝트의 중요한 단계 중 하나입니다. 데이터 전처리를 통해 데이터를 정리하고 변형하여 모델 학습에 적합한 형태로 만들 수 있습니다. 파이썬 스파크는 대규모 데이터 처리를 위한 강력한 도구로, 데이터 전처리를 효율적이고 빠르게 수행할 수 있도록 도와줍니다. 이번 포스트에서는 파이썬 스파크 프로그래밍을 사용하여 데이터 전처리를 수행하는 방법을 알아보겠습니다.

스파크 및 파이썬 스파크 설치

파이썬 스파크는 Apache Spark를 파이썬에서 사용할 수 있도록 확장한 패키지입니다. 따라서 스파크를 우선 설치해야 합니다. 아래의 명령어를 사용하여 스파크를 설치합니다.

pip install pyspark

또한 스파크 실행을 위해 Java가 필요합니다. 따라서 Java가 설치되어 있는지 확인하시기 바랍니다.

데이터 불러오기

스파크에서는 다양한 데이터 소스를 지원합니다. 예를 들어, CSV, JSON, Parquet, Avro 등의 파일 형식을 바로 읽어들일 수 있습니다. 아래의 코드는 CSV 파일을 읽어들이는 예시입니다.

from pyspark.sql import SparkSession

# 스파크 세션 생성
spark = SparkSession.builder.master("local").appName("Data Preprocessing").getOrCreate()

# CSV 파일 읽어들이기
df = spark.read.format("csv").option("header", "true").load("data.csv")

위 코드에서는 SparkSession을 사용하여 스파크 세션을 생성하고, read.format("csv")를 통해 CSV 파일을 읽어들입니다. option("header", "true")는 첫 번째 줄이 헤더로 사용되는 것을 지정하는 옵션입니다. load("data.csv")는 읽어들일 파일의 경로를 지정합니다.

데이터 전처리

스파크에서 데이터 전처리는 DataFrame API를 사용하여 수행할 수 있습니다. DataFrame은 스파크에서 데이터를 표 형태로 나타내는 자료구조입니다. 다음은 데이터 전처리의 일부 예시입니다.

필터링

특정 조건을 만족하는 데이터만 선택하여 추출하는 필터링 작업은 다음과 같이 수행할 수 있습니다.

# 나이가 30 이상인 데이터만 선택
filtered_df = df.filter(df["age"] >= 30)
filtered_df.show()

컬럼 추가 및 제거

새로운 컬럼을 추가하거나 기존의 컬럼을 제거하는 작업은 다음과 같이 수행할 수 있습니다.

# 새로운 컬럼 추가
df_with_new_column = df.withColumn("new_column", df["column1"] + df["column2"])
df_with_new_column.show()

# 기존 컬럼 제거
df_without_column = df.drop("column1")
df_without_column.show()

결측치 처리

데이터에 결측치가 있는 경우, 다음과 같은 방법으로 처리할 수 있습니다.

# 결측치를 포함하는 행 제거
df_without_na = df.dropna()
df_without_na.show()

# 결측치를 다른 값으로 대체
df_filled_na = df.fillna({"age": 0, "gender": "unknown"})
df_filled_na.show()

결과 저장

데이터 전처리를 마친 후, 결과를 원하는 형식으로 저장할 수 있습니다. 예를 들어, CSV 형식으로 저장하려면 다음과 같이 코드를 작성합니다.

# CSV로 저장
df_filtered.write.format("csv").option("header", "true").save("filtered_data.csv")

위 코드에서 write.format("csv")는 출력 파일의 형식을 지정하는 옵션입니다. option("header", "true")는 헤더를 포함시킬지 여부를 지정하는 옵션입니다. save("filtered_data.csv")는 결과를 저장할 파일의 경로를 지정합니다.

마무리

파이썬 스파크 프로그래밍을 통해 데이터 전처리를 수행하는 방법을 알아보았습니다. 스파크의 강력한 기능을 활용하여 대용량 데이터를 효율적으로 처리할 수 있습니다. 더 많은 기능과 세부적인 사용법은 스파크 공식 문서를 참고하시기 바랍니다.