[내일배움캠프] 데이터 분석 10일차 파이썬 종합반, solvesql 등

양호걸·2025년 10월 31일

오늘의 학습

데이터 분석 파이썬 종합반

  1. 2회차
    2-1 이번에 배울 것
    2-2 리스트 기본 사용법
    2-3 리스트 고급 사용법

    리스트 - [] 대괄호 사용. 가변한(mutable) 시퀀스
    (cf.튜플은 불가)
    인덱싱 - 순서가 0부터 시작 범위 벗어난 값 안됨. 뒤에서 첫번째는 -1
    메서드 - .(점)찍고 사용 (ex 리스트.append(항목) 리스트 뒤에 새로운 항목추가)
    +변환은 함수의 결과값을 밖으로 끄집어낸다 라는 뜻으로 이해하면 된다.
    슬라이싱 - 리스트의 일부분을 추출 [start:end:step]
    선택, 자르기 가능
    start 비워두면 처음부터 end 비워두면 끝까지 step 건너뛰는것
    정렬 - sort() 메서드 sort() ->오름차순, sort(reverse=true)->내림차순

    2-4 튜플

    튜플 - () 소괄호 사용. 리스트와 다르게 변경할 수 없는 시퀀스(추가, 삭제, 수정 불가) 데이터를 보호하고 싶을때 사용

    2-5 딕셔너리

    딕셔너리 - {} 중괄호 사용. 키 - 값 쌍을 이루면서 데이터를 저장. 키는 중복 안됨

  2. 3회차
    3-1 이번에 배울 것
    3-2 조건문

    특정 조건에서 실행 되게 하는 조건문.
    if, elif, else
    if 조건: 조건이 '참' 일때 실행
    elif 다른 조건: 다른 조건이 '참' 일때 실행. 여러개 가능
    else: 위 조건이 모두 거짓일때 실행

    들여쓰기, 띄어쓰기 중요함

    연산자 - (비교)조건을 판단하기 위해 사용 >=, <=, ==, != 등
    (논리) and, or, not

    3-3 반복문

    for문
    for 변수 in 반복할(iterable)데이터:
    코드블록
    이중 for문 - for문이 2개
    예)

    fruits=["apple", "banana", "cherry"]
    for fruit in fruits:
        print(fruit)

    3-4 while문

    조건(불리언)이 참(True)일때 반복

    while 조건:
    코드블록

    break, pass, coutinue도 함께 알아두기

맛보기 퀴즈

지금까지 SQL에 대해 배웠던 내용들 복습하는 느낌으로 간단한 퀴즈들을 풀었다. 문제 자체는 간단한데 답을 빨리 선택해서 1등했다🤪 언제 또 1등해보겠냐 젭포인트 냠냠굳

오늘의 solvesql

기증품 비율 계산하기

SELECT ROUND((SUM(CASE WHEN LOWER(credit) LIKE '%gift%' 
                            THEN 1 ELSE 0 END)/COUNT(*))*100, 3) AS ratio
FROM artworks

어떻게 풀어야할지 몰라서 진행이 안됐는데 슬랙 질문방에 누군가가 올린 질문을 참고했다. 사실 거의 보고 풀었다고 하면 되겠다.
credit에 있는 값들을 lower를 이용해 소문자로 바꿔주고, like '%gift%'로 gift가 포함되어 있으면 1 아니면 0으로 분류 후 모두 더해준다. 그리고 count(*)로 전체 갯수로 나눠준 다음에 100을 곱해서 백분율로 만들어준다. 마지막으로 round 써서 3번째 자리까지 반올림해주면 끝!

최대값을 가진 행 찾기

내가 쓴 쿼리

SELECT id
FROM points
WHERE id IN (
             SELECT id
             FROM points
             WHERE x IN (MAX(x)) OR y IN (MAX(y))
            )
ORDER BY id;

내 생각의 흐름 : 서브쿼리의 points 테이블에서 가장 큰 x값을 가지고 있거나 가장 큰 y값을 가지고 있는 id를 찾고, 메인쿼리의 points 테이블에서 그 id를 찾은 후 id를 오름차순으로 정렬하면 되지 않을까?
->응 안돼 오답이야
WHERE x IN (MAX(x)) OR y IN (MAX(y))처럼 WHERE에 집계함수를 단독으로 쓰는건 안된다. SQL의 작동순서를 떠올리자

SELECT id
FROM points
WHERE x = (
           SELECT MAX(x)
           FROM points
          )
   OR y = (
           SELECT MAX(y) 
           FROM points
          )
ORDER BY id;

가장 큰 x값을 가지는 행의 id와 가장 큰 y값을 가지는 행의 id를 찾으려면 서브쿼리에서 x최대값, y최대값을 각각 구하고 or로 연결하면 된다. 서브쿼리를 하나만 써야한다는 생각을 버리자

피드백 or 느낀점

데이터 분석 파이썬 종합반 - 2,3일차 수강 완. 아직까진 이해 안되는거 없이 들을만 하다. 하지만 실제로 활용해서 문제를 푼다던가 하면 어렵겠지.. 일정을 보니까 다음주부터 파이썬 강의가 시작되는거 같은데, 주말을 이용해서 강의시작 전까지 데이터 분석 파이썬 종합반을 다 들어야겠다.

오늘은 solvesql 2문제 풀었다. 더 풀려고 했지만 머리가 안굴러간다. 그래도 꾸준하게 풀자

내일 학습 할 것은 무엇인지

꾸준하게 solvesql 문제 풀기
데이터 분석 파이썬 종합반 완강하기

#내일배움캠프 #TIL #데이터분석 #실무형데이터분석가양성과정

0개의 댓글