일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Python
- hive
- Google Spreadsheet
- Google Excel
- google apps script
- Redshift
- dataframe
- Apache
- PANDAS
- Excel
- django
- Github
- GIT
- SQL
- gas
- matplotlib
- list
- Java
- math
- 파이썬
- array
- PySpark
- PostgreSQL
- c#
- Kotlin
- string
- numpy
- Tkinter
- Mac
- Today
- Total
달나라 노트
Python pyspark : createDataFrame (spark dataframe 생성하기. pandas dataframe을 spark dataframe으로 변환하기. spark dataframe을 pandas dataframe으로 변환하기) 본문
Python pyspark : createDataFrame (spark dataframe 생성하기. pandas dataframe을 spark dataframe으로 변환하기. spark dataframe을 pandas dataframe으로 변환하기)
CosmosProject 2021. 5. 19. 04:46
pyspark를 이용하면 쿼리를 돌려서 엑셀 형태의 dataframe을 생성하고 다룰 수 있으며
쿼리를 돌리지 않아도 직접 생성할 수 있습니다.
pyspark에서 dataframe을 생성하는 방법은 여러 가지가 있습니다만,
pandas를 알고있다면 가장 익숙한건 pandas dataframe을 spark dataframe으로 만드는 것입니다.
from pyspark.sql import SparkSession
import pandas as pd
spark = SparkSession.builder.getOrCreate() # 1
df_test = pd.DataFrame({ # 2
'a': [1, 2, 3],
'b': [10.0, 3.5, 7.315],
'c': ['apple', 'banana', 'tomato']
})
df_spark = spark.createDataFrame(df_test) # 3
df_spark.show() # 4
df_spark.show(2) # 5
df_spark.printSchema() # 6
-- Result
+---+------+-------+
| a| b| c|
+---+------+-------+
| 1| 10.0| apple|
| 2| 3.5| banana|
| 3| 7.315| tomato|
+---+------+-------+
+---+------+-------+
| a| b| c|
+---+------+-------+
| 1| 10.0| apple|
| 2| 3.5| banana|
+---+------+-------+
root
|-- a: long (nullable = true)
|-- b: double (nullable = true)
|-- c: string (nullable = true)
1. pyspark 사용을 위해선 먼저 SparkSession을 initialize하는 것에서 시작합니다.
2. pandas dataframe을 생성합니다.
3. spark dataframe을 생성하기 위해서는 createDataFrame method를 사용합니다.
1번에서 생성한 spark class의 createDataFrame method를 이용하여 pandas dataframe으로 spark dataframe을 생성해줍시다.
4. show method는 spark dataframe의 모든 내용을 보여줍니다.
5. show method에 숫자를 argument로 제시하면 제시된 숫자만큼의 행만 보여줍니다.
show(2)는 가장 위에 있는 2개 행의 내용을 보여줍니다.
6. Schema라는 것의 의미는 spark dataframe의 column이라고 생각하면 됩니다.
printSchema method는 spark의 각 컬럼들과 컬럼별 정보를 보여줍니다.
from pyspark.sql import SparkSession
from pyspark.sql import Row
spark = SparkSession.builder.getOrCreate()
df_spark = spark.createDataFrame([
Row(a=1, b=10.0, c='apple'),
Row(a=2, b=3.5, c='banana'),
Row(a=3, b=7.315, c='tomato'),
])
df_spark.show()
df_spark.show(2)
df_spark.printSchema()
-- Result
+---+------+-------+
| a| b| c|
+---+------+-------+
| 1| 10.0| apple|
| 2| 3.5| banana|
| 3| 7.315| tomato|
+---+------+-------+
+---+------+-------+
| a| b| c|
+---+------+-------+
| 1| 10.0| apple|
| 2| 3.5| banana|
+---+------+-------+
root
|-- a: long (nullable = true)
|-- b: double (nullable = true)
|-- c: string (nullable = true)
또한 위처럼 pyspark.sql.Row를 이용하여 spark dataframe을 생성할 수도 있습니다.
그러면 반대로 spark dataframe을 pandas dataframe으로 변환하려면 어떻게해야할까요?
to_pandas라는 method가 있습니다.
from pyspark.sql import SparkSession
from pyspark.sql import Row
spark = SparkSession.builder.getOrCreate()
df_spark = spark.createDataFrame([ # 1
Row(a=1, b=10.0, c='apple'),
Row(a=2, b=3.5, c='banana'),
Row(a=3, b=7.315, c='tomato'),
])
df_pandas = df_spark.toPandas()
print(df_pandas)
-- Result
a b c
0 1 10.000 apple
1 2 3.500 banana
2 3 7.315 tomato
위처럼 toPandas() method를 이용하여 spark dataframe을 pandas dataframe으로 변경할 수 있는 것을 알 수 있습니다.
'Python > Python pyspark' 카테고리의 다른 글
Python pyspark : sql (spark에서 hive 쿼리 돌리기) (0) | 2021.05.19 |
---|---|
Python pyspark : columns (spark dataframe의 column 리스트 반환) (2) | 2021.05.19 |
Python pyspark : filter (spark dataframe filtering) (0) | 2021.05.19 |
Python pyspark : withColumn (spark dataframe에 새로운 컬럼 추가하기) (0) | 2021.05.19 |
Python pyspark : select (Dataframe에서 column 추출하기) (0) | 2021.05.19 |