одиниці
1. Вступ до штучного інтелекту в науці про дані та аналітиці: робочий процес, ролі, межі, перевірка та етика 2. Збір даних і розуміння джерела: схема, вибірка, якість і усвідомлення витоків 3. Очищення та попередня обробка даних: відсутнє значення, перетворення викидів і типів 4. Дослідницький аналіз даних (EDA): розподіли, взаємозв’язки та початкове розуміння 5. Розробка функцій: генерація варіантів, кодування, масштабування та уникнення витоку 6. Побудова моделі: визначення проблеми, вибір алгоритму та розділення на навчання/тест 7. Оцінка моделі: показники, перехресна перевірка та екстремальне навчання 8. Візуалізація та оповідання: точна графіка, чесна графіка 9. Генерація коду: аналіз за допомогою ШІ за допомогою Python (pandas) і SQL 10. Витік даних і відтворюваність: тихі катастрофи та дисципліна 11. MLOps Foundation, етика, конфіденційність і відповідальна аналітика
одиниця 9 / 11

Генерація коду: аналіз за допомогою ШІ за допомогою Python (pandas) і SQL

Прибуток:

  • Можливість приймати надійний код SQL і pandas, читати та перевіряти його рядок за рядком, надаючи чітку схему та мету штучному інтелекту
  • Можливість виловлювати тихі помилки, такі як кількість рядків, функція підгонки та пропускна здатність після злиття/JOIN
  • Можливість вирішити проблему в налагодженні, не замовчуючи її, і уникнути запуску коду без його тестування у робочому середовищі

Наука про дані має дві основні мови: SQL (мова структурованих запитів — мова для запитів даних із баз даних) і Python (зокрема, бібліотека pandas — стандартний інструмент для програмної обробки таблиць). У цьому розділі ми навчимося використовувати ШІ як кодового партнера: отримуючи з нього надійний код SQL і pandas із правильними запитаннями, читаючи та перевіряючи цей код, налагоджуючи його та ніколи не запускаючи його наосліп. ШІ пише повторюваний код за секунди замість хвилин; Але ваша робота — переконатися, що код, який він створює, обробляє правильний стовпець із правильною логікою. Робочий код не означає правильний код.

Чому створення коду за допомогою ШІ є потужним, але ризикованим

Штучний інтелект забезпечує три великі переваги у створенні коду: швидкість (записує 30-рядкову операцію згрупування за опорою за секунди), нагадування (нагадує вам про функцію pandas, яку ви забули) і навчання (пояснює код рядок за рядком). Але це несе в собі три ризики: тиха логічна помилка (код, який підсумовує неправильний стовпець, виконується без помилок), підібрана функція (пропонує метод, якого не існує) і пастка прибутку (код, який працює з невеликими даними, але аварійно завершує роботу при 10 мільйонах рядків). Отже, золоте правило: читайте код штучного інтелекту так, ніби ви його написали самі. Не читайте слова, яких ви не розумієте.

SQL: обробка даних у джерелі

SQL дозволяє отримувати дані з бази даних і обробляти їх там; Ви можете узагальнити мільйони рядків, не перетягуючи їх у Python. Основні будівельні блоки: SELECT (які стовпці), WHERE (які рядки), GROUP BY (групування та підсумовування), JOIN (об’єднання таблиць), HAVING (фільтр після групування). AI дуже корисний у написанні складних JOIN і віконних функцій, але обов’язково перевірте дві речі: чи JOIN за допомогою правильного ключа (неправильний ключ дублює рядки) і чи правильна логіка фільтра (особливо поведінка NULL і діапазони дат).

Застереження: не запускайте SQL-запит, створений ШІ, безпосередньо до робочої бази даних. Спершу перевірте зменшену копію або обмежтеся. Ніколи не запускайте запит UPDATE/DELETE без перевірки умови WHERE; Неправильний WHERE може видалити всю таблицю.

Python/pandas: гнучкий аналіз

pandas — це стандартний спосіб роботи з таблицями (DataFrame) у Python. Найефективніше використання ШІ – це дати йому чітку схему та мету. Найчастіше використовувані операції: filter, groupby, merge, pivot_table, apply. ШІ записує їх швидко; Що ви хочете перевірити, так це логіку: чи групування у правильному стовпці, чи злиття несподівано змінило кількість рядків (завжди перевіряйте кількість рядків після злиття), чи ланцюгові операції змінюють оригінал.

