Jednostka 9 / 11

Generowanie kodu: analiza wspomagana sztuczną inteligencją za pomocą Pythona (pandy) i SQL

Zyski:

  • Umiejętność korzystania z solidnego kodu SQL i pand oraz odczytywania i weryfikowania go linia po linii, nadając sztucznej inteligencji jasny schemat i cel
  • Możliwość wychwytywania cichych błędów, takich jak liczba wierszy, funkcja dopasowywania i przepustowość po łączeniu/JOIN
  • Możliwość rozwiązania problemu w debugowaniu bez jego wyciszania i uniknięcia uruchamiania kodu bez testowania go w środowisku produkcyjnym

Nauka o danych ma dwa podstawowe języki: SQL (Structured Query Language — język służący do wykonywania zapytań o dane z baz danych) i Python (w szczególności biblioteka pandas — standardowe narzędzie do programowego manipulowania tabelami). W tej części nauczymy się wykorzystywać sztuczną inteligencję jako partnera w kodzie: uzyskiwać z niej solidny kod SQL i pandy za pomocą odpowiednich pytań, czytać i weryfikować ten kod, debugować go i nigdy nie uruchamiać go na ślepo. AI zapisuje powtarzalny kod w ciągu kilku sekund zamiast minut; Ale Twoim zadaniem jest upewnienie się, że generowany przez niego kod przetwarza właściwą kolumnę z odpowiednią logiką. Działający kod nie oznacza poprawnego kodu.

Dlaczego tworzenie kodu za pomocą sztucznej inteligencji jest skuteczne, ale ryzykowne

Sztuczna inteligencja zapewnia trzy duże korzyści w generowaniu kodu: szybkość (zapisuje 30-wierszową operację przestawiania grupowego w ciągu kilku sekund), przypomnienie (przypomina o zapomnianej funkcji pandy) i nauczanie (objaśnia kod linia po linii). Wiąże się to jednak z trzema zagrożeniami: cichym błędem logicznym (kod, który sumuje niewłaściwą kolumnę bez błędów), dopasowaną funkcją (sugeruje metodę, która nie istnieje) i pułapką wydajności (kod, który działa na małych danych, ale ulega awarii przy 10 milionach wierszy). Zatem złota zasada: czytaj kod AI tak, jakbyś sam go napisał. Nie kieruj się linią, której nie rozumiesz.

SQL: przetwarzaj dane u źródła

SQL pozwala na pobieranie danych z bazy danych i tam ich przetwarzanie; Możesz podsumować miliony linii bez wciągania ich do Pythona. Podstawowe elementy składowe: SELECT (które kolumny), WHERE (które wiersze), GROUP BY (grupowanie i podsumowanie), JOIN (łączenie tabel), HAVING (filtr po grupie). Sztuczna inteligencja jest bardzo pomocna w pisaniu złożonych funkcji JOIN i okien, ale pamiętaj o sprawdzeniu dwóch rzeczy: czy JOIN za pomocą prawidłowego klucza (zły klucz duplikuje wiersze) i czy logika filtrowania jest poprawna (zwłaszcza zachowanie NULL i zakresy dat).

Przestroga: Nie uruchamiaj zapytania SQL wygenerowanego przez sztuczną inteligencję bezpośrednio w produkcyjnej bazie danych. Najpierw przetestuj na małej kopii lub LIMIT. Nigdy nie uruchamiaj zapytania UPDATE/DELETE bez sprawdzenia warunku WHERE; Błędne ustawienie WHERE może spowodować usunięcie całej tabeli.

Python/pandy: elastyczna analiza

pandas to standardowy sposób manipulowania tabelami (DataFrame) w Pythonie. Najbardziej efektywne wykorzystanie AI polega na nadaniu jej jasnego schematu i celu. Najczęściej używane operacje: filtruj, grupuj, scalaj, tabela przestawna, zastosuj. AI zapisuje je szybko; To, co chcesz sprawdzić, to logika: czy grupowanie jest we właściwej kolumnie, czy scalanie nieoczekiwanie zmieniło liczbę wierszy (zawsze sprawdzaj liczbę wierszy po połączeniu), czy operacje łańcuchowe zmieniają oryginał.

transakcja

SQL-a

pandy

punkt kontrolny

Filtrowanie

GDZIE

df[df.x > 5]

Zachowanie NULL/NaN

grupowanie

GRUPUJ WG

df.groupby()

Czy to prawa kolumna?

połączyć

DOŁĄCZ

df.scal()

Zmiana liczby wierszy

Podsumowanie

ŚREDNIA(), SUMA()

.średnia(), .sum()

