{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","hash":"257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

Koalas - Pandas для Spark

Синтаксис Spark не схож с Pandas, поэтому пользователю тяжело переключится с одного на другое. Для примера, с помощью Pandas и PySpark создадим из csv-файла DataFrame, в который добавим новую колонку ‘x2’ со значениями из колонки x во второй степени.

Pandas:

Import pandas as pd Df= pd.read_csv(“data.csv”) Df.columns=[‘x’, ‘y’, ‘z’] Df[‘x2’]=df.x*df.x

PySpark:

Df=(spark.read .option(“inferSchema”, “true”) .csv(“data.csv”)) Df=df.toDF(‘x’, ‘y’, ‘z’) Df=df.withColumn(‘x2’, df.x*df.x)

Синтаксис PySpark интуитивно менее понятен, чем Pandas, в связи с чем у аналитика данных возникают сложности в использовании инструментов PySpark. Овладение ими занимает определенное время, что в условиях сжатых сроков выполнения задач, может быть критично.

На помощь приходит библиотека Koalas, которая для версий Spark 3.1 и ниже является отдельной, но начиная с 3.2 уже включена в PySpark из коробки.

В данной статье постараюсь ответить на вопрос: а так ли мягки коалы на ощупь, как и панды?

Для начала импортируем необходимые библиотеки:

import pandas as pd import numpy as np import databricks.koalas as ks from pyspark.sql import SparkSession

Создадим последовательность из списка значений и разрешим создать стандартный индекс:

s = ks.Series([1, 3, 5, np.nan, 6, 8])

Получаем результат:

Теперь создадим словарь объектов, которые могут быть преобразованы в последовательность:

kdf = ks.DataFrame( {'a': [1, 2, 3, 4, 5, 6], 'b': [100, 200, 300, 400, 500, 600], 'c': ["one", "two", "three", "four", "five", "six"]}, index=[10, 20, 30, 40, 50, 60])

Результат:

Создадим DataFrame (DF), используя numpy массив с индексами из дат и названными колонками.

dates = pd.date_range('20130101', periods=6) pdf = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))

В результате получим таблицу такого вида:

Следующим шагом конвертируем Pandas DF в Koalas DF.

kdf = ks.from_pandas(pdf)

И получаем идентичный результат:

Также возможно преобразование Spark DF в Koalas DF, что и разберем ниже.

Создадим Spark DF из Pandas DF:

spark = SparkSession.builder.getOrCreate() sdf = spark.createDataFrame(pdf) sdf.show()

Результат:

А теперь создадим Koalas DF:

kdf = sdf.to_koalas()

Результат аналогичный предыдущему:

Как создавать DF мы поняли. Теперь разберемся как данные просматривать. Рассмотрим основные команды и как они работают.

kdf.head()
kdf.index
kdf.columns
kdf.to_numpy()

Describe показывает краткую статистику данных:

kdf.describe()

Сортировка:

kdf.sort_values(by='B')

Любой человек, знакомый с Pandas, может сказать: «И что тут сложного? Обычные примеры использования библиотеки, похожей на Pandas». Но я напомню, что все эти действия происходят на Spark, что решает проблему масштабируемости обработки данных и обеспечивает “мягкий вход” аналитиков в Spark.

0
Комментарии
-3 комментариев
Раскрывать всегда