단위 9 / 11

코드 생성: Python(pandas) 및 SQL을 사용한 AI 지원 분석

이득:

  • 강력한 SQL 및 Pandas 코드를 가져와 인공지능에 명확한 스키마와 목적을 부여하여 한 줄씩 읽고 검증하는 기능
  • 병합/JOIN 후 행 개수, 피팅 기능, 처리량 등 자동 오류를 포착하는 기능
  • 디버그 시 문제를 침묵시키지 않고 해결하고 프로덕션 환경에서 테스트하지 않고 코드 실행을 방지하는 기능

데이터 과학에는 SQL(Structured Query Language - 데이터베이스에서 데이터를 쿼리하기 위한 언어)과 Python(구체적으로 Pandas 라이브러리 - 프로그래밍 방식으로 테이블을 조작하기 위한 표준 도구)이라는 두 가지 기본 언어가 있습니다. 이 단원에서는 AI를 코드 파트너로 사용하는 방법을 배웁니다. 올바른 질문을 통해 견고한 SQL 및 Pandas 코드를 얻고, 해당 코드를 읽고 검증하고, 디버깅하고, 맹목적으로 실행하지 않는 것입니다. AI는 몇 분이 아닌 몇 초 만에 반복적인 코드를 작성합니다. 그러나 생성된 코드가 올바른 논리로 올바른 열을 처리하는지 확인하는 것이 귀하의 임무입니다. 작동하는 코드는 올바른 코드를 의미하지 않습니다.

AI로 코드를 생성하는 것이 강력하지만 위험한 이유

AI는 코드 생성에 세 가지 큰 이점을 제공합니다. 속도(30줄의 그룹별 피벗 작업을 몇 초 만에 작성), 알림(잊어버린 팬더 기능을 상기시켜줌), 교육(코드를 한 줄씩 설명)입니다. 그러나 여기에는 세 가지 위험이 있습니다. 자동 논리 오류(잘못된 열을 합산하는 코드가 오류 없이 실행됨), 적합 함수(존재하지 않는 메서드 제안), Yield Trap(작은 데이터에서는 작동하지만 천만 행에서 충돌하는 코드)입니다. 따라서 황금률은 AI 코드를 직접 작성한 것처럼 읽으라는 것입니다. 이해하지 못하는 라인을 실행하지 마십시오.

SQL: 소스에서 데이터 처리

SQL을 사용하면 데이터베이스에서 데이터를 검색하고 그곳에서 처리할 수 있습니다. 수백만 줄을 Python으로 가져오지 않고도 요약할 수 있습니다. 기본 빌딩 블록: SELECT(열), WHERE(행), GROUP BY(그룹화 및 요약), JOIN(테이블 조인), HAVING(그룹 후 필터). AI는 복잡한 JOIN 및 창 함수를 작성하는 데 매우 유용하지만 두 가지 사항을 확인해야 합니다. 올바른 키를 통한 JOIN인지(잘못된 키가 행을 중복하는지) 필터 논리가 올바른지(특히 NULL 동작 및 날짜 범위).

주의: AI 생성 SQL 쿼리를 프로덕션 데이터베이스에 대해 직접 실행하지 마십시오. 먼저 작은 복사본으로 테스트하거나 LIMIT개로 테스트하세요. WHERE 조건을 확인하지 않고 UPDATE/DELETE 쿼리를 실행하지 마십시오. WHERE가 잘못되면 전체 테이블이 삭제될 수 있습니다.

Python/pandas: 유연한 분석

pandas는 Python에서 테이블(DataFrame)을 조작하는 표준 방법입니다. AI를 가장 효율적으로 사용하는 방법은 명확한 계획과 목적을 부여하는 것입니다. 가장 일반적으로 사용되는 작업: 필터, 그룹화, 병합, 피벗_테이블, 적용. AI는 이러한 내용을 빠르게 작성합니다. 확인하려는 것은 올바른 열의 그룹화인지, 병합으로 인해 행 수가 예기치 않게 변경되었는지(병합 후 행 수를 항상 확인), 체인 작업으로 원본이 변경되었는지 여부입니다.

거래

SQL

팬더

검문소

필터링

어디서

df[df.x > 5]

NULL/NaN 동작

그룹화

그룹 기준

df.groupby()

칼럼이 맞나요?

병합

가입

df.merge()

행 개수 변경

요약

AVG(), 합계()

.mean(), .sum()

수집된 열

정렬 기준

주문 방법

.sort_values()

방향(오름차순/내림차순)

중복 제거

고유

.drop_duplicates()

