본문 바로가기

Data/Data Analysis

[Pyspark] pyspark 함수 정리(1)

반응형


csv, parquet파일 읽어오기

1
2
3
4
5
6
7
8
9
10
# CSV 파일 읽기
df = spark.read.csv("...")
df.printSchema()
df.show()
 
# parquet으로 저장된 파일 읽기
 
df2 = spark.read.parquet("...")
df2.printSchema()
df2.show()


agg(*exprs)

exprs에 들어있는 표현식으로 dataframe 계산

"age" : "max" -> age column에서 최대값을 반환


1
2
3
4
5
6
df.agg({"age""max"}).collect()
>>> [Row(max(age) = 5)]
 
from pyspark.sql import functions as F
df.agg(F.min(df.age)).collect()
>>> [Row(min(age) = 2)]


alias(alias)

지정된 dataframe과 같은 dataframe을 생성

1
2
3
4
5
6
from pyspark.sql.functions import *
df_as1 = df.alias("df_as1")
df_as2 = df.alias("df_as2")
joined_df = df_as1.join(df_as2. col("df_as1.name"== col("df_as2.name"), 'inner')
joined_df.select("df_as1.name""df_as2.name""df_as2.age").collect()
>>>[Row(name='Bob', name='Bob', age=5), Row(name='Alice', name='Alice', age=2)]


cache()

일하면서 알게된것인데 SQL구문으로 dataframe을 만들면 그뒤에 한번액션을 취할때마다 dataframe이 만들어지고 해당 액션이 끝나게되면 메모리상에서 사라지게된다. 따라서 자주 불리게되는 dataframe같은 경우에는 cache라는 함수를 사용하여 메모리에 남겨두는게 실행속도에 많은 도움이 된다

1
df_as1.cache()


collect()

해당 dataframe의 모든 row를 반환해준다
1
2
df.collect()
>>> [Row(age=2, name='Alice'), Row(age=5, name='Bob')]


columns

해당 dataframe의 모든 columns name을 반환한다

1
2
df.columns
>>> ['age''name']


corr(col1, col2, method=None)

두개의 column의 correlation을 계산한다 col1, col2가 없을경우에는 모든column끼리 correlation계산

count()

해당 dataframe의 모든 row수를 반환

1
2
df.count()
>>> 2


describe(*cols)

지정된 column의 정보를 표시해준다. 여기서 정보는 count, mean, stddev, min, max가 포함되어있다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
>>> df.describe(['age']).show()
+-------+------------------+
|summary|               age|
+-------+------------------+
|  count|                 2|
|   mean|               3.5|
| stddev|2.1213203435596424|
|    min|                 2|
|    max|                 5|
+-------+------------------+
>>> df.describe().show()
+-------+------------------+-----+
|summary|               age| name|
+-------+------------------+-----+
|  count|                 2|    2|
|   mean|               3.5| null|
| stddev|2.1213203435596424| null|
|    min|                 2|Alice|
|    max|                 5|  Bob|
+-------+------------------+-----+


반응형

'Data > Data Analysis' 카테고리의 다른 글

[Pyspark] pyspark 함수 정리(3)  (0) 2019.01.15
[Pyspark] pyspark 함수 정리(2)  (0) 2019.01.11
[SQL] OVER함수 및 PARTITION BY 사용법  (0) 2019.01.07
[SQL]collect_list 함수 사용  (0) 2019.01.07
[SQL] strptime 함수 사용하기  (0) 2018.12.27