이 영역을 누르면 첫 페이지로 이동
butter_shower 블로그의 첫 페이지로 이동

butter_shower

페이지 맨 위로 올라가기

butter_shower

[Pyspark] Pyspark의 여러가지 함수들

  • 2021.11.12 16:07
  • 머신러닝 꿈나무/Hands-on!
글 작성자: _rian

0. 데이터 프레임 안의 내용 보기

(1) 상위 N개만 출력 - show()

# 상위 20개만 출력
df.show()

# 상위 n개 출력
df.show(n)

(2) 전체 데이터 출력 - collect()

df.collect()

 

1. 특정 칼럼 선택해 출력하기 - select()

import pyspark.sql.functions as F

# 특정 칼럼만 보기
df.select(F.col('col1'), F.col('col2'), F.col('col3')).show()

 

2. 정렬 - orderBy()

df.orderBy('칼럼명', ascending=True) # default : True, 오름차순

 

3. 상위 n개만 커트

df = df.limit(1000) # 상위 1000개 데이터로 갱신

 

4. 칼럼을 기준으로 그룹핑 하기 - groupBy()

# 하나의 칼럼으로 그룹핑
df.groupBy('col1') # col1 자리에 칼럼명 입력

# 2개 이상의 칼럼으로 그룹핑
df.groupBy(['col1', 'col2'])

일반적으로 sum(), max(), avg() 등의 함수들과 같이 사용

# sum
df.groupBy('col1').sum('col2')

# avg
df.groupBy('col1').avg('col2')

groupby 연산 후 여러가지의 연산을 한 칼럼을 리턴하고 싶다면 agg()화 함께 아래와 같이 사용

import pyspark.sql.functions as F

df.groupBy(['col1', 'col2']).agg(
    F.sum('col3').alias('sum_of_col3'),
    F.avg('col4').alias('avg_of_col4')
)

groupby 연산의 결과들을 리스트 / set으로 바꾸고 싶을때에는 collect_list(), collect_set()

improt pyspark.sql.functions as F
df.groupBy(['col1', 'col2']).agg(
    F.collect_list('col3').alias('list_of_col3'), # ArrayType 칼럼
    F.collect_set('col4').alias('set_of_col4') # ArrayType이나 중복 제거된 리스트
)

 

5. 칼럼끼리의 연산을 통해 새 칼럼 만들기 - withColumn()

import pyspark.sql.functions as F

# 두 칼럼 더하기
df = df.withColumn('col3', F.col('col1') + F.col('col2'))

# 세 칼럼 곱하기
df = df.withColumn('col4', F.col('col1') * F.col('col2') * F.col('col3'))

 

6. 사용자 정의 함수 사용 - udf()

여러가지 칼럼을 사용해서 새로운 칼럼을 만들고 싶을때 udf와 withColumn() 함수와 같이 사용.

아래는 문자열 타입에서 스페이스바를 없애는 사용자 정의 함수

import pyspark.sql.functions as F
from pyspark.sql.functions import udf, StringType

# 방법 1 : annotation으로 udf 명시
@udf(returnType=StringType())
def remove_whitespace_udf(s):
    return s.replace(' ', '')

# 방법 2 : 따로 함수를 udf로 선언 
def remove_whitespace(s):
    return s.replace(' ', '')

remove_whitespace_udf = F.udf(remove_whitespace, StringType())

# udf 적용 방법 - withColumn과 함께 사용
df = df.withColumn('col2', remove_whitespace(F.col('s')))

하나의 udf에 여러가지 칼럼을 리턴하고 싶다면 스키마와 함께 사용

import pyspark.sql.functions as F
from pyspark.sql.types import *

def get_mul_add(col1, col2):
    return col1 * col2, col1 + col2

schema = StructType([
    StructField('mul', FloatType(), True),
    StructField('add', FloatType(), True)
])

get_mul_add_udf = F.udf(get_mul_add, schema)

df = df.withColumn('output', get_mul_add_udf(F.col('col1'), F.col('col2')))\
        .select(F.col('output.*'), F.col('col1'), F.col('col2')) 

'머신러닝 꿈나무 > Hands-on!' 카테고리의 다른 글

[Pyspark] udf에서 2개 이상의 multiple column 리턴하기  (0) 2021.11.04
[핸즈온 머신러닝2] Chaper 5. 서포트 벡터 머신  (0) 2021.01.24
[핸즈온 머신러닝2] Chapter 3. 분류  (0) 2021.01.15
[핸즈온 머신러닝2] Chaper 2. 머신러닝 프로젝트 처음부터 끝까지  (0) 2021.01.13

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Pyspark] udf에서 2개 이상의 multiple column 리턴하기

    [Pyspark] udf에서 2개 이상의 multiple column 리턴하기

    2021.11.04
  • [핸즈온 머신러닝2] Chaper 5. 서포트 벡터 머신

    [핸즈온 머신러닝2] Chaper 5. 서포트 벡터 머신

    2021.01.24
  • [핸즈온 머신러닝2] Chapter 3. 분류

    [핸즈온 머신러닝2] Chapter 3. 분류

    2021.01.15
  • [핸즈온 머신러닝2] Chaper 2. 머신러닝 프로젝트 처음부터 끝까지

    [핸즈온 머신러닝2] Chaper 2. 머신러닝 프로젝트 처음부터 끝까지

    2021.01.13
다른 글 더 둘러보기

정보

butter_shower 블로그의 첫 페이지로 이동

butter_shower

  • butter_shower의 첫 페이지로 이동

검색

메뉴

  • All Categories
  • About Me
  • Guest Book

카테고리

  • 전체보기 (223)
    • 💫 주인장 이야기 (17)
    • 🌱 와글와글뻘글 (27)
    • IT Trends (11)
    • 주인장 일상 (0)
    • 📒 내 마음대로 독서 서평 (12)
    • 머신러닝 꿈나무 (30)
      • 기본 개념 (6)
      • Hands-on! (5)
      • Paper Review (5)
      • 캐린이의 Kaggle (1)
    • 알고리즘 Algorithm (33)
      • PS (8)
    • Computer Engineering (75)
      • Python (8)
      • Cloud Computing (9)
      • C (9)
      • C++ (0)
      • Java (6)
      • Django 장고 (4)
      • 임베디드 시스템 (10)
      • 병렬 처리(Parallel Processing) (9)
      • 데이터 통신 Data communication (4)
      • 유닉스 시스템 (Unix System) (3)
      • GitHub (1)
      • 마이크로 프로세서 (micro processor) (1)
      • 데이터 마이닝 (1)
    • Error Note 🚨 (3)
    • 영어 공부 (6)
      • Live Academy (6)
    • HOBBY (2)
      • Film Log (2)

최근 글

정보

_rian의 butter_shower

butter_shower

_rian

나의 외부 링크

  • Github
  • Facebook
  • Instagram
  • LinkedIn
  • Twitter

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © _rian. Designed by Fraccino.

티스토리툴바