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

Читать онлайн.
Название Библиотеки Python Часть 2. Практическое применение
Автор произведения Джейд Картер
Жанр
Серия
Издательство
Год выпуска 2025
isbn



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

index=False)

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

      saved_revenues = pd.read_sql("SELECT * FROM product_revenues", engine)

      print(saved_revenues)

      ```

      Результат:

      ```

      product revenue

      0 Laptop 3000

      1 Phone 2500

      2 Tablet 2100

      ```

      Задача 6: Фильтрация данных по динамическому запросу

      Описание:

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

      Решение:

      ```python

      def filter_products_by_price(min_price):

      query = f"SELECT * FROM sales WHERE price > {min_price}"

      result_df = pd.read_sql(query, engine)

      return result_df

      # Фильтрация продуктов с ценой выше 400

      filtered_products = filter_products_by_price(400)

      print(filtered_products)

      ```

      Результат:

      ```

      id product price quantity

      0 1 Laptop 1000 3

      1 2 Phone 500 5

      ```

      Задача 7: Определение наиболее активных пользователей

      Описание:

      В таблице `activity_log` содержатся данные о действиях пользователей:

      – `id` – идентификатор записи.

      – `user_id` – идентификатор пользователя.

      – `action` – выполненное действие.

      – `timestamp` – время выполнения действия.

      Определите, кто из пользователей совершил наибольшее количество действий.

      Решение:

      ```python

      from sqlalchemy import Table, Column, Integer, String, DateTime

      from datetime import datetime

      # Определение таблицы activity_log

      activity_log = Table(

      'activity_log', metadata,

      Column('id', Integer, primary_key=True),

      Column('user_id', Integer),

      Column('action', String),

      Column('timestamp', DateTime)

      )

      metadata.create_all(engine)

      # Добавление данных

      with engine.connect() as conn:

      conn.execute(activity_log.insert(), [

      {'user_id': 1, 'action': 'login', 'timestamp': datetime(2025, 1, 1, 10, 0)},

      {'user_id': 1, 'action': 'purchase', 'timestamp': datetime(2025, 1, 1, 10, 5)},

      {'user_id': 2, 'action': 'login', 'timestamp': datetime(2025, 1, 1, 11, 0)},

      {'user_id': 1, 'action': 'logout', 'timestamp': datetime(2025, 1, 1, 10, 10)},

      {'user_id': 2, 'action': 'purchase', 'timestamp': datetime(2025, 1, 1, 11, 5)},

      {'user_id': 2, 'action': 'logout', 'timestamp': datetime(2025, 1, 1, 11, 10)}

      ])

      # Чтение данных

      activity_df = pd.read_sql("SELECT * FROM activity_log", engine)

      # Подсчет количества действий по пользователям

      user_activity = activity_df.groupby('user_id')['id'].count().reset_index()

      user_activity.columns = ['user_id', 'action_count']

      # Поиск самого активного пользователя

      most_active_user = user_activity.loc[user_activity['action_count'].idxmax()]

      print(most_active_user)

      ```

      Результат:

      ```

      user_id 1

      action_count 3

      ```

      Задача 8: Подсчет действий по типу

      Описание: Для каждого типа действия из таблицы `activity_log` подсчитайте, сколько раз оно выполнялось.

      Решение:

      ```python

      # Подсчет количества каждого типа действия

      action_counts = activity_df['action'].value_counts().reset_index()

      action_counts.columns = ['action', 'count']

      print(action_counts)

      ```

      Результат:

      ```

      action count

      0 login 2

      1 purchase 2

      2 logout 2

      ```

      Задача 9: Анализ временных меток

      Описание: Определите, в какие часы дня пользователи наиболее активны.

      Решение:

      ```python

      # Извлечение часа из временных меток

      activity_df['hour'] = activity_df['timestamp'].dt.hour

      # Подсчет действий по часам

      hourly_activity = activity_df.groupby('hour')['id'].count().reset_index()

      hourly_activity.columns = ['hour', 'action_count']

      print(hourly_activity)

      ```

      Результат:

      ```

      hour action_count

      0 10 3

      1 11 3

      ```

      Задача