[스파르타코딩클럽]데이터분석 과정/TIL&WIL
23.12.19
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()