Как выбрать диапазон строк из кадра данных в PySpark?
Кадр данных в PySpark определяется общей коллекцией данных, которую можно использовать для запуска на компьютерах и структурирования данных в формате строк и столбцов. Диапазон строк определяет горизонтальную линию (набор нескольких значений в зависимости от условия) в наборе данных. Обычно диапазон устанавливает самые низкие и самые высокие значения. В Python у нас есть несколько встроенных функций, таких как filter(),where() и Collect(), для выбора диапазона строк из кадра данных в PySpark.
Синтаксис
В примерах используется следующий синтаксис:
createDataFrame()
Это встроенный метод в Python, который принимает аргумент схемы для определения схемы кадра данных.
filter()
Filter() — это встроенная функция Python, которая определяет и позволяет перебирать определенные строки или столбцы в соответствии с заданным условием.
where()
Это встроенная функция Python, которая используется для установки определенного условия на основе строк или столбцов и его возврата определенным элементом.
collect()
Pyspark Collect используется для доступа ко всем элементам из данного набора данных и используется в циклах.
show()
show() — это встроенный метод Python, который используется в конце программы для получения результата.
Требования к установке –
pip install pyspark
Использование CreateDataframe()
CreateDataframe следует за модулем PySpark, который принимает два параметра: data_name (устанавливает значение каждого столбца в каждой строке) и data_Columns (устанавливает значение, определяя все столбцы).
Пример
В следующем примере мы запустим программу, создав SparkSession.builder и установив имя базы данных с помощью appName(), а также назначим функцию getOrCreate(), которая создаст сеанс и сохранит его в переменной spark. Затем установите значения данных базы данных клиентов в переменной customer_Data. Далее задайте все значения в переменной data_Columns. Теперь создайте Dataframe, используя метод createDataFrame(), который принимает два параметра — customer_Data и data_Columns, которые структурируют формат в табличной форме, соединяются с искрой и сохраняют его в переменной customer_DF. Табличные формы отображают значения в строках и столбцах. Наконец, мы используем метод show() с customer_DF, чтобы получить общие данные каждого столбца.
# Creation of SparkSession
spark = SparkSession.builder \
.appName('CUSTOMER') \
.getOrCreate()
# customer DataFrame
customer_Data = [("PREM KUMAR", 1281, "AC", 40000,4000),
("RATAN SINGH", 1289, "HOME THEATER", 35000, 5000),
("DAVID K", 1221, "NIKON CAMERA", 88000, 10000),
("JONATHAN REDDY", 1743, "GEYSER", 15000, 500),
("JASPREET BRAR", 1234, "HP LAPTOP", 78000, 3564),
("NEIL KAMANT", 1222, "WASHING MACHINE", 25000, 2000)
]
data_Columns = ["CUSTOMER NAME","PRODUCT ID","PRODUCT NAME",
"Actual Price","EMI PER MONTH"]
customer_DF = spark.createDataFrame(customer_Data, data_Columns)
customer_DF.show()
Выход
+--------------+----------+---------------+------------+-------------+
| CUSTOMER NAME|PRODUCT ID| PRODUCT NAME|Actual Price|EMI PER MONTH|
+--------------+----------+---------------+------------+-------------+
| PREM KUMAR| 1281| AC| 40000| 4000|
| RATAN SINGH| 1289| HOME THEATER| 35000| 5000|
| DAVID K| 1221| NIKON CAMERA| 88000| 10000|
|JONATHAN REDDY| 1743| GEYSER| 15000| 500|
| JASPREET BRAR| 1234| HP LAPTOP| 78000| 3564|
| NEIL KAMANT| 1222|WASHING MACHINE| 25000| 2000|
+--------------+----------+---------------+------------+-------------+
Использование метода фильтра
Этот метод следует приведенной выше программе, и его использование позволяет нам установить условие диапазона строк из кадра данных.
Пример
В следующем примере мы следуем коду предыдущего примера, и здесь он позволяет нам установить два условия с помощью фрейма данных, т.е. DF, который принимает значения параметров как фактическую цену, который устанавливает диапазон условий строк между ценой от 25 000 до 40 000 и находит конкретный диапазон из строк. Наконец, мы используем метод show() для получения результата.
DF.filter((DF['Actual Price'] >= 25000) & (DF['Actual Price'] <= 40000)).show()
Выход
+-------------+----------+---------------+------------+-------------+
|CUSTOMER NAME|PRODUCT ID| PRODUCT NAME|Actual Price|EMI PER MONTH|
+-------------+----------+---------------+------------+-------------+
| PREM KUMAR| 1281| AC| 40000| 4000|
| RATAN SINGH| 1289| HOME THEATER| 35000| 5000|
| NEIL KAMANT| 1222|WASHING MACHINE| 25000| 2000|
+-------------+----------+---------------+------------+-------------+
Использование метода Где()
Этот метод следует первому примеру из этой статьи. Здесь он использует методwhere() для установки диапазона строк из кадра данных в PySpark.
Пример
В следующем примере мы будем использовать встроенный методwhere(), который принимает два условия с помощью оператора and(&) для получения диапазона строк. Далее методwhere() использует метод show() для получения результата.
DF.where((DF['EMI PER MONTH'] >= 10000) & (DF['EMI PER MONTH'] <= 38000)).show()
Выход
+-------------+----------+------------+------------+-------------+
|CUSTOMER NAME|PRODUCT ID|PRODUCT NAME|Actual Price|EMI PER MONTH|
+-------------+----------+------------+------------+-------------+
| DAVID K| 1221|NIKON CAMERA| 88000| 10000|
+-------------+----------+------------+------------+-------------+
Использование метода Collect()
Этот метод следует первому примеру, позволяя ему выполнять итерацию по определенным столбцам, чтобы получить диапазон строк из кадра данных в PySpark.
Пример
В следующем примере мы будем использовать цикл for, где переменная строка перебирает фрейм данных с помощью метода Collect(), и он будет перебирать все элементы из данного фрейма данных. Теперь он использует оператор if для установки условия: если фактическая цена находится в диапазоне от 30 000 до 50 000, он возвращает определенный диапазон строк. Затем он использует метод print(), который принимает строку в качестве параметра для возврата результата.
for row in DF.collect():
if 30000 <= row['Actual Price'] <= 50000:
print(row)
Выход
Row(CUSTOMER NAME='PREM KUMAR', PRODUCT ID=1281, PRODUCT NAME='AC', Actual Price=40000, EMI PER MONTH=4000)
Row(CUSTOMER NAME='RATAN SINGH', PRODUCT ID=1289, PRODUCT NAME='HOME THEATER', Actual Price=35000, EMI PER MONTH=5000)
Заключение
Мы обсудили различные методы получения диапазона строк из кадра данных в PySpark. Все методы следуют первому примеру, поскольку в этом примере задается полная входная структура данных строк и столбцов. PySpark используется ведущими транснациональными корпорациями, такими как Amazon, Walmart, Trivago и многими другими.