오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Data Analysis and ML, DL/스파크

[Pyspark] Pyspark 데이터 전처리 기본기

junha6316 2020. 11. 17. 19:54

목차

1. 특정 열 갖고 오기

2. 특정 열의 중간값 찾기

3. 특정 열의 결측치 세기

4. 데이터프레임의 모든 결측치 세기

5. 데이터 프레임에서 여러 Columns 한번에 제거하기

1. 특정 열 갖고 오기

col = df.select('colname')

=> 리스트 형태로 반환

 

2. 특정 열의 중간값 찾기

md = df.approxQuantile(c, [0.5], 0.25)

=> 리스트 형태로 반환

 

 

3. 특정 열의 결측치 세기

df.filter((df["ID"] == "") | df["ID"].isNull() | isnan(df["ID"])).count()
stackoverflow.com/questions/48229043/python-pyspark-count-null-empty-and-nan

 

4. 데이터프레임의 모든 결측치 세기

from pyspark.sql.functions import isnan, when, count, col, isnull

data.select([count(when(isnull(c), c)).alias(c) for c in data.columns]).show()

아래와 같이 각 열의 결측치 개수가 출력된다. 참고로 pyspark에서는 null과 nan으로 보니 isnan과 isnull을 적절히 사용할 수 있어야한다.

https://stackoverflow.com/questions/44627386/how-to-find-count-of-null-and-nan-values-for-each-column-in-a-pyspark-dataframe

 

5. 데이터 프레임에서 여러 Columns 한번에 제거하기

columns_to_drop = ['id', 'id_copy']
df = df.drop(*columns_to_drop)
stackoverflow.com/questions/29600673/how-to-delete-columns-in-pyspark-dataframe

 

6. 특정 Column 스키마 변경하기

from pyspark.sql.types import IntegerType
df2 = df.withColumn("age", df["age"].cast(IntegerType()))
forums.databricks.com/questions/14819/how-to-change-schema-of-a-pyspark-sql.html

 

7. DateType인 Column 년, 월, 일로 나누기

from pyspark.sql.functions import isnan, year, month, dayofmonth

dateDf = data.select("date", year(data["date"]).alias('year'), 
                month(data["date"]).alias('month'), 
                dayofmonth(data["date"]).alias('day'))
                
dateDf = dateDf.drop('date')

아래와 같은 데이터 프레임이 출력된다. 시간도 하고 싶으면 아래 

from pyspark.sql.functions import hour