본문 바로가기

data8

고객 세그먼트 최근 분석 프로젝트를 진행하며 세그먼트 라는 단어가 나왔다.어떤걸 의미하는지 추측조차 되지 않아 따로 찾아보고 기록하기로 했다.나의 삶, 나의 빛, 나의 스승님께 여쭤봤다.한번에 이해가 되지 않아서 세그먼트 = 비슷한 특성을 가진 유저층 이라고 이해해도 되는건가 다시한번 검토를 부탁했다.세그먼트 = 특정 기준에 따라 비슷한 특성을 가진 유저들을 묶어놓은 그룹.이젠 특정 기준을 어떻게 삼는지를 알아볼 차례같다.결국엔 어차피 세그먼트들이 여러가지 나올텐데 그걸 추출하는 과정을 클러스터링으로 진행하면 어떨까 싶어서 물어봤따.나쁘지 않은 방법같다.  다만 전통적인 방법도 알고있어야 어떤 방법이 더 좋은지 어디에 어떤걸 사용하는게 적절할 지 판단할 수 있을 것 같아서 이부분도 물어봤다. 나이, 소득과 같이 명확하.. 2024. 6. 13.
jupyter notebook에서 sql 쓰기 %load_ext sql pip install ipython-sql pip install pyscopg2-binary PostgreSQL db를 사용하기 위해 pyscogp2 라이브러리도 함께 설치했다. #sql server pip install pyodbc #MySQL pip install PyMySQL 혹여나 주피터에서 접속하고자 하는 DB가 mysql이나 sql server 라면 위의 패키지를 설치하면 된다. pyscopg2 같은 경우에 설치하는 환경에 PostgreSQL 이 설치되어있지 않으면 설치 과정에 오류가 난다. 그래서 라이브러리, 함수만 담겨있는 binary 패키지를 설치하면 대부분 정상적으로 작동된다. %load_ext sql 으로 주피터에서 sql 엔진을 돌려주고 %sql postgr.. 2024. 3. 19.
MySQL load data workbench의 import wizard 를 사용하면 너무 오래 걸리는 문제때문인지 row를 날려먹는다. 콘솔에서 load data를 사용하는것이 가장 빠르다고 하여 시도해 본 것들을 정리해 보겠다. 1. 환경변수 등록. 콘솔에서 mysql 명령어가 작동하지 않았다. installer로 설치하는 과정에 path관련 항목이 있길래 당연히 나는 환경변수 편집이 되어 있을 줄 알았다. windows 답게 안되어있는걸 보니 머리에 열이 조금 찼다. 이렇게 MySQL Sever bin 폴더를 환경변수 path에 넣어주니 mysql 명령어가 cmd에서 잘 작동했다. 2. workbench connection 수정 콘솔에서 아무리 local infile =1 을 줘도 workbench에는 적용이 안되는걸 보니 더.. 2024. 3. 9.
Sql 이진 데이터 이진 데이터. 이진법으로 저장한 데이터. 이게 무슨 소리인가... 어떤 느낌인지 감이 오지않아 여러가지 조사해 보았다. GPT의 도움을 받았는데 단순히 사람이 봤을 때 '문자' 가 아닌 데이터들을 모두 이진 데이터로 저장하는 것 같다. 0, 1로 저장하는 이유는 NLP나 이미지 관련 머신러닝 모델을 만들 때 원 핫 인코딩 과정이 들어가는 것과 같다고 봤다. 어떻게 보면 매우 똑똑하지만 반대로 0과 1 바라기인 컴퓨터에게 이미지 파일을 그대로 넘겨주기엔 효율도 좋지 않고 그 파일을 온전히 제대로 이해했는지도 알 수 없다. 이 문제를 해결하기 위해 원 핫 인코딩 과정이 NLP, 이미지 처리에서 빠지지 않는다고 생각한다. DB저장도 마찬가지로 비디오 파일, 오디오 파일, 이미지 파일을 mp4, mp3, png.. 2024. 3. 6.
Mysql 8.0 Workbench로 로컬 테스트 환경 구축 프로그래머스 데이터분석 데브코스 수강 진행중에 웹으로 쿼리 몇개 실험해보려고 했다. 테이블 만들기, 웹 UI, 접근성 등이 너무 불편했다. 여러가지 시도해보기에는 적합한 환경이 아닌 것 같아서 컴퓨터를 혹사시키기로 했다. https://dev.mysql.com/downloads/installer/ 이곳에서 로컬 환경에 맞게 패키지 파일을 다운로드 하고 설치를 진행하니 금방금방 진행되었다. 일단은 초심자이니 추천해 주는 대로 모든것을 설치했다. DB 설치 과정에서 컴퓨터 이름이 한글로 되어있다면 로그파일 만드는 과정에서 오류가 나는 듯 하다. 만약 패키지로 진행한다면 2번쨰, Type and Networking 과정으로 돌아가서 Show Advanced and Logging Options를 체크하고 진행한.. 2024. 3. 5.
SQL Join Join JOIN 이라는 벽. 생각보다 많이 어려운 연산자였다. 왜냐하면 보통 이런 문법에 JOIN 부분만 때에따라 다른 JOIN을 사용하는 것 같은데, FROM 뒤에 JOIN이 쓰이는것과 정체모를 Y와 같은! 컬럼 이름이 나오는것 때문이었다. 여러가지 찾아보고 쿼리를 작성하면서 깨달았다. join을 사용하는 이유가 서로 다른 테이블을 활용하기 위해서 라는것을... 서로 다른 두 테이블을 사용하려는 것이기 때문에 내가 처음 이해한 이런 느낌의 쿼리문이 아니었던 것이다. 다시한번 정석 join 쿼리문을 보면 select * from x 으로 x테이블을 조회하고, join y 구문으로 y 테이블 조회 후, 뒤에 붙는 on 조건문을 소화해서 출력한다. 이렇게 다시한번 살펴보니 python으로 예시를 들면 인자.. 2024. 3. 5.
sql 문법 정리 2 select column1, column2 order by 1, 2 order by 부분에 column_1, 2 를 적지 않고 select문에 사용한 컬럼의 순서를 적어도 쿼리가 적용된다. select column_1 as arin 이 쿼리문은 약간 python의 pandas 라이브러리의 loc 메소드와 같은 느낌이다. column_1 컬럼을 arin 컬럼으로 반환해 준다. 맘편히 사용해도 된다고 한다. like 연산자 이부분은 봐도 이해가 잘 안되어 GPT의 도움을 받았다. 예시도 깔끔하다. python에서 정규표현식을 쓸 때 + 와 * 쓰는것처럼 쓰면 될 것 같다. DB별로 대소문자를 구분할수도 안할수도 있다고 하니 유의하자. in, and, or, not, not in, is null 이 연산자들은.. 2024. 3. 4.
sql 문법 정리 1 { } < 변수 select {colum1 , colum2 ... } from {table name} select // DB에서 Data 조회에 사용 From // Data 조회할 Table 지정용 Where // Data filtering용 order by { colum [ {a} | {b} ] } // a|b 는 list 슬라이싱 느낌 Insert // 새로운 레코드를 테이블에 추가할 때 사용 ex) insert into {table_name (colums..) } {value} delete // 레코드 삭제 ex) delete from {table_name} where {x, y, conditions}; create // 테이블 생성용 ex) create {table_name( column_name.. 2024. 3. 1.