스택큐힙리스트

스파크 DataFrame 열을 파이썬 리스트로 변환하십시오. 본문

카테고리 없음

스파크 DataFrame 열을 파이썬 리스트로 변환하십시오.

스택큐힙리스트 2023. 12. 4. 16:19
반응형

두 개의 열(mvv와 count)을 가진 데이터프레임을 처리하고 있습니다.


+---+-----+
|mvv|count|
+---+-----+
| 1 | 5 |
| 2 | 9 |
| 3 | 3 |
| 4 | 1 |

mvv 값과 count 값을 포함하는 두 개의 리스트를 얻고 싶습니다. 아래와 같이 생각하고 있습니다.


mvv = [1,2,3,4]
count = [5,9,3,1]

그래서, 다음 코드를 시도해 보았습니다: 첫 번째 줄은 행의 파이썬 리스트를 반환해야 합니다. 첫 번째 값을 확인하고 싶었습니다:


mvv_list = mvv_count_df.select('mvv').collect()
firstvalue = mvv_list[0].getInt(0)

하지만 두 번째 줄에서 에러 메시지가 나오네요:



AttributeError: getInt


답변 1

보세요, 왜 이렇게 하시는 방식이 작동하지 않는지 알려드리겠습니다. 먼저, Row 타입에서 정수를 가져오려고 시도하고 있습니다. collect의 출력은 다음과 같습니다:


>>> mvv_list = mvv_count_df.select('mvv').collect()
>>> mvv_list[0]
Out: Row(mvv=1)

이렇게 하면 mvv 값을 얻을 수 있습니다. 만약 배열의 모든 정보를 얻고 싶다면, 다음과 같이 하실 수 있습니다:


>>> mvv_array = [int(row.mvv) for row in mvv_list.collect()]
>>> mvv_array
Out: [1,2,3,4]

하지만, 다른 열에 대해서 동일한 방식을 시도한다면, 다음과 같은 결과가 나옵니다:

>>> mvv_count = [int(row.count) for row in mvv_list.collect()]
결과: TypeError: int()의 인자는 문자열 또는 숫자여야하며, 'builtin_function_or_method'여서는 안됩니다.

이는 count가 내장 메서드이기 때문에 발생합니다. 또한 열 이름이 count와 동일합니다. 이를 해결하기 위한 우회 방법은 count 열 이름을 _count로 변경하는 것입니다:


>>> mvv_list = mvv_list.selectExpr(mvv as mvv, count as _count)
>>> mvv_count = [int(row._count) for row in mvv_list.collect()]

그러나 이런 우회 방법은 필요하지 않습니다. 사전 구문을 사용하여 열에 액세스할 수 있습니다:


>>> mvv_array = [int(row['mvv']) for row in mvv_list.collect()]
>>> mvv_count = [int(row['count']) for row in mvv_list.collect()]

그리고 이제 최종적으로 작동합니다!

답변 2

제목: 파이썬의 리스트로 스파크 데이터프레임 열을 변환하는 방법
서론:
빅데이터 분석은 현대 비즈니스와 기술 분야에서 점점 중요해지고 있는 주제 중 하나입니다. 스파크(DataFrames)는 대량의 데이터를 처리하고 분석하는 데 매우 효과적인 도구 중 하나로 알려져 있습니다. 이러한 스파크 데이터프레임은 데이터 조작 작업을 용이하게 해주는 다양한 함수와 기능을 제공합니다. 이에 따라 데이터프레임의 열을 파이썬 리스트로 변환하는 방법은 다양한 분석 작업에서 매우 유용하게 활용될 수 있습니다.
본문:
스파크 DataFrame의 열을 파이썬 리스트로 변환하는 방법은 간단하면서도 효과적입니다. 프로그래밍 언어인 파이썬의 리스트는 데이터를 보관하고 처리하는 이상적인 자료구조 중 하나이기 때문에 이러한 변환이 필요한 경우가 많습니다.
첫 번째로, 스파크 DataFrame의 열을 파이썬 리스트로 변환하는 가장 간단한 방법은 `collect()` 함수를 사용하는 것입니다. `collect()` 함수는 DataFrame의 모든 로우를 수집하여 로컬의 파이썬 리스트에 저장합니다. 예를 들어, 다음과 같은 코드를 사용하여 열을 리스트로 변환할 수 있습니다:
```
df = spark.read.csv(data.csv, header=True)
column_list = df.select(column_name).collect()
```
두 번째로, `collect()` 함수는 전체 DataFrame을 로컬 메모리에 수집하기 때문에 대규모 데이터를 다루는 경우 성능 문제가 발생할 수 있습니다. 이를 회피하기 위해 `select()` 및 `rdd()` 함수를 사용하여 스파크 DataFrame의 열을 RDD(Resilient Distributed Dataset)로 변환한 후, RDD의 `collect()` 함수를 사용하여 파이썬 리스트로 변환할 수 있습니다. 예를 들어, 다음과 같은 코드를 사용할 수 있습니다:
```
df = spark.read.csv(data.csv, header=True)
column_rdd = df.select(column_name).rdd
column_list = column_rdd.collect()
```
결론:
스파크 DataFrame은 대용량의 데이터를 다루고 분석하는 도구로 많은 기능을 제공합니다. 시스템의 성능을 향상시키기 위해 데이터프레임의 열을 파이썬 리스트로 변환하는 방법을 알아보았습니다. `collect()` 함수를 사용하여 열을 리스트로 변환하거나, `select()` 및 `rdd()` 함수를 사용하여 변환한 후 RDD로 처리하는 방법을 소개했습니다. 이러한 기술은 다양한 분석 작업에서 효율적이고 유용하게 활용될 수 있으며, 파이썬의 리스트는 데이터를 처리하는 데 이상적인 자료구조입니다. 이러한 방법을 통해 빅데이터 분석 프로젝트에서 원하는 데이터를 손쉽게 추출하고 처리할 수 있습니다.

반응형
Comments