doo_ 2023. 12. 19. 08:30

[오늘 할 일]

1. (미니 프로젝트) SQL을 활용하여 영화 데이터 보기

2. SQL 코드카타 3문제 풀기

3. (엑셀보다 쉽고 빠른 SQL) 강의 내용 위주 복습

4. ( 데이터 분석 종합반 KDT 실무형 데이터 분석가 양성과정) 강의 내용 위주 복습

5. 공부 및 참고할 책 구매(데이터 문해력, 통계101&데이터 분석, 

 

[내용 정리]

1. SQL 코드카타 문제

-- LIKE
SELECT *
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE ('%네비게이션%')
ORDER BY CAR_ID DESC
-- _(언더바) : 한 글자 / % : 여러 글자

-- CASE & DECODE
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE,
       CASE STATUS WHEN 'SALE' THEN '판매중'
       			   WHEN 'RESERVED' THEN '예약중'
       			   WHEN 'DONE' THEN '거래완료'
       END STATUS
FROM USED_GOODS_BOARD
WHERE TO_CHAR(CREATED_DATE,'YYYY-MM-DD') = '2022-10-05'
ORDER BY BOARD_ID DESC
-- 
DECODE(STATUS,'SALE','판매중','RESERVED','예약중','DONE','거래완료') STATUS
--

-- 논리값 true 1 false 0 max를 활용해 구분
SELECT CAR_ID, 
       MAX(CASE WHEN '20221016' BETWEEN TO_CHAR(START_DATE, 'YYYYMMDD') AND TO_CHAR(END_DATE, 'YYYYMMDD') THEN '대여중'
        ELSE '대여 가능' END) AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC

2. 엑셀보다 쉽고 빠른 SQL 복습

-- MySQL
SELECT 칼럼1, 칼럼2, SUM/MIN/COUNT(칼럼)
FROM TABLE
WHERE 조건
GROUP BY 칼럼1
ORDER BY 칼럼1
--
REPLACE(칼럼1, '현재 값', '바꿀 값') -- 문자 바꾸기
CONCAT[칼럼1, 칼럼2 ...] -- 문자 합치기
--
IF(조건, 충족시 값, 미충족 값)
CASE WHEN 조건1 THEN 값
	 WHEN 조건2 THEN 값
     ELSE 값
END 
-- 데이터 전처리
COALESE(칼럼1, 대체값) -널값을 대체값으로 바꿔주는 함수
IF 활용
--WINDOW FUNCTION (rank, sum etc..)
rank() over (partition by 그룹 기준 컬럼 order by 정렬 기준)
--
date(문자형식 날짜) - 날짜형식으로
date_format(date, %y)
- Y,y (년)/ M,m (월)/ d, e(일)/ w(주)

3. 데이터 분석 종합반 KDT 실무형 데이터 분석가 양성과정 내용 복습 (실습은 x)

- 데이터 분석이란? 어떤 결과(or 방안 등)에 대한 명확한 근거를 줄 수 있는 도구

> 데이터를 보고 문제를 파악하거나 행동을 결정할 수 있다.

- 데이터 분석을 잘 하기 위해서는?, 분석적 사고의 구조를 흡수하는 것이 중요.

+) kaggle : 데이터 분석 공부하는 데 유용한 사이트

_예제가 필요할 때 추천 Search) superstore dataset

- 데이터 분석 CYCLE : 문제 정의 및 가설 설정 -> 데이터 기본 세팅 -> 데이터 분석 -> 분석 결과 시각화 -> 결론

(* 유의미한 분석결과를 얻기 위해서는 가설을 잘 세우는 것이 중요!

>> 좋은 가설은 풀고자 하는 문제 방향성과 일치, 테스트 가능한 가설, 검증 후 결과에 따라 특정 액션으로 유도될 수 있는 가설이다.)

- 데이터 분석 대표적인 프로그래밍 언어 : Python

+) 엑셀의 한계 : 대용량 데이터 분석시 시간이 엄청 오래 걸림

# 한 줄 주석 - # / 여러 줄 주석 """ 내용 """ 
"""
- 관련있는 기능들의 묶음을 모듈, 모듈들의 묶음을 패키지, 패키지의 묶음을 라이브러리라고 한다.
- Library는 즉 코드 모음집
- 대표적인 예 :
1) PANDAS (데이터 분석)
- 엑셀 뿐 아니라 여러 종류의 형태의 데이터 파일을 읽을 수 있다.
- 필요한 데이터를 자르고 붙일 수 있다.
- 결측치 제거 기능 / 필터링 기능
2) Numpy (데이터 연산)
3) MATPLOTLIB (분석 결과 시각화)
4) Seaborn (시각화) (matplotlib보다 더 다양한 스타일 그래프 제공)
5) Folium(지도에 시각화)
"""
# 파이썬 문법 기초 용어 : LIST / INDEX / DICTIONARY / IF문 / WHILE문 /
# 시작은 라이브러리 불러오기 IMPORT 'LIBRARY명' AS '요약어'

# Google Colabs 사용
import pandas as pd
# 파일 불러오기
filename = pd.read_table('파일경로/파일이름.csv', sep = ',')
# 데이터 확인
filename.head()
filename.info()
filename.describe()
# 널 값 파악
print(filename.isnull().sum())
# 널 값 제거
filename = filename.dropna()
# 상관계수
corr = filename.corr(methods = 'pearson') #'통계 분석방법'
# 날짜 데이터로 바꿔주는 함수 pd.to_datetime
format = '%Y-%m-%dT%H:%S:%f'
filename[date] = pd.to_datetime(filename[date], format = 'format') 
# 해당 날짜 요일 [날짜 칼럼].dt.day_name
# groupby('칼럼명') : 특정 기준으로 그룹화 처리
# sort_indesc()
# set() 중복된 데이터를 제거하고 데이터들을 리스트로 출력
# filename.drop_duplicates(['칼럼']) - 칼럼의 중복 데이터 처리
# filename.reset_index() - 인덱스 다시 정렬
# filename.sort_values(by = ['칼럼'], ascending = True) 지정 값 기준 정렬
# 기본 구조
import matplotlib.pyplot as plt
plt.rc('font', family='NanumBarunGothic')
# 글자가 꺠질 시
!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf

#그래프 사이즈
plt.figure(figsize=(10,5))
#그래프 x축 y축
plt.bar(weekdata.index, weekdata)
#그래프 명
plt.title('요일별 수강 완료 수강생 수')
#그래프 x축 레이블
plt.xlabel('요일')
#그래프 y축 레이블
plt.ylabel('수강생(명)')
#x축 눈금 표시 하기
plt.xticks(np.arange(24))
#x축 레이블을 90도로 변환
plt.xticks(rotation=90)
#그래프 출력
plt.show()