데이터분석 6기/본캠프

[TIL] 2025-03-06 SQL 함수 정리 & 데이터 전처리

seyeon1130 2025. 3. 6. 20:49

SQL 라이브 세션 강의

윈도우함수는 GROUP BY와 병행해서 사용할 수 없다.

 

  • RANK
RANK() -> 1위 1위 3위
DENSE_RANK() ->1위 1위 2위
ROW_NUMBER() ->1위 2위 3위

 

  • PERCENT_RANK
    • 정의: 파티션별로 가장 먼저 나오는 값을 0, 가장 마지막에 나오는 값을 1로 정하여 행 순서별 백분율을 출력해줍니다. 구간을 나누어 백분율로 출력합니다.
    • 문법: PERCENT_RANK() OVER (PARTITION BY 컬럼1 ORDER BY 컬럼2)
    • 상위 N% 구할때 사용

 

  • MATH 함수
ABS 절대값을 출력 ABS(-1)  
ROUND 숫자를 소수점 이하 자릿수에서 올림하여 출력. ROUND(2.77,1)  
CEILING 소수점을 올림하여 출력 CEILING(2.77)  
FLOOR 소수점을 내림하여 출력 FLOOR(2.77)  
TRUNCATE 숫자를 소수점 이하 자릿수에서 버림하여 출력 TRUNCATE(2.77,1)  
RAND 지정 숫자 범위 중 하나를 랜덤하게 출력 ROUND(RAND()*100, 0) 0~100 사이 랜덤값

 

 

  • STRING 함수
CONCAT 문자열을 병합할 때 사용. CONCAT(’피카츄’,’라이츄’) 피카츄라이츄
SUBSTRING 문자열을 자를때 사용 SUBSTRING(’피카츄라이츄’,2,4) 카츄라
SUBSTRING_INDEX 문자열을특정 구분기호를 통해 출력할 때 사용 SUBSTRING_INDEX(’피카.라이’, ’.’,1) 피카
REVERSE 문자열을 뒤집을 때 사용 REVERSE(’피카츄’) 츄카피

 

 

  • 날짜 함수
NOW
SYSDATE
CURRENT_TIMESTAMP
현재시간과 날짜를 출력 NOW()
SYSDATE()
CURRENT_TIMESTAMP
DATE_ADD 날짜에서 기준값 만큼 덧셈하여 출력 DATE_ADD(’2024-04-03’, INTERVAL 1 DAY)

DATE_SUB 날짜에서 기준값 만큼 뺄셈하여 출력 DATE_SUB(’2024-04-03’, INTERVAL 1 DAY)
DATEDIFF 두 날짜를 뺄셈하여 출력 DATEDIFF('2024-04-03','2024-04-01')
DATE_FORMAT 날짜를 형식에 맞게 출력 DATE_FORMAT(now(),'%Y-%m-%d')
UNIX_TIMESTAMP
현재시간을 UNIXTIME 으로 구함 unix_timestamp()
CURDATE
CURRENT_DATE
현재 날짜 출력 CURDATE()
CURRENT_DATE()
CURTIME
CURRENT_TIME
현재 시간 출력 CURTIME()
CURRENT_TIME()
YEAR 날짜의 연도 출력 year('2024-04-01')
MONTH 날짜의 월 출력 month('2024-04-01')
DAY 날짜의 일 출력 day('2024-04-01')

 

데이터 전처리 & 시각화 강의

 

1. 조건 넣고 출력하기

df[df[컬럼명]조건]]

 

다중 조건 

loc에도 조건 넣기 가능

isin() -> 조건 in 

condition = df['컬럼명'] ='a'
df[condiion] #이것도 같은 결과나옴

 

 

\ 줄바꿈 코드, 조건 길어지면 \하고 엔터하고 더 쓰면 됨

| or 코드랑 헷갈리지 않기.

 

pd.to_datetime(df['컬럼명']) #date 타입으로 바뀜

2. 병합하기

1. concat

 

- 컬럼이 같을 때

 

중복되면 중복 되는대로 나옴.

index까지 원래있던 순서대로 나오니까 pd.concat([a,b]).reset_index(drop = True) 해주면 인덱스 순서대로!

 

- 컬럼이 다를 때

concat()함수는 기본이 axis = 0, 위아래로 합치기 때문에 컬럼 다르면 저렇게 나옴.

axis = 1로 해주면

2. merge /sql join 과 같은 기능

on 에 적힌 컬럼의 내용이 같을 경우에만 출력. how 안쓰면 inner join 같음

how에 left쓰면 leftjoin 과 같음.


3.  데이터 집계

groupby

 

a.groupby('한글').mean

 sql처럼 컬럼에 대한 그룹별로 집계가 가능함.

agg(llist) 하면 그룹별로 배열로 값들이 출력됨.

원하는 컬럼들만 계산하도록 하려면 저렇게 해주면 된다.

agg 사용하면 각 컬럼에 원하는 집계함수 사용 가능


4. pivot table

aggfunc = 'sum' 이거는 저기에 만약 수학 영어의 점수가 많을 때는 다 합해서 보여줌. mean 하면 평균 나옴

만약 컬럼 두 개면 배열[]로 묶어주면 됨


5. 정렬

sort_value(by = 컬럼명) order by같다.

ascending = False 해주면 내림차순 됨

두 개 기준으로 하고 싶으면 배열로 묶기

 

sort_index()하면 인덱스 순으로 정렬

 

오늘 한 일

sql 코드카타 5개

python 코드카타 5개

sql 라이브세션 수강

데이터 전처리 시각화 3주차 완강