ISBN :
Возрастное ограничение : 12
Дата обновления : 29.01.2025
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
```
Задача 10: Создание таблицы доходов от пользователей
Описание: Используя таблицу `sales`, определите, сколько дохода принёс каждый пользователь, и сохраните результаты в таблицу `user_revenues`.
Решение:
```python
# Добавление данных о продажах с указанием user_id
with engine.connect() as conn:
conn.execute(sales.insert(), [
{'product': 'Laptop', 'price': 1000, 'quantity': 1, 'user_id': 1},
{'product': 'Phone', 'price': 500, 'quantity': 2, 'user_id': 1},
{'product': 'Tablet', 'price': 300, 'quantity': 3, 'user_id': 2}
])
# Чтение данных из sales
sales_df = pd.read_sql("SELECT * FROM sales", engine)
# Расчёт дохода для каждого пользователя
sales_df['revenue'] = sales_df['price'] * sales_df['quantity']
user_revenues = sales_df.groupby('user_id')['revenue'].sum().reset_index()
# Сохранение в новую таблицу
user_revenues.to_sql('user_revenues', engine, if_exists='replace', index=False)
# Проверка результатов
saved_user_revenues = pd.read_sql("SELECT * FROM user_revenues", engine)
print(saved_user_revenues)
```
Результат:
```
user_id revenue
0 1 2000
1 2 900
```
Задача 11: Поиск последнего действия пользователей
Описание:Для каждого пользователя из таблицы `activity_log` найдите его последнее действие.
Решение:
```python
# Поиск последнего действия
last_actions = activity_df.sort_values('timestamp').groupby('user_id').last().reset_index()
last_actions = last_actions[['user_id', 'action', 'timestamp']]
print(last_actions)
```
Все книги на сайте предоставены для ознакомления и защищены авторским правом