데이터 프레임 생성하기
- spark.createDataFrame()
dict_01 = {'Name': ['Chulmin', 'Wansoo','Myunghyun','Hyunjoo', 'Chulman'],
'Year': [2011, 2016, 2015, 2015, 2011],
'Gender': ['Male', 'Male', 'Male', 'Female', 'Male']
}
# 딕셔너리를 DataFrame으로 변환
data_pdf = pd.DataFrame(dict_01)
# pandas DataFrame은 spark DataFrame으로 변환
data_sdf = spark.createDataFrame(data_pdf)
특정 컬럼 선택(select)하기
- select() 로 하나 이상의 컬럼을 인자로 넣으면 데이터프레임을 반환
- show() 를 해야 반환 결과를 볼 수 있음
data_sdf.select('Name', 'Year').show()
# 모든 컬럼 보기
data_sdf.select('*').show()
▶︎ (유의) 컬럼 그 자체만 호출
- Pandas 처럼 array 까지 반환하지만, spark에서 아래와 같이 쓰면, 컬럼 값 '그 자체'만 지칭하는 것이다.
- 따라서 특정 컬럼의 내용을 보고 싶으면 아래와 같이 select().show()와 함께 써야 한다.
# spark DataFrame의 ['column']는 컬럼 자체를 지정함.
data_sdf.select(data_sdf.Name, data_sdf.Year).show()
data_sdf.select(data_sdf['Name'], data_sdf['Year']).show()
- 아래와 같이 col() 함수를 사용해서도 컬럼을 각각 명시적으로 지정할 수도 있다.
- 위와 동일하게 값을 제외한 컬럼 그 자체를 지칭하는 것이다.
from pyspark.sql.functions import col
# pyspark.sql.functions의 col() 함수를 이용하여 명시적으로 컬럼명을 지정할 수 있음.
data_sdf.select(col('Name'), col('Year')).show()
조건으로 filter하기
- SQL의 where와 유사하게 특정 조건을 만족하는 레코드를 dataframe으로 반환한다.
- 사용 예시 2가지를 참고
# 이름이 김 인 사람만
data_sdf.filter(data_sdf['Name'] == 'Kim').show()
# 이렇게도 가능(전체 조건을 SQL처럼 쓰되, ""로 묶어줌)
data_sdf.filter("Name == 'Kim'").show()
# 여러개 조건은 & 또는 | 을 사용하고, 각 조건은 ()로 묶기
data_sdf.filter( (data_sdf['Gender'] == 'Male') & (col('Year') > 2011) ).show()
like 조건 수행하기
# 기본 방식
data_sdf.filter(col('Name').like('KIM%')).show()
# SQL 식과 유사한 방식
data_sdf.filter(" Name like 'C%' ").show()
필터링 한 후 특정 컬럼만 확인하기
data_sdf.filter(upper(data_sdf['Name']).like('%M%')).select('Year', 'Gender').show()
728x90
'Python > spark(python)' 카테고리의 다른 글
[Spark] 레코드와 컬럼 삭제 / 결측치 확인 및 처리 (0) | 2023.10.25 |
---|---|
[Spark] 컬럼 생성/업데이트를 위한 withColumn() , substring(), split() (0) | 2023.10.24 |
[Spark] spark DataFrame의 orderBy( )와 aggregation (1) | 2023.10.24 |
[Spark] databrick으로 데이터 로드하고, 기술통계량 확인하기 (1) | 2023.10.23 |
[Spark] Databricks로 시작하기 (0) | 2023.10.23 |