어느 열에 있나요?

디버깅: AI 사용

코드가 실패하면 AI는 훌륭한 디버깅 파트너입니다. 전체 오류 메시지와 관련 코드 조각을 제공하세요. 하지만 두 가지 함정을 조심하세요. 첫째, AI는 오류를 "무음화"하는 솔루션(예: 경고 숨기기)을 제안할 수 있습니다. 이는 오류를 수정하는 것이 아니라 숨기는 것입니다. 둘째, AI는 문제를 '해결'하는 동안 조용히 다른 행동을 바꾸는 경우도 있습니다. 규칙: 수정 사항을 이해하고, 음소거가 아닌 문제를 해결하고, 수정 후에도 출력이 여전히 올바른지 확인하세요.

해석 가능하고 유지 관리 가능한 코드를 원함

AI에서 코드를 구매할 때 "작동하는" 코드뿐만 아니라 읽기 쉽고 유지 관리가 가능한 코드를 요청하세요. 귀하 또는 동료가 몇 달 후에 해당 코드를 열면 코드가 수행하는 작업을 이해할 수 있어야 합니다. 이를 위해 AI에 세 가지를 포함시키는 습관을 들이십시오: 의미 있는 변수 이름(df2가 아닌 orders_temiz), 중요한 단계의 짧은 주석 줄(무엇이 수행되고 있는지가 아닌 이유를 설명), 매직 넘버 대신 명명된 상수(코드에 묻혀 있는 0.85 대신 ACCEPT_ESIGI = 0.85). 또한 긴 한 줄 체인(5개의 작업을 한 줄에 연결)을 피하세요. 이로 인해 디버깅이 어려워집니다. 기본적으로 AI는 간결하고 "스마트"한 코드를 생성하는 경우가 많습니다. "읽기 가능하고, 해석 가능하고, 유지 관리 가능하게 작성하세요"라고 명확하게 말하면 훨씬 더 유지 관리 가능한 결과를 얻을 수 있습니다. 이는 재현성의 기초이기도 합니다(단원 10). 이해되지 않는 코드는 안전하게 다시 실행할 수 없는 코드입니다.

세 개의 미니 케이스

사례 1 — JOIN 복제. 분석가는 주문을 제품 테이블과 결합하여 총 매출액이 3배 더 높은 것으로 나타났습니다. 원인: 각 제품에는 제품 테이블에 여러 행(다른 색상)이 있습니다. JOIN은 각 주문을 중복했습니다. AI의 코드는 '작동'했지만 줄 수는 24만 개에서 69만 개로 늘어났다. 교훈: 병합/JOIN 후에는 항상 줄 수를 확인하세요.

사례 2 - 피팅 기능. 그는 인턴에게 AI df.groupby('x').summarize()를 제안했습니다. 팬더에는 그러한 방법이 없습니다 (.agg()가 있습니다). 코드가 작동하지 않아 인턴이 20분 동안 길을 잃었습니다. 교훈: 문서에서 인식하지 못하는 기능을 확인하세요. AI는 방법을 만들 수 있습니다.

사례 3 - 수확량 붕괴. 하나의 코드는 각 행에 대해 적용할 때 데이터베이스를 쿼리하고 있었습니다. 5,000개 라인을 실행하고 400만개 라인을 9시간 걸려서 멈췄다. AI가 벡터화된(배치) 솔루션을 제안하면 시간이 40초로 단축되었습니다. 교훈: 작은 데이터에서 작동하는 코드는 큰 데이터에서 충돌할 수 있습니다. 효율성을 고려하십시오.

복사 가능한 템플릿 4개

1) 스키마를 사용하여 SQL 요청:

귀하의 역할: SQL 도우미(PostgreSQL). 테이블:- 주문(id, customer_id, 날짜 타임스탬프, 금액 숫자)- 고객(id, 도시 텍스트)작업: 2024년 총 매출액과 도시당 주문 수를 매출액 기준으로 내림차순으로 정렬하여 가져옵니다. NULL 도시를 처리하는 방법을 설명하세요. 먼저 LIMIT를 사용하여 쿼리를 테스트하겠습니다. 업데이트/삭제 생성.

2) 체크포인트가 있는 팬더 프로세스:

DataFrames df(주문) 및 df_customers(고객)가 있습니다. 도시별 평균 금액을 계산합니다. 중요: 중복이 있는지 확인할 수 있도록 병합 전후의 행 수를 인쇄하세요. 병합한 열과 내부/왼쪽을 선택한 이유를 설명하세요.

3) 코드 설명 및 검증:

다음 Pandas 코드를 한 줄씩 설명하세요. 각 줄은 무엇을 하고, 어떤 가정을 하며, 어떤 경우 잘못된 결과를 초래할 수 있나요? 퍼지 기능을 사용했는지 알려주세요. 코드: [붙여넣기]

4) 디버깅:

이 코드는 이 오류를 발생시킵니다. 전체 오류 메시지: [붙여넣기]. 코드: [붙여넣기]. 오류의 근본 원인을 설명하고 수정하세요. 경고를 끄는 것이 아니라 실제로 문제를 해결하여 문제를 해결하십시오. 또한 수정사항으로 인해 출력이 변경되었는지 여부도 표시합니다.

약한 프롬프트 / 강한 프롬프트

약한 프롬프트:

도시별 매출을 알려주는 쿼리를 작성하세요.

테이블 이름, 열, 데이터베이스 유형, NULL 동작이 명확하지 않습니다. AI는 일반적이므로 테이블에 맞지 않는 쿼리를 생성할 가능성이 높습니다.

강력한 프롬프트:

귀하의 역할: SQL 도우미(MySQL 8). 테이블: 매출(id, 도시 변수, 소수점 금액, 날짜 날짜). 작업: 2024년의 총 및 평균 금액, 도시당 주문 수를 가져옵니다. 총액을 기준으로 내림차순으로 정렬합니다. 주문이 100개 이상인 도시만 표시합니다(HAVING). NULL은 도시를 제외합니다. 쿼리를 설명하세요. LIMIT로 테스트하겠습니다.

여기서는 데이터베이스, 스키마, 필터, 정렬 및 NULL 규칙이 분명합니다.

일반적인 실수

  • 코드를 읽지 않고 실행해 보세요. 작업 코드는 올바른 코드가 아닙니다. 잘못된 열을 조작하는 코드도 오류 없이 실행됩니다.
  • 병합/JOIN 후 행 수를 확인하지 않습니다. 잘못된 키는 자동으로 행을 복제하고 합계를 부풀립니다.
  • 피팅 기능을 확인하지 않습니다. AI는 존재하지 않는 방법을 제안할 수도 있습니다. 인식할 수 없는 내용을 문서에서 확인하세요.
  • 효율성을 생각하지 않습니다. 수백만 행의 작은 데이터 충돌에 대한 적용/루프 작업; 벡터화합니다.
  • 프로덕션 데이터베이스에서 직접 실행합니다. 특히 WHERE나 테스트 없이 UPDATE/DELETE를 실행하는 것은 재앙입니다.
팁: AI로부터 받은 모든 코드 조각에 "검증 라인"을 추가하는 습관을 들이십시오. 즉, 사전 및 사후 처리 라인 수, 몇 개의 샘플 라인, 중요한 총계를 직접 추가합니다. 이 세 가지 검사는 대부분의 자동 논리 오류를 포착합니다.

요약하면

AI는 SQL과 판다스 코드를 빠르게 만들어내는 강력한 파트너지만, 맹목적인 권위는 아니다. 그에게 계획과 목적을 명확하게 알려주십시오. 생성된 코드를 마치 직접 작성한 것처럼 읽어보세요. 병합/JOIN 후 행 수, 피팅 기능 및 처리량을 확인합니다. 프로덕션 데이터베이스에서 테스트하지 않고 실행하지 마십시오. 디버깅할 때 문제를 해결하는 것이 아니라 문제를 해결하는 것을 목표로 하십시오. 작동하는 코드가 올바른 코드가 아닙니다. 오직 귀하만이 정확성을 보장할 수 있습니다.

응용과제

분석 질문(예: "채널당 월간 매출")을 선택하고 SQL과 Pandas를 모두 사용하여 AI에 코드를 요청하세요. 두 코드를 한 줄씩 읽고 병합/JOIN 후 줄 수를 확인하고 하나 이상의 중요한 합계를 수동으로 확인하십시오. 두 코드가 동일한 결과를 생성하는지 비교합니다. 다르다면 그 이유를 알아보세요.

체크리스트

  • [ ] AI에게 테이블/스키마 및 목적을 명확하게 전달했나요?
  • [ ] 생성된 코드를 한 줄씩 읽고 이해했습니까?
  • [ ] 병합/JOIN 후 라인 수를 확인했나요?
  • [ ] 문서에서 인식하지 못하는 기능을 확인했습니까?
  • [ ] 프로덕션 환경이 아닌 안전하고 작은 데이터에 대해 먼저 코드를 테스트했습니까?