Библиотеки Python Часть 2. Практическое применение. Джейд Картер. Читать онлайн. Newlib. NEWLIB.NET

Автор: Джейд Картер
Издательство: Автор
Серия:
Жанр произведения:
Год издания: 2025
isbn:
Скачать книгу
то она станет для вас не просто руководством, а вдохновением, мотивирующим к изучению новых возможностей. Помните, что любое знание становится ценным, когда его можно применить на практике.

      Спасибо за то, что выбрали эту книгу. Пусть она станет вашим верным спутником в мире Python и откроет двери к новым достижениям.

      С уважением,

      Джейд картер

      Глава 1. Работа с большими данными

1.1 Распределенная обработка данных с Dask и PySpark

      Работа с большими объемами данных требует инструментов, которые позволяют эффективно распределять вычисления между несколькими процессорами или даже серверами. Python предлагает две мощные библиотеки для таких задач – Dask и PySpark. Каждая из них разработана для обработки больших данных, но они имеют свои уникальные особенности и подходы. Разберем их по отдельности, чтобы понять, как их использовать, и приведем примеры.

      Dask: инструмент для масштабирования локальных задач

      Dask – это библиотека, которая позволяет расширить вычисления на вашем компьютере, эффективно распределяя их между ядрами процессора или несколькими машинами в кластере. Она идеально подходит для тех случаев, когда объем данных превышает доступную оперативную память, но вы хотите сохранить гибкость работы с Python.

      Основные особенности Dask:

      1. Dask совместим с большинством популярных библиотек Python, таких как Pandas, NumPy и Scikit-learn.

      2. Он поддерживает ленивые вычисления: операции выполняются только при необходимости.

      3. Dask позволяет работать как с массивами данных (аналог NumPy), так и с таблицами (аналог Pandas).

      Пример использования Dask для обработки данных:

      Предположим, у нас есть большой CSV-файл с данными о продажах. Его объем превышает объем оперативной памяти, поэтому обычные инструменты, такие как Pandas, не могут загрузить файл целиком.

      ```python

      import dask.dataframe as dd

      # Загрузка большого CSV-файла с помощью Dask

      df = dd.read_csv('sales_data_large.csv')

      # Выполнение простых операций (например, фильтрация по значению)

      filtered_df = df[df['sales'] > 1000]

      # Группировка и вычисление суммарных продаж

      sales_summary = filtered_df.groupby('region')['sales'].sum()

      # Выполнение вычислений (операции "ленивые", пока мы не вызовем .compute())

      result = sales_summary.compute()

      # Вывод результатов

      print(result)

      ```

      Объяснение кода:

      1. `dd.read_csv()`: Вместо загрузки всего файла в память, Dask загружает его частями (по "чанкам").

      2. Ленивые вычисления: Все операции, такие как фильтрация и группировка, откладываются до вызова `compute()`.

      3. Параллельное выполнение: Dask автоматически распределяет работу между всеми доступными ядрами процессора.

      Когда использовать Dask:

      – Когда ваши данные не помещаются в память.

      – Когда вы уже используете библиотеки Python, такие как Pandas или NumPy, и хотите масштабировать их.

      – Когда вам нужно быстро настроить распределенные вычисления на одной или нескольких машинах.

      PySpark: инструмент для кластерного вычисления

      PySpark – это Python-интерфейс для Apache Spark, платформы, разработанной специально для обработки больших данных. Spark работает на кластерах, что позволяет масштабировать вычисления до сотен машин.

      PySpark особенно популярен в случаях, когда данные хранятся в распределенных системах, таких как HDFS или Amazon S3.

      Основные особенности PySpark:

      1. PySpark работает с данными в формате **RDD** (Resilient Distributed Dataset) или DataFrame.

      2. Он поддерживает широкий спектр операций, включая трансформации данных, машинное обучение и потоковую обработку.

      3. PySpark интегрируется с Hadoop и другими системами для хранения больших данных.

      Пример использования PySpark для обработки данных:

      Допустим, у нас есть большие данные о транзакциях, хранящиеся в формате CSV, и мы хотим вычислить среднее значение транзакций по каждому клиенту.

      ```python

      from pyspark.sql import SparkSession

      # Создаем сессию Spark

      spark = SparkSession.builder.appName("TransactionAnalysis").getOrCreate()

      # Читаем данные из CSV-файла

      df = spark.read.csv('transactions_large.csv', header=True, inferSchema=True)

      # Выполняем трансформации данных

      # 1. Фильтрация транзакций с нулевой суммой

      filtered_df = df.filter(df['amount'] > 0)

      # 2. Группировка по клиенту и вычисление среднего значения

      average_transactions = filtered_df.groupBy('customer_id').avg('amount')

      # Показ результатов

      average_transactions.show()

      # Останавливаем Spark-сессию

      spark.stop()

      ```

      Объяснение кода:

      1. Создание SparkSession: Это точка входа для работы с PySpark.

      2.