PySpark에서 집계를 생성하는 데는 여러 가지 방법이 있습니다. 우리는 이 문법을 가장 신뢰할 수 있는 방법으로 추천합니다.
Copied!1 2 3 4# 데이터프레임 df를 'state' 기준으로 그룹화하고, 각 주의 최대 도시 인구수를 구하여 'largest_city_in_state'라는 열 이름으로 추가합니다. aggregated_df = df.groupBy('state').agg( F.max('city_population').alias('largest_city_in_state') )
| state | city | city_population |
|---|---|---|
| WA | Bellevue | 100000 |
| WA | Seattle | 700000 |
| PA | Philadelphia | 1500000 |
| PA | Pittsburgh | 300000 |
| state | largest_city_in_state |
|---|---|
| PA | 1500000 |
| WA | 700000 |
DataFrame에서 .groupBy() 메소드는 집계를 수행할 임의의 수의 열을 가져옵니다. Alternatively, 전체 DataFrame에 걸쳐 집계하려면 열을 포함하지 마십시오.
Copied!1 2 3 4 5 6 7 8 9 10 11# 데이터 프레임(df)를 'state', 'county' 기준으로 그룹화하고, 각 그룹의 'city_population' 최댓값을 구한 후, # 그 값을 'largest_city_in_state_county'라는 새로운 열로 추가합니다. aggregated_df = df.groupBy('state', 'county').agg( F.max('city_population').alias('largest_city_in_state_county') ) # 데이터 프레임(df) 전체에서 'city_population'의 최댓값을 구하고, # 그 값을 'largest_city_overall'이라는 새로운 열로 추가합니다. aggregated_df = df.groupBy().agg( F.max('city_population').alias('largest_city_overall') )
그룹화된 DataFrame에 대한 .agg() 메소드는 임의의 수의 집계 Function을 사용합니다.
Copied!1 2 3 4 5 6 7# 'state'별로 데이터를 그룹화합니다. aggregated_df = df.groupBy('state').agg( # 각 'state'의 'city_population' 최댓값을 찾아 'largest_city_in_state'라는 이름으로 저장합니다. F.max('city_population').alias('largest_city_in_state'), # 각 'state'의 'city_population' 평균값을 찾아 'average_population_in_state'라는 이름으로 저장합니다. F.avg('city_population').alias('average_population_in_state') )
기본적으로 집계는 aggregation_name(target_column) 형태의 열을 생성합니다. 그러나 Foundry에서는 열 이름에 괄호 또는 기타 영문/숫자가 아닌 문자를 포함할 수 없습니다. 대신 각 집계를 특정 이름으로 별칭을 지정하세요.
PySpark의 피벗 테이블은 일반적인 그룹화된 집계와 매우 유사하게 작동합니다.
Copied!1 2# 'equipment' 으로 그룹화하고, 'sensor'를 피벗으로 사용하여 각 그룹의 'value' 평균을 계산합니다. pivoted_df = df.groupBy('equipment').pivot('sensor').mean('value')
| 장비 | 센서 | 값 |
|---|---|---|
| A | 온도 | 60 |
| A | 온도 | 40 |
| B | 속도 | 6 |
| A | 속도 | 3 |
| 장비 | 온도 | 속도 |
|---|---|---|
| A | 50 | 3 |
| B | null | 7 |
avg(열) / mean(열)collect_list(열)collect_set(열)count(열)corr(x, y)x와 y의 피어슨 상관 계수.covar_pop(col1, col2)covar_samp(col1, col2)countDistinct(열, *cols)first(열, ignorenulls=False)grouping(열)grouping_id(*cols)kurtosis(열)last(열, ignorenulls=False)max(열)min(열)skewness(열)stddev(열)stddev_pop(열)stddev_samp(열)sum(열)sumDistinct(열)var_pop(열)var_samp(열)variance(열)