угода

SQL

панди

КПП

Фільтрування

ДЕ

df[df.x > 5]

Поведінка NULL/NaN

групування

ГРУПУВАТИ ЗА

df.groupby()

Це права колонка?

злиття

ПРИЄДНУЙТЕСЯ

df.merge()

Зміна кількості рядків

Резюме

AVG(), SUM()

.mean(), .sum()

Яку колонку зібрали

Сортувати за

ЗАМОВИТИ ЗА

.sort_values()

Напрямок (зростання/спадання)

дедуплікація

ВІДМІТНИЙ

.drop_duplicates()

В яких колонках?

Налагодження: за допомогою ШІ

Коли код виходить з ладу, штучний інтелект стає чудовим партнером для налагодження. Надайте повне повідомлення про помилку та відповідний фрагмент коду. Але остерігайтеся двох пасток. По-перше, ШІ може запропонувати рішення, яке «замовчує» помилку (наприклад, приховує сповіщення) — це не виправляє помилку, а приховує її. По-друге, ШІ іноді мовчки змінює іншу поведінку під час «вирішення» проблеми. Правило: зрозумійте виправлення, вирішуйте, а не ігноруйте, і переконайтеся, що вихідні дані залишаються правильними після виправлення.

Потрібен інтерпретований і підтримуваний код

Купуючи код у штучного інтелекту, просіть код, який можна читати та підтримувати, а не просто код, який «працює». Коли ви або ваш колега відкриєте цей код через кілька місяців, він зможе зрозуміти, що він робить. Для цього візьміть за звичку, щоб AI включав три речі: значущі назви змінних (orders_temiz, а не df2), короткі рядки коментарів на критичних кроках (пояснення чому, а не те, що робиться), і іменовану константу замість магічного числа (ACCEPT_ESIGI = 0,85 замість 0,85, закладеного в коді). Також уникайте довгих однорядкових ланцюжків (з’єднання п’яти дій в одному рядку); це ускладнює налагодження. За замовчуванням ШІ часто створює стислий і «розумний» код; Якщо ви чітко скажете «писати читабельним, інтерпретованим, придатним для обслуговування», ви отримаєте набагато більш зручний для обслуговування результат. Це також є основою відтворюваності (розділ 10): незрозумілий код — це код, який не можна безпечно повторно запустити.

три міні-чохла

Випадок 1 — реплікація JOIN. Аналітик поєднав замовлення з таблицею продуктів і виявив, що загальний товарообіг виявився в 3 рази вищим. Причина: кожен продукт мав кілька рядків (різних кольорів) у таблиці продуктів; JOIN дублює кожне замовлення. Код ШІ «працював», але кількість рядків підскочила з 240 тисяч до 690 тисяч. Урок: завжди перевіряйте кількість рядків після злиття/JOIN.

Випадок 2 — Підгонка функції. Він запропонував стажеру AI df.groupby('x').summarize(); У pandas такого методу немає (є .agg()). Код не спрацював, інтерн загубився на 20 хвилин. Урок: перевірте функцію, яку ви не впізнаєте в документі; ШІ може створювати методи.

Випадок 3 — падіння врожайності. Один код запитував базу даних у застосуванні для кожного рядка; Він працював на 5000 рядків, займав 9 годин на 4 мільйонах рядків і зупинився. Коли штучний інтелект запропонував векторизоване (пакетне) рішення, час було скорочено до 40 секунд. Урок: код, який працює з невеликими даними, може вийти з ладу на великих даних; Враховуйте ефективність.

Чотири шаблони, які можна копіювати

1) Запит SQL зі схемою:

Ваша роль: SQL-асистент (PostgreSQL). Таблиці:- замовлення (ідентифікатор, клієнт_ідентифікатор, мітка часу, сума числові)- клієнти (ідентифікатор, текст міста) Завдання: отримати загальний товарообіг і кількість замовлень на місто у 2024 році, відсортовані за товарообігом у порядку спадання. Поясніть, як ви обробляєте NULL міста. Спочатку я перевірю запит із LIMIT; ОНОВИТИ/ВИДАЛИТИ покоління.

