본문 바로가기
제로베이스 데이터 스쿨/일일 스터디 노트

36번째 스터디노트 / SQL 심화 - Scalar Function, EDA 학습 과제 2

by 김뎀뎀 2023. 2. 22.

※제로베이스 데이터 취업스쿨 11기 수강 중

📗 36번째 공부 내용 요약

 

SQL  심화를 이어서 학습하고 두번째 EDA 과제를 진행했다.

1. Scalar Function : UCASE, LCASE, MID, LENGTH, ROUND, NOW, FORMAT 학습

2. 파이썬 EDA 학습과제 2  :  주유소 가격 데이터 수집 및 분석/시각화


📖  36번째 공부 내용 자세히

 

1. Scalar Function

입력값을 기준으로 단일값을 반환하는 함수

 

1) UCASE

영문을 대문자로 변환하는 함수

SELECT UCASE(string);

#예시
select ucase('This is ucase test.');
'''
+------------------------------+
| ucase('This is ucase test.') |
+------------------------------+
| THIS IS UCASE TEST.          |
+------------------------------+
'''

 

2) LCASE

영문을 소문자로 변환하는 함수

SELECT LCASE(string)

#예시
select mid('This is mid test.',1,4);
'''
+------------------------------+
| mid('This is mid test.',1,4) |
+------------------------------+
| This                         |
+------------------------------+
'''

 

3) MID

문자열 부분을 반환하는 함수

SELECT MID(string, start_point, lenth);

# sting : 원본 문자열
# start : 문자열 반환 시작 위치 (첫 글자는 1, 마지막 글자는 -1)
# length : 반환할 문자열 길이(시작 위치부터 어느 길이까지 반환할건지)

#예시
select mid('This is mid test.',1,4);
'''
+------------------------------+
| mid('This is mid test.',1,4) |
+------------------------------+
| This                         |
+------------------------------+
'''

 

4) LENGTH

문자열 길이를 반환하는 함수

SELECT LENGTH(string);

#예시
select length('this is len test.');
'''
+-----------------------------+
| length('this is len test.') |
+-----------------------------+
|                          17 |
+-----------------------------+
''''

 

5) ROUND

지정한 자리에서 숫자를 반올림하는 함수

SELECT ROUND(number, decimals_place);

# number : 반올림 대상
# decimals : 반올림할 소수점 위치

#예시
select round(315.625, 2);
'''
+-------------------+
| round(315.625, 2) |
+-------------------+
|            315.63 |
+-------------------+
'''

 

6) NOW

현재 날짜 및 시간을 반환하는 함수

SELECT NOW
'''
+---------------------+
| now()               |
+---------------------+
| 2023-02-17 06:13:52 |
+---------------------+
'''

 

7) FORMAT

숫자를 천 단위 콤마가 있는 형식으로 반환하는 함수

SELECT FORMAT(number, decimal_place);

# number : 포맷을 적용할 문자 혹은 숫자
# decimal : 표시할 소수점 위치

#예시
select format(12345.6789, 0);
'''
+-----------------------+
| format(12345.6789, 0) |
+-----------------------+
| 12,346                |
+-----------------------+
'''

 

2. 파이썬 EDA 학습과제 2  

서울시에 있는 주유소의 데이터를 수집하여, 분석하는 과제를 수행하였다.

자세한 내용은 업로드할 수 없어, 그 과정에서 복습한 내용들을 작성해본다

 

■ selenium webdriver 사용

from selenium import webdriver 

driver = webdriver.Chrome(executable_path='../driver/chromedriver.exe') 

driver.get("https://www.opinet.co.kr/searRgSelect.do")

driver.quit()

 

■ selenium + beautifulsoup

from selenium import webdriver
from bs4 import BeautifulSoup

driver = webdriver.Chrome('../driver/chromedriver.exe')
driver.get"https://www.opinet.co.kr/searRgSelect.do")

req = driver.page_source
soup = BeautifulSoup(req, 'html.parser')

soup.select('.post-item')

 

■beautifulsoup

  • 단일선택 / 처음 발견한 태그만 출력 : find( ), select_one( )
  • 다중선택 / 여러 개의 태그 반환 : find_all( ), select( )

 

■goolgemap

import googlemaps

gmaps_key = '##'
gmaps = googlemaps.Client(key=gmaps_key)

# 1. 특정 공간 정보 불러오기
tmp = gmaps.geocode('서울영등포경찰서', language = 'ko')

# 2. 원하는 정보 찾기   # 데이터프레임.get('키')
# 위도, 경도
lat = tmp[0].get('geometry')['location']['lat']
lng = tmp[0].get('geometry')['location']['lng']

 

■데이터 프레임 csv 파일로 저장

dfname.to_csv('filename', encoging = 'utf-8')

 

■boxplot

sns.boxplot(x='컬럼명', y='컬럼명', data=데이터, hue='컬럼명', palette='Set1/Set2/Set3')

 


➰ 36번째 후기

 

두번째 EDA 과제! 수업에서 다뤘던 내용에서 더 나아가 좀 더 디테일한 데이터들을 끌고오는 과제 였다.

이번에는 분석보다 데이터를 끌고와서 데이터프레임으로 만드는 것에 더 점수가 높았는데, 그래서인지 크롤링을 하는데 자꾸 특정 태그 값이 안불러져서 좀 고생했다.

그래도 이래저래 바꿔서 해보니 다행히 요구하는 데이터들을 모두 수집할 수 있었다.

내가 작성한 코드대로 하는게 괜찮은 방법이었는지, 해설강의로 얼른 확인해보고 싶다.

그리고 데이터를 분석하는 문제에서는 간단한 분석이었지만, 그래도 내 시각을 조금이라도 덧붙여 넣으려고 어찌어찌 해보기는 했는데 이것도 해설을 통해 강사님께서 제시해주시는 내용이 궁금하다.

두번째 과제도 고생했다 나자신 ~


※본 내용은 제로베이스 데이터 취업 스쿨에서 제공하는 학습 내용에 기반합니다.