TIL 166일차: textwrap, re

2024. 6. 20. 11:44회고/TIL(매일)

 

✏️도전한 점


1. SQL 스터디원의 코드 복습: rank() over(order by count(*)) as rk

2. 아티클 정보 요약 및 스터디: 다양한 분포 개념

3. 텍스트를 다루는 라이브러리 학습

 

01 코드 복습


1) 서브쿼리 뜯어보기: 리뷰 수 기준으로 아이디와 이름을 내림차순 정렬해 랭킹을 부여한다.

SELECT r.MEMBER_ID,
       p.MEMBER_NAME,
       RANK() OVER (ORDER BY COUNT(*) DESC) rk
FROM REST_REVIEW r
LEFT JOIN MEMBER_PROFILE p ON p.MEMBER_ID = r.MEMBER_ID
GROUP BY r.MEMBER_ID
ORDER BY COUNT(*) DESC

 

2) 전체 쿼리문: 서브쿼리 Z와 REST_REVIEW를 JOIN하여 RK=1을 출력한다.

- FROM문에 서브쿼리를 사용할 때 AS '별칭'을 붙여서 JOIN한다.

- RANK() OVER(ORDER BY ~)는 동일 리뷰수에 대해 같은 랭크를 부여한다.

SELECT z.MEMBER_NAME,
       r.REVIEW_TEXT,
       DATE_FORMAT(r.REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATE
FROM
    (SELECT r.MEMBER_ID,
            p.MEMBER_NAME,
            RANK() OVER (ORDER BY COUNT(*) DESC) rk
     FROM REST_REVIEW r
     LEFT JOIN MEMBER_PROFILE p ON p.MEMBER_ID = r.MEMBER_ID
     GROUP BY r.MEMBER_ID
     ORDER BY COUNT(*) DESC) AS z
JOIN REST_REVIEW r ON z.MEMBER_ID = r.MEMBER_ID
WHERE z.rk = 1
ORDER BY REVIEW_DATE, REVIEW_TEXT

 

기타) numpy 넘파이 평균 구하기

import numpy as np
np.mean(arr)

 

02 아티클 요약


 

🔎아티클 스터디: 다양한 분포 개념

1. 오늘의 아티클(주제) (4) DSforS : Chap 2 탐색적 데이터분석 2.4 ~ 2.81. 목차2.9.이항분포2.10. 카이제곱분포2.11. F분포2.12. 푸아송 분포와 그 외 관련 분포들2.13. 마치며 2. 본문2.9. 이항분포베르누이

specialda.tistory.com

- 통계의 이항분포, 카이제곱분포, F분포, 푸아송분포의 개념에 대해 정리해보는 시간이었다.

 

03 텍스트를 다루는 라이브러리 학습


 

정규 표현식: 보다 간단하게 개인 정보를 보호하자

data = """홍길동의 주민번호는 800905-1049118 입니다. 그리고 고길동의 주민번호는 700905-1059119 입니다.그렇다면 누가 형님일까요?""" 위와 같은 데이터가 주어졌다. 정보보호를 위해 뒤에 해당하는

specialda.tistory.com

1) import textwrap

 

- textwrap.shorten("text", width=15) : 텍스트가 15자가 넘으면 [...] 말 줄임표로 줄인다.

- textwarp.wrap("long_text", width=70) : 긴 문장을 70자로 끊어서 리스트로 만들어 준다.

- textwarp.fill("long_text", width=70) : 긴 문장을 70자로 끊어서 줄바꿈 해준다. (자동화)

2) import re

 

- var = re.compile() : 변수에 찾고자 하는 텍스트의 형식을 지정해서 저장한다.

- var.sub("변경 형식", data 데이터를 담고 있는 변수) : data에 있는 문자열을 조건에 맞게 변경한다.