2) процес pandas з контрольною точкою:

У мене є DataFrames df (замовлення) і df_customers (клієнти). Розрахувати середню суму по місту. ВАЖЛИВО: надрукуйте кількість рядків до та після злиття, щоб я міг побачити, чи є дублювання. Поясніть, у якому стовпчику ви об’єднали і чому обрали внутрішній/лівий.

3) Пояснення та перевірка коду:

Поясніть наступний код pandas рядок за рядком: що робить кожен рядок, які припущення він робить, у яких випадках він може дати неправильні результати? Дайте мені знати, якщо я використовував функцію вигадки. Код: [вставити]

4) Налагодження:

Цей код видає цю помилку. Повне повідомлення про помилку: [вставити]. Код: [вставити]. Поясніть ОСНОВНУ причину помилки та виправте її. Виправте це, фактично вирішивши проблему, а не вимкнувши сповіщення. Також вкажіть, чи виправлення змінило результат.

Слабка підказка / Сильна підказка

Слабка підказка:

Напишіть запит, який дасть мені продажі в кожному місті.

Імена таблиць, стовпці, тип бази даних, поведінка NULL незрозумілі. ШІ є звичайним, він, ймовірно, створить запит, який не підходить до вашої таблиці.

Потужна підказка:

Ваша роль: SQL-помічник (MySQL 8). Таблиця: продажі (ідентифікатор, varchar міста, десяткова сума, дата, дата). Завдання: Отримати загальну та середню суму, кількість замовлень по місту за 2024 рік; Сортувати за зменшенням загальної суми; Показати лише міста з понад 100 замовленнями (HAVING).NULL виключити місто. Пояснити запит; Я буду тестувати з LIMIT.

Тут база даних, схема, фільтр, сортування та правило NULL очевидні.

Поширені помилки

  • Запуск коду без його читання. Робочий код не є правильним кодом; Код, який обробляє неправильний стовпець, також працює без помилок.
  • Не перевіряється кількість рядків після злиття/JOIN. Неправильний ключ мовчки дублює рядки та завищує підсумки.
  • Не перевіряється функція підгонки. ШІ може запропонувати методи, яких не існує; Підтвердьте з документа, що ви його не впізнаєте.
  • Не думаючи про ефективність. застосування/цикл роботи над невеликими збоями даних у мільйонах рядків; векторизувати.
  • Запускайте безпосередньо в робочій базі даних. Особливо запуск UPDATE/DELETE без WHERE або тестування є катастрофічним.
Порада: візьміть за звичку додавати «рядок перевірки» до кожного фрагмента коду, який ви отримуєте від штучного інтелекту: кількість рядків до та після обробки, кілька зразків рядків і критичну підсумкову кількість вручну. Ці три перевірки виявляють більшість тихих логічних помилок.

Підсумовуючи

ШІ є потужним партнером, який швидко створює код SQL і pandas, але він не є сліпим авторитетом. Дайте йому чітко схему і мету; Прочитайте створений код так, ніби ви його написали самі; Перевірте кількість рядків, функції підгонки та пропускну здатність після злиття/JOIN; Не запускайте його, не перевіривши його на робочій базі даних. Під час налагодження прагніть вирішити проблему, а не замовчувати її. Код, який працює, не є правильним кодом; Тільки ви можете гарантувати точність.

Аплікаційне завдання

Виберіть запитання для аналізу (наприклад, «місячний оборот на канал») і надішліть запит на код у ШІ за допомогою SQL і pandas. Прочитайте обидва коди рядок за рядком, перевірте кількість рядків після злиття/JOIN і вручну перевірте принаймні одну критичну суму. Порівняйте, чи два коди дають однаковий результат; Якщо інше, дізнайтеся чому.

контрольний список

  • [ ] Чи я чітко надав ШІ таблицю/схему та мету?
  • [ ] Чи я прочитав і зрозумів створений код рядок за рядком?
  • [ ] Чи перевіряв я кількість рядків після злиття/JOIN?
  • [ ] Чи перевірив я функції, які мені невідомі в документації?
  • [ ] Чи спочатку я тестував код на безпечних/невеликих даних, а не у робочому середовищі?