SQL 프로젝트 1일차
❇️ 오늘 배운 내용
1. 팀 빌딩 진행
2. 데이터 세팅, 일부 전처리
3. 문제 정의, 개인 가설 설립
주요 개념
unique() | # | ''' ''' |
DISTINCT | -- | /* */ |
걍 아래 표 참고~
기본키 외래키 등록하는 법도 참고~
오전 강의
| 팀 빌딩, 역할 설정
- 나애 팀
나는 브라질 이커머스(기본 제공 데이터) 3팀의 기술 담당자가 되었다.
브라질 이커머스만 13명이나 된다. 아무 팀도 선택하지 않은 경우 기본 팀인 여기에 속하게 된다.
브라질 이커머스 플랫폼인 올리스트 데이터는 캐글에서 무료로 받을 수 있고 꽤 뭔가 있기 때문에
데이터 분석을 배워보는 사람들이 많이 건드려본다.
파이썬과 SQL의 차이
남는 시간에 쪼깐 기록해보는...
라운드 함수: 파이썬은 뭐 잘 안나와서 어찌저찌 뭐시기라는 얘기
https://blog.naver.com/intheskysoul/222104080033
💠주석 차이
SQL | 파이썬 | ||
1줄 주석 | -- | # | |
1줄 단축키 | Ctrl + / | Ctrl + / | |
여러 줄 주석 | /* 어쩌고 저쩌고 */ | ''' 어쩌고 저쩌고 ''' | """ 어쩌고 저쩌고 """ |
여러 줄 단축키 | Ctrl + Shift + / | Ctrl + / |
언어별 다양한 주석들
정리글1
정리글2
2가 더 종류 많고 1이 더 깔끔.
근데 2에서 mysql 한줄 주석이 #라고 하는데 우리가 --를 주석으로 쓰는 건 디비버 써서 그런건가?
아님 2가 옛날 글이라 그런가?
--
명령 마무리도 sql은 끝에 ; 다는 건데
파이썬은 없지 않나? 걍 if문 등에 : 다는 거 같은데 ... 우리 수업에서 주피터를 써서 안쓴 것인지 원래 안쓴 것인지... 내가 예전에 기초 공부했을 땐 어땠더라 안썼던 거 같은데...??
지피티짱짱걸
- 문자열 자르기 (문자열 string의 일부 가져오기)
나는 엑셀과 파이썬에도 서브스트링 함수가 있는 거라고 살짝 착각했는데
알고 보니 아니었음. 걍 부분 문자열을 substring이라고 했을 뿐이고
부분 문자열을 추출하는 기능을 부르는 명칭이었을 뿐...
💠SQL - SUBSTRING
SUBSTRING은 문자열의 일부를 추출하는 함수입니다.
첫 번째 인자는 대상이 되는 컬럼을, 두 번째 인자는 추출을 시작하는 지점, 세 번째 인자는 추출을 끝내는 지점을 의미합니다. 출처
서브스트링은 잘라주는 함수고
검색 자체는 WHERE에 붙이는 LIKE 술어로 "ㅇㅇ%" 이케 씀. _랑 %가 와일드 카드.
반환과 검색의 차이.
💠엑셀에서 문자열 자르기는 MID 함수를 이용하면 된다.
MID 함수는 substring과 동일한 기능을 한다고 보면 된다.
(LEFT, RIGHT, MID)도 있음...
엑셀에도 SUBSTRING 있는줄 알고, 원래 mid가 있는데 왜 같은 기능을 하는 SUBSTRING 함수가 생긴거지? 했는데
엑셀 켜서 해보니까 substring 함수가 안됨. 안뜸.
https://downtowup.tistory.com/167
근데 왜 이 글에선(24년 글) 이 함수에 대해 소개하지? 버전이 다른가? 난 일단 마이크로소프트365판인데.
💠파이썬 - 문자열이 저장된 변수 이름[ : ]
이런 방식을 슬라이싱이라고 함. 인덱스로 간단하게 가능. 서브스트링 함수는 없음.
# 기본적인 슬라이싱 예제
text = "Hello, World!"
substring = text[7:]
print(substring) # 출력 결과: "World!"
# 스텝(step) 설정 예제
text = "Python Programming"
substring = text[::2]
print(substring) # 출력 결과: "Pto rgamn"
위의 예제에서는 문자열 "Python Programming"에서 인덱스 0부터 시작하여 2씩 증가하면서 문자열을 추출합니다.
출처: https://seoulitelab.tistory.com/entry/Python파이썬-문자열-자르기-Slicing-Substring [SeouliteLab:티스토리]
- JAVA에서는 substring, left, right 등 여러 함수를 이용하여 문자열을 자르게 할 수 있습니다.
파이썬에는 별도의 함수는 없지만 더욱 간단하게 자를 수 있습니다. 출처
- 고유값 찾아내기
데이터 보다가 어 이건 뭐머 있는지 보고 싶다~
파이썬은 GROUPBY.HEAD(1) 하면 되는데 이건 어떻게 하더라
엑셀은 그냥 필터 눌러보면 각 나오는데, 피벗해서 그룹화해도 될 거 같은데,
피벗해서 그 열을 기준으로 COUNT 표 만들어도 보이긴 할 거 같은데 (하긴 뭐 SQL도 그 열로 그룹화해서 카운트 해도 되긴 하지...)
해서 찾아봄...
찾아보니 느낀 점: 아 맞다 이거 배웠지
맞다 이거 중복값 삭제가 아니라 빼고 보여주는 거였지~
💠 SQL - DISTINCT
가장 기본적인 고유값 추출 방법입니다. 컬럼에 대해 DISTINCT 함수를 적용하면 고유값이 리턴됩니다.
SELECT DISTINCT(job) FROM user;
SELECT DISTINCT(SUBSTRING(job, 1, 3)) FROM user;
섭스트링 쓰면 데이터 엔지니어, 데이터 분석가 등 같은 직군인 거 합칠 수 있다~
💠 파이썬 - unique() 함수를 이용하면 개별 컬럼 내에 유일한 값을 확인할 수 있습니다.
https://hogni.tistory.com/5
https://blog.naver.com/PostView.nhn?blogId=rising_n_falling&logNo=221622971970
https://blog.naver.com/PostView.nhn?blogId=rising_n_falling&logNo=221622971970
💠 엑셀 - unique() 함수
https://keepthefaith.tistory.com/5
--
찾아보니 엑셀도 유니크 함수다.
SQL에서는 유니크를 안쓰나 했더니??
- 유니크키 (Unique Key)
- UNIQUE 는 제약조건의 하나로 해당 컬럼에 동일한 값이 들어가지 않도록 하는 제약조건입니다.
- UNIQUE 제약조건은 특정 열에 중복된 값이 입력되는 것을 방지할 수 있습니다.
사실 UNIQUE 와 PRIMARY KEY 두 조건 모두 같은 역할을 하지만 조금씩 틀립니다.
PRIMARY KEY 의 경우 하나의 테이블에 하나만 정의할 수 있지만 UNIQUE 의 경우는 여러 개를 정의할 수 있습니다.
그리고 PRIMARY KEY 조건과 달리 UNIQUE 에서는 NULL 값이 허용됩니다.
하지만 UNIQUE 조건에서는 열당 하나만 NULL 이 허용됩니다.
출처: https://makand.tistory.com/entry/SQL-UNIQUE-구문 [진격의 IT:티스토리]
오우;; 대박 좋은 거 배워따.
⭐⭐⭐ 결론
목적 | 엑셀 | SQL | 파이썬 |
고유값 추출 | unique() | DISTINCT | unique() |
SUBSTRING (부분 문자열 추출) | MID() | SUBSTRING() | 변수 이름[ : ] |
테이블 정보 보기 | 피벗 쓰셈.. | Desc 테이블명 ; | info() |
명령어의 시작에 붙이는 것 | = | x | x |
명령어의 끝에 붙이는 것 | x | x | ; |
오후 강의
| 문제 정의, 개인별 가설 설정
우리는 일단 데이터를 둘러 보고
어떻게 할지 문제를 정의해보기로 했다.
- 데이터 불러오기
- 글자가 깨져요 -
그냥 불러오니까 자꾸 깨진다. 그럴 때는 인코딩을 UTF-8로 고치면 해결!
원래는 어쩌고 KR이었다.
- 안불러져요 -
한번에 다 불러오면 이런 문제가 생김 .
이렇게 몇몇 데이터들이 안불러와져! 하면 걍
하나씪 불러와... 어쩔 수 없어...
로딩 때문인가! 기다리면 되나.... .
데이터 전처리 일부
- 테이블명 한번에 바꾸기
FROM으로 테이블 불러오고 활용할 일 많을텐데
그때마다 올리스트.. 데이터셋... 아 너무 길다고요
데이터셋은 필요없는 단어니까 빼고
올리스트는 데이터베이스 이름을 그렇게 저장하면 되니까 뺀다.
/*
* 테이블명 한번에 변경하는 코드
*/
ALTER TABLE olist_customers_dataset RENAME customers;
ALTER TABLE olist_geolocation_dataset RENAME geolocation;
ALTER TABLE olist_order_items_dataset RENAME order_items;
ALTER TABLE olist_order_payments_dataset RENAME order_payments;
ALTER TABLE olist_order_reviews_dataset RENAME order_reviews;
ALTER TABLE olist_orders_dataset RENAME orders;
ALTER TABLE olist_products_dataset RENAME products;
ALTER TABLE olist_sellers_dataset RENAME sellers;
허거덩~ 나 이 방법 있는지 물어밧다가 일일이 바꿨는데
이런 방법이 잇엇슴??
- 갑자기 ㅍㅇㅆ 코드 짜보기
흠 그래도 귀찮긴 매한가지구나 어떻게 중간 부분만 추출하는 방법 없나?
걍 텍스트 쫙 긁어올 수라도 있으면
올리스트와 데이터셋 사이의 글자들만 빼오게 하면 되는데
글자수가 통일되어 있으니 엑셀이면 MID 쓰면 될듯.
파이썬으로 리네임 이런 거 붙임 되니까... FOR 반복문 써서... 아 문법 뭐더라;;
- 모든 테이블명을 싹 긁어오는 방법을 찾는다. 글자 기준으로 떼면 되니까 붙어나와도 상관없음. (엑셀이나 워드로는 구분해주는 기능 쓰면 됨.)
- 글자 기준으로 떼는 함수 써서 리스트에 저장 - 문자열 자르기 (slicing, substring)
- FOR 반복문으로 각각 거에 얼터랑 리네임 붙인다
- 프린트( 앞의 것, 떼내진 각각의 테이블명, 리네임, 중간 거를 추출한 테이블명)
# 이것이 파이썬의 슬라이싱이다!
my_str = "This is a substring tutorial..!"
result = my_str[:3]
print(result)
출처
FOR 아무 임시 변수 IN 리스트 이름 :
PRINT( "얼터 테이블" , , )
걍 이렇게만 해도 되나? BREAK 안해도 되나?
IF도 굳이 필요없지 않나?
💠제품명 등 몇몇 스페인어 고치기
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1
- SQL 튜토리얼에서 예시 구문 펌
어~ 내일 할게~
기본키, 외래키 설정하여 테이블 연결시키기
https://m.blog.naver.com/backers10/223024505368
디비버는 편리한 기능이 많기 때문에 액세스처럼
코드 안치고 테이블 설정으로 하는 기능도 있지 않을까 해서 찾아봤다.
이 블로그 글 잘~ 참고했다!
근데 내 경우는 테이블마다 기본키랑 외래키 다 지정해야 하다 보니
한번에 코드 쓰는 게 더 편리한가 싶기도 하고....
우클릭 - 테이블 뷰 - 프로퍼티 - 컨스트레인트? 기본키 지정 - 세이브 - 뽈기븐 키 외래키 지정 - 세이브
이걸 반복하는 게 걍 번거로울 뿐 그닥 오래 걸리진 않는데
기본키 설정하려면 우측 하단에 톱니바퀴 옆, 연필 옆 아이콘 누르셈.
기본키 코드:
ALTER TABLE olist.customers ADD CONSTRAINT customers_pk PRIMARY KEY (customer_id);
외래키 코드: ALTER TABLE olist.orders ADD CONSTRAINT orders_customers_fk FOREIGN KEY (customer_id) REFERENCES olist.customers(customer_id);
여기서 밑에 빨간 키 버튼 우측 하단에 거 누르면 팝업 뜨자나
기본키 있는 테이블 누르면 외래키로 쓸 수 있는 컬럼이 떠.
그거 누르면 설정 돼.
혹은 테이블 구조도 사진이랑, 데이터베이스 이름이랑 적어서 지피티한테 만들어 달라고 하자.
아님 한명이 일일이 저거 다 적고... 어... 복붙만 하면...
-- customer_id
ALTER TABLE olist.customers ADD CONSTRAINT customers_pk PRIMARY KEY (customer_id);
ALTER TABLE olist.orders ADD CONSTRAINT orders_customers_fk FOREIGN KEY (customer_id)
REFERENCES olist.customers(customer_id);
-- order_id
ALTER TABLE olist.orders ADD CONSTRAINT orders_pk PRIMARY KEY (order_id);
ALTER TABLE olist.order_payments ADD CONSTRAINT order_payments_orders_fk
FOREIGN KEY (order_id) REFERENCES olist.orders(order_id);
ALTER TABLE olist.order_reviews ADD CONSTRAINT order_reviews_orders_fk
FOREIGN KEY (order_id) REFERENCES olist.orders(order_id);
ALTER TABLE olist.order_items ADD CONSTRAINT order_items_orders_fk
FOREIGN KEY (order_id) REFERENCES olist.orders(order_id);
-- product_id
ALTER TABLE olist.products ADD CONSTRAINT products_pk PRIMARY KEY (product_id);
ALTER TABLE olist.order_items ADD CONSTRAINT order_items_products_fk
FOREIGN KEY (product_id) REFERENCES olist.products(product_id);
-- seller_id
ALTER TABLE olist.sellers ADD CONSTRAINT sellers_pk PRIMARY KEY (seller_id);
ALTER TABLE olist.order_items ADD CONSTRAINT order_items_sellers_fk
FOREIGN KEY (seller_id) REFERENCES olist.sellers(seller_id);
그래서 내가 뜨는 거 다 복사함. 팀 노션에도 올림.
테이블 다이어그램도 보기 편하게 정리해서 저장했다.
팀 노션에 아래 사진을 올리셨길래 참고했다.
기본키랑 외래키 1:다 관계일 거 같으니까 화살표가 받는 방향이 기본키일 거라 생각했음.
그게 자연스럽다 오덜 테이블에서 오덜 아이디가 기본키고 셀러 테이블에서 셀러 키가 기본키인 게 자연스러운 방향 아닐까?
저 노란색은 어떤 의미인지...
링크 보고 내일 건드려야겠다. 뭐 일단 같다는 의미 같은데, 연결을 어떻게 해야 하지?
customer_id , customer_unique_id 둘중 뭐가 기본키로 쓸만하지?? 했는데
이걸 보니 역시 커스터먼 아이디군
유니크 아이디 어쩌고 뭐라 뭐라 들었는데 다른 테이블에 없고 하니
| 2차 멘토링
- 취준을 위해 해야 할 것
이력서랑 자소서에 데이터 분석 과정 담기
포폴이랑 스터디에도 넣기
나 설명서는 생략하기 ㄷㄷ
아무래도 좋지 안음...
- 기술블로그 쓰는데 오래 걸린다는 문제
양식을 뜯어고치기로 함.
기술블로그를 쓰는 목적: 나중에 뭐 배웠는지 확인하기 위해
자세히 쓰는 이유: 왜 배웠는데 모르겟지? 과거의 나한테 거리감 느껴진다 ㄷ ㄷ
현상을 피하기 위해.
그렇다면 소제목 등의 양식 고치느라 시간 많이 걸리고
암튼 그래 양식 간편화 하면 될듯.
여담
https://widgetbox.app/embed/clock/digital/YkjKCcsoTMqmyUWjEv6Hye?flag=true
팀 노션에 이거 어떻게 다신 걸까
[파이썬] Pandas 불러온 데이터 살펴보기: head(), shape(), info(), describe(), value_counts(), unique()
이거는 배웠던 함수들 쫙 나오고
데이터 살펴볼 때 기본적으로 쓰이는 주요 함수들이니까
나중에도 보거라.
어차피 최종 프로젝트할 때도 파이썬을 쓸테니...
[회고]
아니 근데
나는 잘하고 괜찮은 사람인데
왜 그걸 몰라주는 것이지??
예전 회사에서 엑셀 양식 만들어가지고
거기에 리스트 선택 옵션 넣었는데
내가 신문물을 들여온 건데
더 효율적으로 일하려는 노력인데...!
--
요즘 왤캐 피곤하지
오늘 스터디 지원금으로 스터디원 jh님과 밥먹고 와사
8시 초반까지 좀 졸았다 ....
진짜 집 가 고 싶었는데 노트북 들고 가기 무겁고
노트북 들고 가봤자 집에 가서 안할 거 같고
음료 마시던 거 남았고
그러한 이유로 잠깨서 n시간 집중함.
이전에 늘 그랬던 것처럼 11시 끝나는 시간까지 하고 가도 좋겠지만
내 경우는 집이 멀어서 늦게 가면 낼 피곤해진다.
이번주는 피곤해하는 시기니까
조금이라도 일찍 가야해..! 벌써 10시 20분이야! 클나써!
아직 작가 경력사항 같은 거 보내야돼...!!
아 근데 어케야 하지
엑셀 파이썬 sql 혼합 일체 레쓰고
하하후후히히
나는 다양한 언어를 모아서 정리를 다 하는 것으로
나의 전문성을 드높일테야.
다 깔끔하게 정리해서, 나중에 좀 쌓이면 옵시디언에 백업해서,
두고두고 보는 나의 무기로 삼아야지!
#청년취업사관학교 #데이터분석가 #데이터분석가부트캠프 #DA교육 #데이터분석교육 #실무프로젝트 #실무경험 #취업포트폴리오 #포트폴리오 #취업연계교육 #코멘토 #모비니티
'새싹 데이터 분석 교육 (24.05.13~24.08.16) > TIL' 카테고리의 다른 글
SQL 데이터 분석 프로젝트 6일차 - 0718 (0) | 2024.07.18 |
---|---|
SQL 데이터 분석 프로젝트 2일차 - 0712 (7) | 2024.07.14 |
[성동2기 전Z전능 데이터 분석가] 0710 (0) | 2024.07.10 |
[성동2기 전Z전능 데이터 분석가] 0709 (1) | 2024.07.09 |
[성동2기 전Z전능 데이터 분석가] 0708 (미완) (1) | 2024.07.08 |