Извините за проблему с запросом. Похоже, у вас другое имя столбца для значения лабораторной работы в таблице test. В качестве решения я предлагаю использовать test.labname вместо test.lab. Вот исправленный код:

import sqlite3
import pandas as pd

# Создаем соединение с БД
conn = sqlite3.connect(‘your_database.db’)

# Получаем схему таблицы test
cursor = conn.cursor()
cursor.execute(“PRAGMA table_info(test);”)
print(cursor.fetchall())

# Получаем первые 10 строк таблицы test
df_test = pd.read_sql_query(“SELECT * FROM test LIMIT 10;”, conn)
print(df_test)

# Находим минимальное значение дельты и сохраняем в df_min
min_query = “”“
SELECT uid, MIN((julianday(deadlines.deadlines) - julianday(test.first_commit_ts)) * 24) as min_diff
FROM test
JOIN deadlines ON test.labname = deadlines.labs
WHERE test.labname != ‘project1’
GROUP BY uid;
”“”
df_min = pd.read_sql_query(min_query, conn)
print(df_min)

# Находим максимальное значение дельты и сохраняем в df_max
max_query = “”“
SELECT uid, MAX((julianday(deadlines.deadlines) - julianday(test.first_commit_ts)) * 24) as max_diff
FROM test
JOIN deadlines ON test.labname = deadlines.labs
WHERE test.labname != ‘project1’
GROUP BY uid;
”“”
df_max = pd.read_sql_query(max_query, conn)
print(df_max)

# Находим среднее значение дельты и сохраняем в df_avg
avg_query = “”“
SELECT AVG((julianday(deadlines.deadlines) - julianday(test.first_commit_ts)) * 24) as avg_diff
FROM test
JOIN deadlines ON test.labname = deadlines.labs
WHERE test.labname != ‘project1’;
”“”
df_avg = pd.read_sql_query(avg_query, conn)
print(df_avg)

# Создаем таблицу со столбцами: uid, avg_diff, pageviews
views_diff_query = “”“
SELECT test.uid,
       AVG((julianday(deadlines.deadlines) - julianday(test.first_commit_ts)) * 24) as avg_diff,
       COUNT(news_views.date) as pageviews
FROM test
JOIN deadlines ON test.labname = deadlines.labs
JOIN news_views ON test.uid = news_views.uid
WHERE test.labname != ‘project1’
GROUP BY test.uid;
”“”
views_diff = pd.read_sql_query(views_diff_query, conn)
print(views_diff)

# Вычисляем коэффициент корреляции между количеством просмотров и значением дельты
correlation_coefficient = views_diff[‘pageviews’].corr(views_diff[‘avg_diff’])
print(correlation_coefficient)

# Закрываем соединение
conn.close()


Теперь код должен успешно выполнять все необходимые операции с учетом изменений. Замените 'your_database.db' на имя вашей базы данных и проверьте результаты.
[(0, ‘uid’, ‘TEXT’, 0, None, 0), (1, ‘labname’, ‘TEXT’, 0, None, 0), (2, ‘first_commit_ts’, ‘TIMESTAMP’, 0, None, 0), (3, ‘first_view_ts’, ‘TIMESTAMP’, 0, None, 0)]
uid labname first_commit_ts first_view_ts
0 user_17 project1 2020-04-18 07:56:45.408648 2020-04-18 10:56:55.833899
1 user_30 laba04 2020-04-18 13:36:53.971502 2020-04-17 22:46:26.785035
2 user_30 laba04s 2020-04-18 14:51:37.498399 2020-04-17 22:46:26.785035
3 user_14 laba04 2020-04-18 15:14:00.312338 2020-04-18 10:53:52.623447
4 user_14 laba04s 2020-04-18 22:30:30.247628 2020-04-18 10:53:52.623447
5 user_19 laba04 2020-04-20 19:05:01.297780 2020-04-21 20:30:38.034966
6 user_25 laba04 2020-04-20 19:16:50.673054 2020-05-09 23:54:54.260791
7 user_21 laba04 2020-04-21 17:48:00.487806 2020-04-22 22:40:36.824081
8 user_30 project1 2020-04-22 12:36:24.053518 2020-04-17 22:46:26.785035
9 user_21 laba04s 2020-04-22 20:09:21.857747 2020-04-22 22:40:36.824081
uid min_diff
0 user_1 None
1 user_10 None
2 user_14 None
3 user_17 None
4 user_18 None
5 user_19 None
6 user_21 None
7 user_25 None
8 user_28 None
9 user_3 None
10 user_30 None
uid max_diff
0 user_1 None
1 user_10 None
2 user_14 None
3 user_17 None
4 user_18 None
5 user_19 None
6 user_21 None
7 user_25 None
8 user_28 None
9 user_3 None
10 user_30 None
avg_diff
0 None
---------------------------------------------------------------------------
OperationalError Traceback (most recent call last)
/usr/local/lib/python3.10/dist-packages/pandas/io/sql.py in execute(self, *args, **kwargs)
2017 try:
-> 2018 cur.execute(*args, **kwargs)
2019 return cur

