목차
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
'Data Analysis and ML, DL > 스파크' 카테고리의 다른 글
[Pyspark] py4j.protocol.Py4JError (0) | 2020.11.18 |
---|---|
[Pyspark] Colab No module Named 'mmlspark.lightgbm._LightGBMRegressor' (0) | 2020.11.18 |
[Pyspark] Pyspark 데이터 전처리 기본기 (0) | 2020.11.18 |
[Pyspark] Trouble Shooting (0) | 2020.11.17 |
[Pyspark] java gateway process exited before sending the driver its port number (0) | 2020.11.17 |