공부하는 스누피
[Spark] DataFrame 다루기 본문
- Python 환경
## DataFrame이란?
정형화된 scheme을 갖고 있는 Spark 데이터 구조.
## Dictionary를 DataFrame으로 만들기
data = [{'color': 'yellow', 'weight': 200},
{'color': 'yellow', 'weight': 200}]
df = spark.createDataFrame(data)
## DataFrame 보기
# table 형태로 dataframe의 모든 데이터를 보여 준다.
df.show()
# dataframe에서 특정 인덱스의 데이터를 가져온다.
df.take(index)
# data schema를 볼 수 있다.
df.printSchema()
## 데이터 필터링하기
- 필터링은 select * where~과 같은 역할을 한다.
- 따라서 필터링의 대상이 반환된다.
# 필터링된 결과물은 dataframe이다.
# df의 속성값으로 필터링
df.filter(df.color == "yellow").show()
# col() 사용하여 필터링
from pyspark.sql.functions import col
df.filter(col("color") == "yellow").show()
# sql 표현으로 필터링
df.filter("color == 'yellow'").show()
# 복합 조건으로 필터링
df.filter((df.color == "yellow") & (df.weight < 200)).show()
# 리스트 기반으로 필터링
li = ["yellow", "red", "green"]
df.filter(df.color.isin(li)).show()
df.filter(~df.color.isin(li)).show()
# 문자열로 필터링
df.filter(df.color.startswith("y")).show() # y로 시작하는것 필터링
df.filter(df.color.endswith("w")).show() # w로 끝나는것 필터링
df.filter(df.color.contains("y")).show() # y를 포함하고 있는것 필터링
df.filter(df.color.like("%ello%")).show() # SQL like와 같은 역할. 정규표현식은 rlike 사용
## 컬럼 값 갱신하기
# withColumn(col, val)은 컬럼의 값을 변경할 수 있게 한다.
df2=df.withColumn("weight", df.weight*1000)
# when()으로 조건도 추가할 수 있다.
df3 = df.withColumn("weight", when(df.color == "yellow", df.weight*1000).when(...).otherwise(df.weight))
참고
https://parkaparka.tistory.com/18
https://sparkbyexamples.com/pyspark/pyspark-where-filter/
https://sparkbyexamples.com/pyspark/pyspark-update-a-column-with-value/
'Data Engineering' 카테고리의 다른 글
[pyspark] DataFrame에서 json 문자열을 컬럼으로 바꾸기 (2) | 2022.04.20 |
---|
Comments