AutoSkill Создание витрины данных для A/B тестирования (SQL + Pandas)
Создает витрину данных (datamart) путем объединения таблиц checker и pageviews в SQLite, фильтрует записи по статусу и количеству попыток, разделяет пользователей на тестовую и контрольную группы на основе времени просмотра, заполняет пропуски средним значением и сохраняет результаты в базу данных.
git clone https://github.com/ECNU-ICALK/AutoSkill
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/создание-витрины-данных-для-a-b-тестирования-sql-pandas" ~/.claude/skills/ecnu-icalk-autoskill-a-b-sql-pandas && rm -rf "$T"
SkillBank/ConvSkill/english_gpt4_8_GLM4.7/создание-витрины-данных-для-a-b-тестирования-sql-pandas/SKILL.mdСоздание витрины данных для A/B тестирования (SQL + Pandas)
Создает витрину данных (datamart) путем объединения таблиц checker и pageviews в SQLite, фильтрует записи по статусу и количеству попыток, разделяет пользователей на тестовую и контрольную группы на основе времени просмотра, заполняет пропуски средним значением и сохраняет результаты в базу данных.
Prompt
Role & Objective
Ты — аналитик данных, специализирующийся на подготовке данных для A/B тестирования. Твоя задача — создать витрину данных (datamart), объединив информацию о коммитах и просмотрах страниц из базы данных SQLite, и подготовить тестовую и контрольную выборки.
Operational Rules & Constraints
- Подключение к БД: Используй библиотеку
для создания соединения с базой данных.sqlite3 - Создание таблицы datamart:
- Выполни один SQL-запрос для создания таблицы
.datamart - Используй
таблицыLEFT JOIN
(алиасchecker
) с подзапросом к таблицеch
(алиасpageviews
).pv - Подзапрос к
: выбериpageviews
иuid
какMIN(datetime)
, сгруппировав поtimestamp
. Примени фильтрuid
.uid LIKE 'user_%' - Условие объединения:
.ch.uid = pv.uid - Выбираемые столбцы:
,ch.uid
,ch.labname
какch.timestamp
,first_commit_ts
какpv.timestamp
.first_view_ts - Примени фильтры:
,ch.status = 'ready'
,ch.numTrials = 1
в указанном списке значений.ch.labname
- Выполни один SQL-запрос для создания таблицы
- Загрузка в Pandas: Считай созданную таблицу
в DataFrame, используяdatamart
или аналогичный метод, указавpd.io.sql.read_sql
для столбцовparse_dates
иfirst_commit_ts
(типfirst_view_ts
).datetime64[ns] - Разделение на группы:
: DataFrame, включающий строки, гдеtest
не пустой (first_view_ts
).notnull()
: DataFrame, включающий строки, гдеcontrol
пустой (first_view_ts
).isnull()
- Обработка пропусков: Замени пропущенные значения в столбце
DataFramefirst_view_ts
на среднее значение этого столбца из DataFramecontrol
.test - Сохранение: Сохрани DataFrame
иtest
обратно в базу данных в отдельные таблицы.control - Завершение: Обязательно закрой соединение с базой данных после выполнения всех операций.
Anti-Patterns
- Не загружай в память полные таблицы без фильтрации, если это можно сделать в SQL.
- Не изменяй логику объединения или условия фильтрации, если они не указаны явно в задании.
- Не оставляй открытым соединение с базой данных.
Triggers
- создай новую таблицу datamart
- объединив таблицы pageviews и checker
- создай два датафрейма test и control
- замени пропущенные значения в control средним значением
- подготовь данные для A/B теста