Która kolumna została zebrana

Sortuj według

ZAMÓW PRZEZ

.sort_values()

Kierunek (rosnąco/malejąco)

deduplikacja

WYRÓŻNIONY

.drop_duplikaty()

W jakich kolumnach?

Debugowanie: z AI

Gdy kod zawiedzie, sztuczna inteligencja jest doskonałym partnerem do debugowania. Podaj pełny komunikat o błędzie i odpowiedni fragment kodu. Uważaj jednak na dwie pułapki. Po pierwsze, sztuczna inteligencja może zaproponować rozwiązanie, które „wyciszy” błąd (np. ukryje alerty) — to nie naprawia błędu, a jedynie go ukrywa. Po drugie, sztuczna inteligencja czasami po cichu zmienia inne zachowanie podczas „rozwiązywania” problemu. Reguła: zrozum poprawkę, zdecyduj, czy nie wyciszać i sprawdź, czy po naprawie dane wyjściowe są nadal prawidłowe.

Chcesz interpretowalnego i łatwego w utrzymaniu kodu

Kupując kod od AI, poproś o kod, który jest czytelny i łatwy w utrzymaniu, a nie tylko kod, który „działa”. Kiedy Ty lub Twój współpracownik otworzycie ten kod kilka miesięcy później, powinniście być w stanie zrozumieć, co robi. Aby to zrobić, wyrób sobie nawyk, aby sztuczna inteligencja zawierała trzy rzeczy: znaczące nazwy zmiennych (orders_temiz, a nie df2), krótkie komentarze w krytycznych krokach (wyjaśniające dlaczego, a nie co się dzieje) oraz nazwaną stałą zamiast magicznej liczby (ACCEPT_ESIGI = 0,85 zamiast 0,85 ukryte w kodzie). Unikaj także długich łańcuchów jednoliniowych (łączących pięć działań w jednej linii); utrudniają one debugowanie. Domyślnie sztuczna inteligencja często tworzy zwięzły i „inteligentny” kod; Jeśli wyraźnie powiesz „pisz czytelny, interpretowalny, łatwy w utrzymaniu”, otrzymasz znacznie łatwiejsze w utrzymaniu dane wyjściowe. Jest to również podstawa odtwarzalności (część 10): niezrozumiały kod to kod, którego nie można bezpiecznie uruchomić ponownie.

trzy mini etui

Przypadek 1 — replikacja JOIN. Analityk połączył zamówienia z tabelą produktów i stwierdził, że łączny obrót jest 3 razy większy. Przyczyna: każdy produkt miał wiele wierszy (w różnych kolorach) w tabeli produktów; DOŁĄCZ zduplikowane każde zamówienie. Kod AI „działał”, ale liczba linii wzrosła z 240 tysięcy do 690 tysięcy. Lekcja: zawsze sprawdzaj liczbę linii po połączeniu/dołączeniu.

Przypadek 2 – Funkcja dopasowania. Zasugerował stażyście AI df.groupby('x').summarize(). W pandach nie ma takiej metody (jest .agg()). Kod nie zadziałał, stażysta zaginął na 20 minut. Lekcja: sprawdź funkcję, której nie rozpoznajesz w dokumencie; Sztuczna inteligencja może wymyślać metody.

Przypadek 3 – Załamanie plonów. Jeden kod wysyłał zapytania do bazy danych w aplikacji dla każdego wiersza; Działał na 5000 liniach, zajmował 9 godzin na 4 milionach linii i zatrzymał się. Kiedy sztuczna inteligencja zasugerowała rozwiązanie wektorowe (wsadowe), czas skrócono do 40 sekund. Lekcja: kod działający na małych danych może ulec awarii na dużych danych; Weź pod uwagę efektywność.

Cztery szablony do kopiowania

1) Żądanie SQL ze schematem:

Twoja rola: Asystent SQL (PostgreSQL). Tabele:- zamówienia(id, identyfikator_klienta, data i data, kwota numeryczna)- klienci(id, tekst miasta) Zadanie: Uzyskaj całkowity obrót i liczbę zamówień na miasto w 2024 r., posortowane według obrotów w kolejności malejącej. Wyjaśnij, jak radzisz sobie z miastami NULL. Najpierw przetestuję zapytanie za pomocą LIMIT; AKTUALIZUJ/USUŃ generację.

2) proces pand z punktem kontrolnym:

Mam DataFrames df (zamówienia) i df_customers (klienci). Oblicz średnią kwotę na miasto. WAŻNE: wydrukuj liczbę wierszy przed i po łączeniu, abym mógł sprawdzić, czy występuje duplikacja. Wyjaśnij, w której kolumnie dokonałeś połączenia i dlaczego wybrałeś wewnętrzną/lewą.

