Oxygen Cherry - Pencil
본문 바로가기

새싹 데이터 분석 교육 (24.05.13~24.08.16)/TIL

[성동2기 전Z전능 데이터 분석가] 0711

728x90

 

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;

https://velog.io/@gooook/SQL-%EC%BB%AC%EB%9F%BC-%EB%82%B4-%EA%B3%A0%EC%9C%A0%EA%B0%92-%EC%B6%94%EC%B6%9C 

[SQL] 컬럼 내 고유값 추출

DISTINCT, SUBSTRING

velog.io

SELECT DISTINCT(SUBSTRING(job, 1, 3)) FROM user;

섭스트링 쓰면 데이터 엔지니어, 데이터 분석가 등 같은 직군인 거 합칠 수 있다~
 
 
 
💠 파이썬 - unique() 함수를 이용하면 개별 컬럼 내에 유일한 값을 확인할 수 있습니다.
https://hogni.tistory.com/5

[파이썬] Pandas 불러온 데이터 살펴보기: head(), shape(), info(), describe(), value_counts(), unique()

판다스에는 데이터 분석에 유용한 여러 가지 함수(메소드)와 속성이 미리 정의되어 있습니다. 이번 시간에는 불러온 데이터를 살펴보는 기능들에 대해서 알아보겠습니다. 데이터 불러오기 In [1]

hogni.tistory.com

https://blog.naver.com/PostView.nhn?blogId=rising_n_falling&logNo=221622971970

Pandas - DataFrame에서 특정 행, 열 선택

안녕하세요. '라이징n폴링'입니다. 이번 글에서는 Python의 데이터 구조 중 하나인 DataFrame...

blog.naver.com

 
https://blog.naver.com/PostView.nhn?blogId=rising_n_falling&logNo=221622971970 

Pandas - DataFrame에서 특정 행, 열 선택

안녕하세요. '라이징n폴링'입니다. 이번 글에서는 Python의 데이터 구조 중 하나인 DataFrame...

blog.naver.com

 
 
 
💠 엑셀 - unique() 함수
https://keepthefaith.tistory.com/5

엑셀_자동으로 고유값 추출 Unique 함수

예전 버젼의 엑셀에서는 아래와 같이 한 열에 여러 중복값이 있을 때, 중복값을 제거한 고유값들을 추출하려면 보통 아래와 같이 처리하곤 했습니다. ​ 어딘가에 붙여놓고, 선택한 다음에, 데

keepthefaith.tistory.com

 
 
--
찾아보니 엑셀도 유니크 함수다. 
 
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:티스토리]
 
 

[ mysql ] 기본키(Primary Key) 와 유니크키(Unique Key) 차이

 
 
 
오우;; 대박 좋은 거 배워따. 
 
 
 
 
⭐⭐⭐ 결론 
 

목적엑셀SQL파이썬
고유값 추출unique()DISTINCTunique()
SUBSTRING (부분 문자열 추출) MID()SUBSTRING()변수 이름[ : ]  
테이블 정보 보기피벗 쓰셈.. Desc 테이블명 ;info()
명령어의 시작에 붙이는 것=xx
명령어의 끝에 붙이는 것xx;

 
 
 


오후 강의 

 

| 문제 정의, 개인별 가설 설정 

 
우리는 일단 데이터를 둘러 보고 
어떻게 할지 문제를 정의해보기로 했다. 
 
 

  • 데이터 불러오기 

 
- 글자가 깨져요 -

그냥 불러오니까 자꾸 깨진다. 그럴 때는 인코딩을 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 반복문 써서... 아 문법 뭐더라;; 
 

  1. 모든 테이블명을 싹 긁어오는 방법을 찾는다. 글자 기준으로 떼면 되니까 붙어나와도 상관없음. (엑셀이나 워드로는 구분해주는 기능 쓰면 됨.)
  2. 글자 기준으로 떼는 함수 써서 리스트에 저장  -  문자열 자르기 (slicing, substring)
  3. FOR 반복문으로 각각 거에 얼터랑 리네임 붙인다 
    1. 프린트( 앞의 것, 떼내진 각각의 테이블명, 리네임, 중간 거를 추출한 테이블명)

 

# 이것이 파이썬의 슬라이싱이다! 

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 

DBeaver(DBeaver 사용방법(table 생성, column 추가, primary key 설정))

DBeaver 사용 명령어를 기입 exam 데이터 베이스에서 table의 종류를 보고 싶다면 스크립트에 아래와 같...

blog.naver.com

디비버는 편리한 기능이 많기 때문에 액세스처럼 
코드 안치고 테이블 설정으로 하는 기능도 있지 않을까 해서 찾아봤다. 
이 블로그 글 잘~ 참고했다! 
 
 
근데 내 경우는 테이블마다 기본키랑 외래키 다 지정해야 하다 보니 
한번에 코드 쓰는 게 더 편리한가 싶기도 하고.... 
 
 
우클릭 - 테이블 뷰 - 프로퍼티 - 컨스트레인트? 기본키 지정 - 세이브 - 뽈기븐 키 외래키 지정 - 세이브 
이걸 반복하는 게 걍 번거로울 뿐 그닥 오래 걸리진 않는데 
 