OperationalError: no such table: news_views

The above exception was the direct cause of the following exception:

DatabaseError Traceback (most recent call last)
3 frames
/usr/local/lib/python3.10/dist-packages/pandas/io/sql.py in execute(self, *args, **kwargs)
2028
2029 ex = DatabaseError(f"Execution failed on sql ‘{args[0]}’: {exc}")
-> 2030 raise ex from exc
2031
2032 @staticmethod

DatabaseError: Execution failed on sql ‘
SELECT test.uid,
AVG((julianday(deadlines.deadlines) - julianday(test.first_commit_ts)) * 24) as avg_diff,
COUNT(news_views.date) as pageviews
FROM test
JOIN deadlines ON test.labname = deadlines.labs
JOIN news_views ON test.uid = news_views.uid
WHERE test.labname != ‘project1’
GROUP BY test.uid;
’: no such table: news_views
Кажется, я неправильно понял структуру вашей базы данных. В коде используется таблица news_views, которая, похоже, отсутствует в вашей базе данных. Вам нужно проверить названия всех таблиц в вашей базе данных и их структуру, чтобы определить, какой правильный запрос нужно использовать.

Чтобы получить список всех таблиц в вашей базе данных, вы можете выполнить следующий запрос:

# Создаем соединение с БД
conn = sqlite3.connect(‘your_database.db’)

# Получаем список всех таблиц
cursor = conn.cursor()
cursor.execute(“SELECT name FROM sqlite_master WHERE type=‘table’;”)
print(cursor.fetchall())

# Закрываем соединение
conn.close()


Замените 'your_database.db' на имя вашей базы данных, выполните этот код и определите, есть ли таблица news_views или аналогичная таблица, которую можно использовать для решения вашей задачи.

Если вы предоставите информацию о таблице, содержащей информацию о просмотрах ленты новостей пользователями, я смогу помочь вам в решении вашей задачи.
[(‘pageviews’,), (‘checker’,), (‘deadlines’,), (‘datamart’,), (‘test’,), (‘control’,), (‘test_table’,), (‘control_table’,)]
Спасибо за предоставленный список таблиц. Теперь я вижу таблицу pageviews, которую можно использовать вместо news_views. Пожалуйста, выполните следующий код, чтобы получить список столбцов в таблице pageviews:

# Создаем соединение с БД
conn = sqlite3.connect(‘your_database.db’)

# Получаем схему таблицы pageviews
cursor = conn.cursor()
cursor.execute(“PRAGMA table_info(pageviews);”)
print(cursor.fetchall())

# Закрываем соединение
conn.close()


Замените 'your_database.db' на имя вашей базы данных и проверьте названия столбцов в таблице pageviews. Это поможет мне адаптировать код для вашей базы данных и выполнить необходимые запросы.
[(0, ‘index’, ‘INTEGER’, 0, None, 0), (1, ‘uid’, ‘TEXT’, 0, None, 0), (2, ‘datetime’, ‘TIMESTAMP’, 0, None, 0), (3, ‘labname’, ‘TEXT’, 0, None, 0), (4, ‘event_type’, ‘TEXT’, 0, None, 0)]
Спасибо за информацию о структуре таблицы pageviews. Теперь я могу адаптировать код, учитывая структуру вашей базы данных. Вот исправленная версия:

import sqlite3
import pandas as pd

# Создаем соединение с БД
conn = sqlite3.connect(‘your_database.db’)

# Получаем схему таблицы test
cursor = conn.cursor()
cursor.execute(“PRAGMA table_info(test);”)
print(cursor.fetchall())

# Получаем первые 10 строк таблицы test
df_test = pd.read_sql_query(“SELECT * FROM test LIMIT 10;”, conn)
print(df_test)

# Находим минимальное значение дельты и сохраняем в df_min
min_query = “”“
SELECT uid, MIN((julianday(deadlines.deadlines) - julianday(test.first_commit_ts)) * 24) as min_diff
FROM test
JOIN deadlines ON test.labname = deadlines.labs
WHERE test.labname != ‘project1’
GROUP BY uid;
”“”
df_min = pd.read_sql_query(min_query, conn)
print(df_min)

# Находим максимальное значение дельты и сохраняем в df_max
max_query = “”“
SELECT uid, MAX((julianday(deadlines.deadlines) - julianday(test.first_commit_ts)) * 24) as max_diff
FROM test
JOIN deadlines ON test.labname = deadlines.labs
WHERE test.labname != ‘project1’
GROUP BY uid;
”“”
df_max = pd.read_sql_query(max_query, conn)
print(df_max)

#