Selecting II
SQL과 마찬가지로 .select() 메서드를 사용해 열 단위 연산을 수행할 수 있어요. df.colName 표기법으로 열을 선택할 때, 어떤 열 연산이든 수행할 수 있고 .select() 메서드는 변환된 열을 반환합니다. 예를 들어,
flights.select(flights.air_time/60)
은 분 단위가 아니라 시간 단위의 비행 지속 시간을 담은 열을 반환해요. 또한 선택하는 열의 이름을 바꾸기 위해 .alias() 메서드를 사용할 수 있습니다. 따라서 DataFrame에 없는 duration_hrs 열을 .select() 하고 싶다면 다음과 같이 할 수 있어요.
flights.select((flights.air_time/60).alias("duration_hrs"))
동일한 작업을 하는 Spark DataFrame 메서드 .selectExpr() 는 문자열로 SQL 표현식을 받습니다:
flights.selectExpr("air_time/60 as duration_hrs")
여기서 SQL의 as 키워드는 .alias() 메서드와 동일한 역할을 합니다. 여러 열을 선택하려면 여러 문자열을 전달하면 됩니다.
SparkSession 객체 spark 와 Spark DataFrame flights 가 워크스페이스에 이미 준비되어 있다는 점을 기억하세요.
이 연습은 강의의 일부입니다
PySpark 기초
연습 안내
각 비행의 평균 속도를 두 가지 방식으로 계산한 테이블을 만들어 보세요.
distance를air_time(시간 단위로 변환)으로 나눠 평균 속도를 계산하세요..alias()메서드를 사용해 이 열의 이름을"avg_speed"로 지정하세요. 출력은 변수avg_speed로 저장하세요.- 열
"origin", "dest", "tailnum"과 따옴표 없이avg_speed를 선택하세요. 결과는speed1으로 저장하세요. .selectExpr()와 SQL 표현식이 담긴 문자열을 사용해 동일한 테이블을 만드세요. 결과는speed2로 저장하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Define avg_speed
avg_speed = (flights.____/(flights.____/60)).alias("____")
# Select the correct columns
speed1 = flights.select("origin", "dest", "tailnum", avg_speed)
# Create the same table using a SQL expression
speed2 = flights.selectExpr("____", "____", "____", "distance/(air_time/60) as ____")