작성
·
524
0
안녕하세요! 먼저 설 명절 복 많이 받으시길 바랍니다 ㅎㅎ
해당 강의에서 Spark 데이터프레임에서 결측치가 있는 칼럼의 결측치 개수를 카운트할 때 pyspark.sql.functions 모듈에 있는 count, when 메소드를 활용하잖아요!?
예를 들어, 아래와 같은 코드가 있다고 할 때,
titanic_sdf.select( [ count( when( col(c).isNull(), c ) ) for c in titanic_sdf.columns ] )
강의에서 설명해주실 때, count 메소드는 특정 칼럼의 값이 Null이면 그 Row를 카운트하지 않는다고 하셨는데요!
그러면 위와 같이 when( col(c).isNull(), c ) 라는 문법은 col(c) 라는 칼럼의 값이 Null일 경우, c 값 즉, Null인 값으로 하라는 의미이잖아요? SQL로 바꾸자면,...
CASE WHEN c IS NULL
THEN c // 어차피 c 가 Null 값
ELSE END
이잖아요!? 그러면 여기서 c 라는 값 자체가 어차피 Null 인데, count 메소드는 어떻게 Null인 Row 개수를 셀수 있는 건가요? count 메소드는 Null 값인 Row를 세지 않는다고 했는데...
혹시 질문 내용이 이해가 안가신다면 답글 달아주세요...!
답변 1
1
안녕하십니까,
음, 이건 제가 강의에서 설명을 잘못드렸습니다. 말씀하신대로 count는 null을 포함하기 때문에 그런 식으로 이해가 되게 설명드리면 안되는 부분이었습니다.
when( col(c).isNull(), c )에서 c는 컬럼 c 값이 아니라 문자열 c입니다. 그러니까 컬럼명칭 문자열 입니다. 가령 Age 컬럼의 null 값을 추출하는 것이라면
count(case when Age is null then 'Age' else Null end) 입니다. 그래서 null값을 count할 수 있습니다.
좋은 지적 감사합니다. 조만간 시간 봐서 해당 내용을 수정하도록 하겠습니다.
연휴임에도 빠른 자세한 답변 감사합니다! 설명해주신 부분에 대해 명확히 이해했습니다!
이번 질문으로 또 새로운 지식을 배워갑니다 감사합니다! :)