3) Wyjaśnienie i weryfikacja kodu:

Wyjaśnij następujący kod pandy linia po linii: co robi każda linia, jakie przyjmuje założenia i w jakich przypadkach może dać błędne wyniki? Daj mi znać, jeśli użyłem funkcji krówki. Kod: [wklej]

4) Debugowanie:

Ten kod daje ten błąd. Pełny komunikat o błędzie: [wklej]. Kod: [wklej]. Wyjaśnij przyczynę ROOT błędu i napraw ją. Napraw to, rozwiązując problem, a nie wyciszając alert. Wskaż także, czy poprawka zmieniła dane wyjściowe.

Słaba zachęta/silna zachęta

Słaba zachęta:

Napisz zapytanie, które wyświetli mi sprzedaż w poszczególnych miastach.

Nazwy tabel, kolumny, typ bazy danych, zachowanie NULL są niejasne. Sztuczna inteligencja jest powszechna, prawdopodobnie wygeneruje zapytanie, które nie pasuje do Twojej tabeli.

Potężny monit:

Twoja rola: Asystent SQL (MySQL 8). Tabela: sprzedaż (id, miasto varchar, kwota dziesiętna, data data). Zadanie: Uzyskaj kwotę całkowitą i średnią oraz liczbę zamówień na miasto na rok 2024; Sortuj malejąco według całkowitej kwoty; Pokaż tylko miasta z więcej niż 100 zamówieniami (HAVING).NULL wyklucza miasto. Wyjaśnij zapytanie; Przetestuję z LIMIT.

Tutaj baza danych, schemat, filtr, sortowanie i reguła NULL są oczywiste.

Typowe błędy

  • Uruchamianie kodu bez jego czytania. Kod roboczy nie jest poprawnym kodem; Kod manipulujący niewłaściwą kolumną również działa bez błędów.
  • Nie sprawdzanie liczby wierszy po połączeniu/dołączeniu. Zły klucz po cichu duplikuje wiersze i zawyża sumy.
  • Brak weryfikacji funkcji dopasowania. AI może sugerować metody, które nie istnieją; Potwierdź na podstawie dokumentu, że go nie rozpoznajesz.
  • Nie myśląc o wydajności. Apply/pętla działająca na małe awarie danych w milionach wierszy; wektoryzuj.
  • Uruchom bezpośrednio w produkcyjnej bazie danych. Zwłaszcza uruchomienie UPDATE/DELETE bez WHERE lub testowanie jest katastrofalne.
Wskazówka: wyrób sobie nawyk dodawania „wierszy weryfikacyjnej” do każdego fragmentu kodu otrzymanego od sztucznej inteligencji: liczby wierszy przed i po przetwarzaniu, kilku przykładowych wierszy i sumy krytycznej wykonywanej ręcznie. Te trzy kontrole wyłapują najcichsze błędy logiczne.

Podsumowując

Sztuczna inteligencja to potężny partner, który szybko tworzy kod SQL i pandy, ale nie jest ślepym autorytetem. Podaj mu jasno plan i cel; Przeczytaj kod, który wygeneruje, tak jakbyś go sam napisał; Sprawdź liczbę wierszy, funkcje dopasowania i przepustowość po połączeniu/JOIN; Nie uruchamiaj go bez przetestowania go w produkcyjnej bazie danych. Podczas debugowania staraj się rozwiązać problem, a nie go uciszyć. Kod, który działa, nie jest poprawnym kodem; Tylko Ty możesz zagwarantować dokładność.

Zadanie aplikacji

Wybierz pytanie analityczne (np. „miesięczny obrót na kanał”) i poproś sztuczną inteligencję o kod, zarówno za pomocą SQL, jak i pand. Przeczytaj oba kody linia po linii, sprawdź liczbę linii po połączeniu/JOIN i ręcznie zweryfikuj co najmniej jedną krytyczną sumę. Porównaj, czy oba kody dają ten sam wynik; Jeśli jest inaczej, dowiedz się dlaczego.

lista kontrolna

  • [ ] Czy jasno przekazałem AI tabelę/schemat i cel?
  • [ ] Czy przeczytałem i zrozumiałem kod, który wygenerował, linia po linii?
  • [ ] Czy sprawdziłem liczbę linii po połączeniu/dołączeniu?
  • [ ] Czy zweryfikowałem funkcje, których nie rozpoznaję w dokumentacji?
  • [ ] Czy najpierw przetestowałem kod na bezpiecznych/małych danych, a nie w środowisku produkcyjnym?