기본키 설정하려면 우측 하단에 톱니바퀴 옆, 연필 옆 아이콘 누르셈. 
 
 
 
기본키 코드:
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:다 관계일 거 같으니까 화살표가 받는 방향이 기본키일 거라 생각했음.
그게 자연스럽다 오덜 테이블에서 오덜 아이디가 기본키고 셀러 테이블에서 셀러 키가 기본키인 게 자연스러운 방향 아닐까? 

참고 이미지 https://www.notion.so/Olist-ac021196fd45483b8aa20139d85f97fe

 
저 노란색은 어떤 의미인지... 
링크 보고 내일 건드려야겠다. 뭐 일단 같다는 의미 같은데, 연결을 어떻게 해야 하지? 
 
 
customer_id , customer_unique_id 둘중 뭐가 기본키로 쓸만하지?? 했는데 
이걸 보니 역시 커스터먼 아이디군 
유니크 아이디 어쩌고 뭐라 뭐라 들었는데 다른 테이블에 없고 하니 
 
 
 
 
 

| 2차 멘토링 

 
 

  • 취준을 위해 해야 할 것 

 
이력서랑 자소서에 데이터 분석 과정 담기 
포폴이랑 스터디에도 넣기 
 
 
나 설명서는 생략하기 ㄷㄷ 
아무래도 좋지 안음... 
 
 

  • 기술블로그 쓰는데 오래 걸린다는 문제

 
양식을 뜯어고치기로 함. 
 
기술블로그를 쓰는 목적: 나중에 뭐 배웠는지 확인하기 위해 
자세히 쓰는 이유: 왜 배웠는데 모르겟지? 과거의 나한테 거리감 느껴진다 ㄷ ㄷ 
현상을 피하기 위해. 
 
그렇다면 소제목 등의 양식 고치느라 시간 많이 걸리고 
암튼 그래 양식 간편화 하면 될듯. 
 
 


 

여담

 
 
https://widgetbox.app/embed/clock/digital/YkjKCcsoTMqmyUWjEv6Hye?flag=true 

WidgetBox – Notion Widgets

Customizable Widgets For Notion Pages - Weather, Clocks, Calendar, Progress Bar, Buttons, Reactions

widgetbox.app

팀 노션에 이거 어떻게 다신 걸까 
 
 
 
[파이썬] Pandas 불러온 데이터 살펴보기: head(), shape(), info(), describe(), value_counts(), unique() 

[파이썬] Pandas 불러온 데이터 살펴보기: head(), shape(), info(), describe(), value_counts(), unique()

판다스에는 데이터 분석에 유용한 여러 가지 함수(메소드)와 속성이 미리 정의되어 있습니다. 이번 시간에는 불러온 데이터를 살펴보는 기능들에 대해서 알아보겠습니다. 데이터 불러오기 In [1]

hogni.tistory.com

이거는 배웠던 함수들 쫙 나오고 
데이터 살펴볼 때 기본적으로 쓰이는 주요 함수들이니까 
나중에도 보거라. 
어차피 최종 프로젝트할 때도 파이썬을 쓸테니... 
 
 
 


 

[회고]

 
 
아니 근데 
나는 잘하고 괜찮은 사람인데 
왜 그걸 몰라주는 것이지??
 
 
예전 회사에서 엑셀 양식 만들어가지고 
거기에 리스트 선택 옵션 넣었는데 
내가 신문물을 들여온 건데
더 효율적으로 일하려는 노력인데...! 
 
 
-- 
 
요즘 왤캐 피곤하지 
오늘 스터디 지원금으로 스터디원 jh님과 밥먹고 와사 
8시 초반까지 좀 졸았다 .... 
진짜 집 가 고 싶었는데 노트북 들고 가기 무겁고 
노트북 들고 가봤자 집에 가서 안할 거 같고 
음료 마시던 거 남았고 
그러한 이유로 잠깨서 n시간 집중함. 
 
이전에 늘 그랬던 것처럼 11시 끝나는 시간까지 하고 가도 좋겠지만 
내 경우는 집이 멀어서 늦게 가면 낼 피곤해진다. 
이번주는 피곤해하는 시기니까 
조금이라도 일찍 가야해..! 벌써 10시 20분이야! 클나써! 
 
아직 작가 경력사항 같은 거 보내야돼...!! 
아 근데 어케야 하지 
 
 

엑셀 파이썬 sql 혼합 일체 레쓰고

하하후후히히 
나는 다양한 언어를 모아서 정리를 다 하는 것으로 
나의 전문성을 드높일테야. 
다 깔끔하게 정리해서, 나중에 좀 쌓이면 옵시디언에 백업해서, 
두고두고 보는 나의 무기로 삼아야지! 
 


#청년취업사관학교 #데이터분석가 #데이터분석가부트캠프 #DA교육 #데이터분석교육 #실무프로젝트 #실무경험 #취업포트폴리오 #포트폴리오 #취업연계교육 #코멘토 #모비니티 

728x90