Джейд Картер

Библиотеки Python Часть 2. Практическое применение


Скачать книгу

библиотеки позволяют решать задачи, которые ранее казались невозможными из-за ограничений памяти или производительности, и они помогут вам эффективно работать с данными любого масштаба.

Задачи для практики

      Задачи для Dask

      Задача 1: Обработка большого CSV-файла

      Описание: У вас есть CSV-файл размером 10 ГБ с данными о продажах. Вам нужно вычислить общую сумму продаж по регионам, но файл слишком большой для работы в Pandas.

      Решение:

      ```python

      import dask.dataframe as dd

      # Загрузка большого CSV-файла

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

      # Проверка структуры данных

      print(df.head()) # Показываем первые строки

      # Группировка по регионам и подсчет общей суммы продаж

      sales_by_region = df.groupby('region')['sales'].sum()

      # Выполнение вычислений

      result = sales_by_region.compute()

      print(result)

      ```

      Объяснение:

      – `dd.read_csv` позволяет загружать файлы большего объема, чем объем оперативной памяти.

      – `compute` выполняет ленивые вычисления.

      Задача 2: Преобразование данных в формате JSON

      Описание: Дан файл в формате JSON, содержащий информацию о транзакциях. Необходимо отфильтровать транзакции с суммой менее 1000 и сохранить отфильтрованные данные в новый CSV-файл.

      Решение:

      ```python

      import dask.dataframe as dd

      # Загрузка JSON-файла

      df = dd.read_json('transactions_large.json')

      # Фильтрация данных

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

      # Сохранение результатов в новый CSV-файл

      filtered_df.to_csv('filtered_transactions_*.csv', index=False)

      print("Данные сохранены в файлы CSV.")

      ```

      Объяснение:

      – Dask автоматически разбивает данные на части, сохраняя их в несколько CSV-файлов.

      – Фильтрация выполняется параллельно.

      Задачи для PySpark

      Задача 3: Анализ логов

      Описание: Имеется файл логов сервера (формат CSV). Ваша задача – подсчитать количество ошибок (строки с `status = "ERROR"`) и вывести их общее количество.

      Решение:

      ```python

      from pyspark.sql import SparkSession

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

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

      # Загрузка данных из CSV-файла

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

      # Фильтрация строк с ошибками

      errors = df.filter(df['status'] == 'ERROR')

      # Подсчет количества ошибок

      error_count = errors.count()

      print(f"Количество ошибок: {error_count}")

      # Завершаем сессию Spark

      spark.stop()

      ```

      Объяснение:

      – `filter` позволяет выбрать строки с определенным значением.

      – `count` подсчитывает количество строк после фильтрации.

      Задача 4: Средняя сумма покупок

      Описание: Дан CSV-файл с данными о покупках. Ваша задача – вычислить среднюю сумму покупок для каждого клиента.

      Решение:

      ```python

      from pyspark.sql import SparkSession

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

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

      # Загрузка данных

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

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

      avg_purchases = df.groupBy('customer_id').avg('purchase_amount')

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

      avg_purchases.show()

      #