전체 글 42

신한카드 데이터 분석 1: DB 및 테이블 생성 with DataGrip

이번 포스트에서는, 사용할 데이터 파악 DB 생성 테이블 생성 (두 가지 방식) 1. 사용할 데이터 분석에 사용될 데이터들의 일부는 아래와 같으며, 모든 테이블은 500개의 row로 구성되어 있다. 이 데이터들을 전처리하기 위해 DataGrip으로 불러와 주는 단계가 필요하다. 1) 내국인 일자별 시간대별 ⏱️ 2) 내국인 성별 연령대별 👫 3) 내국인 집계구 유입지별 🌏 4) 내국인 업종 코드 🏷️ 5) 외국인 일자별 시간대별 ⏱️ 6) 외국인 집계구 국가별 🌏 7) 외국인 업종 코드 🏷️ 2. DB 생성하기 테이블을 불러오기 전에 DB를 생성할 필요가 있다. SHOW DATABASES; 코드를 실행해 주면 아래와 같이 DB 리스트가 출력된다. DB를 새로 만들고 싶다면 👉🏻 CREATE DATABAS..

Toy Projects 2024.03.19

신한카드 데이터 분석 0: 준비 단계

프로젝트를 시작하기 전, 지금까지 Python, SQL을 배워보았으니 이 기술들을 활용하여 데이터를 분석하는 경험이 필요하다고 생각 데이터 분석을 통해 몰랐던 부분을 알게 되거나, 이미 예상하고 있었던 경향을 확인함으로써 또 다른 공부를 하기 위해 시작 내가 생각하는 데이터 분석 과정 데이터 수집 데이터 전처리 데이터 분석 분석 결과 도출 데이터 시각화 문제 해결 및 함의점 제공 내가 사용하고자 하는 분석 스킬과 툴 💻 데이터 전처리 및 분석 - MySQL, Python 📊 데이터 시각화 - Tableau 분석 툴은 DateGrip과 Pycharm 사용할 예정 프로젝트 주제 평소 상품 구매 데이터 예제를 가지고 공부했기에 '사람들의 실제 소비 내역을 볼 수 있는' 데이터를 분석하고 싶다는 생각을 했다. ..

Toy Projects 2024.03.15

[학위논문] 데이터 분석 결과가 보여주는 결론 및 함의점

본 시리즈는 제 석사학위논문을 바탕으로 합니다. Python으로 통계 분석을 하고 사후검정을 하는 것도 중요하지만 도출된 결과에서 의미를 찾는 과정 또한 중요하다. 1. 연구의 결론 본 연구는, 인공지능 기술이 다양한 분야로 확산되고 있음을 확인 향후 인간의 인지 과정 즉, 상대방에게 진심을 전달하는 과정에도 인공지능 개입이 일어나는 상황을 고찰해보는 것에서부터 출발 인공지능과 상호작용이 일상화된 사회에서 '인간의 주체성과 책임감을 잃지 않으면서 이용성을 확대할 수 있는 방안'을 찾고자 함 본 연구의 주요 결과는 다음과 같다. ☝🏻 결과물이 실패일 때 참여수준이 높은 집단에서 행위주체감과 내적 귀인이 강하게 형성된다. 결과물이 이용자 의도와 달리 실패한 상황에도 이용자 참여수준이 높으면 행위주체감과 내적..

Skills/Python 2024.03.14

프로그래머스: 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기 - 시도 및 해결 과정 (MySQL)

1. 문제 2. 문제 풀기 전에, HR_DEPARTMENT 👉🏻 X HR_EMPLOYEES 👉🏻 사번, 사원명, 보너스 조회 HR_GRADE 👉🏻 평가 등급 조회 평가 점수별 등급과 성과금 정보에 따른 값 계산하기 사번 ASC 3. 테이블 HR_DEPARTMENT AS DEPT HR_EMPLOYEES AS EMP HR_GRADE AS GR 4. 나의 시도 시도 1) 테이블 DEPT은 조회할 컬럼이 없으니 제외하고, 테이블 EMP와 테이블 GR은 ‘사번’이라는 동일한 컬럼을 가지고 있으니 INNER JOIN을 해준다. SELECT FROM HR_EMPLOYEES AS EMP INNER JOIN HR_GRADE AS GR ON EMP.EMP_NO = GR.EMP_NO 시도 2) 아래는 ‘평가 점수별 등급과 ..

Skills/SQL 2024.03.13

프로그래머스: 부서별 평균 연봉 조회하기 (MySQL)

1. 문제 2. 문제 풀기 전에, HR_DEPARTMENT 👉🏻 부서 ID, 영문 부서명 조회 HR_EMPLOYEES 👉🏻 평균 연봉 조회 평균 연봉은 소수점 첫째 자리에서 반올림하기 부서별 평균 연봉 DESC 3. 테이블 HR_DEPARTMENT AS DEPT HR_EMPLOYEES AS EMP 4. 풀이 과정 1단계) 두 테이블을 연결하여 부서별 평균 연봉을 알아보아야 하니 부서 ID를 기준으로 INNER JOIN을 적용해 줍니다. SELECT FROM HR_DEPARTMENT AS DEPT INNER JOIN HR_EMPLOYEES AS EMP ON DEPT.DEPT_ID = EMP.DEPT_ID 2단계) 부서 ID, 영문 부서명, 평균 연봉을 조회하는 SELECT문을 작성해 준다. AVG() 함수..

Skills/SQL 2024.03.13

프로그래머스: 업그레이드 할 수 없는 아이템 구하기 (MySQL)

1. 문제 2. 문제 풀기 전 생각해 볼 것 ITEM_INFO 👉🏻 아이템 ID, 아이템 명, 희귀도 조회 ITEM_TREE 👉🏻 (서브 쿼리를 이용할 때) PARENT 아이템 ID 조회 더 이상 업그레이드 할 수 없는 아이템이어야 함 아이템 ID DESC 3. 테이블 ITEM_INFO ITEM_TREE 4. 풀이 과정 (LEFT JOIN 사용) 1단계) '두 테이블을 이용하여 더 이상 업그레이드 할 수 없는 아이템'을 조회하기 위해, 교집합을 보여주는 INNER JOIN 말고 다른 것을 생각해 볼 필요가 있다. ITEM_INFO 테이블을 기준으로 아이템들의 업그레이드 전을 보아야 하니 LEFT JOIN을 해 준다. 아래의 출력값을 보면 업그레이드가 가능한 아이템 리스트를 볼 수 있는데, 여기서 아이템 ..

Skills/SQL 2024.03.13

프로그래머스: 노선별 평균 역 사이 거리 조회하기 (MySQL)

1. 문제 2. 문제 풀기 전에, SUBWAY_DISTANCE 👉🏻 노선, 총 누계 거리, 평균 역 사이 거리 조회 1) 노선 별 그룹화 2) 총 누계 거리는 소수 둘째 자리에서, 평균 역 사이 거리는 소수 셋째 자리에서 반올림 3) ‘km’ 단위 붙이기 총 누계 거리 DESC 문자열을 합체 및 연결해 주는 CONCAT 함수 생각하기 3. 테이블 SUBWAY_DISTANCE 4. 풀이 과정 1단계) 총 누계 거리는 역 사이의 거리의 총합을 의미하는데, SUM() 함수를 이용하여 총합을 계산해 준다. 그리고 AVG() 함수를 이용하여 평균 역 사이의 거리를 계산해 준다. 계산한 두 값은 ROUND() 함수를 이용하여 소수 둘째 자리와 소수 셋째 자리에서 반올림 해준다. SELECT ROUTE, ROUND(..

Skills/SQL 2024.03.12

프로그래머스: 연도별 평균 미세먼지 농도 조회하기 (MySQL)

1. 문제 2. 문제 풀기 전 생각해 볼 것 AIR_POLLUTION 👉🏻 연도, 평균 미세먼지 오염도, 초미세먼지 오염도 조회 1) 수원 지역으로 한정하기 2) 연도 별 그룹화하기 3) 평균 미세먼지, 초미세먼지 오염도는 소수 셋째 자리에서 반올림 YEAR ASC 값을 반올림하여 출력해 주는 ROUND 함수의 개념과 작성 방식 생각하기 3. 테이블 AIR_POLLUTION 4. 풀이 과정 1단계) 특정 지역으로 한정해서 조회를 해야 하니 WHERE절을 통해 ‘수원’만 조회하는 조건을 추가해 준다. SELECT FROM AIR_POLLUTION WHERE LOCATION2 = '수원' 2단계) YEAR()함수를 이용하여 컬럼 YM에서 연도만 추출해 준다. 그리고 AVG() 함수를 통해 미세먼지와 초미세먼..

Skills/SQL 2024.03.12

프로그래머스: 조건에 맞는 사원 정보 조회하기 (MySQL)

1. 문제 2. 문제 풀기 전에, HR_DEPARTMENT 👉🏻 X HR_EMPLOYEES 👉🏻 사번, 성명, 직책, 이메일 HR_GRADE 👉🏻 점수 합계 상, 하반기 접수 합계가 가장 높은 사원 정보 조회하기 점수 합계 DESC (=점수 높은 순으로) 3. 테이블 HR_DEPARTMENT AS DEPT HR_EMPLOYEES AS EMP HR_GRADE AS GR 4. 풀이 과정 1단계) 테이블 DEPT와 테이블 EMP는 DEPT_ID라는 공통 컬럼을 가지고 있고, 테이블EMP와 테이블 GR은 EMP_NO라는 공통 컬럼을 가지고 있다. 이 세 테이블을 연결하여 쿼리문을 작성해야 하니 INNER JOIN을 해준다. SELECT FROM HR_DEPARTMENT AS DEPT INNER JOIN HR_E..

Skills/SQL 2024.03.09

프로그래머스: ROOT 아이템 구하기 (MySQL)

1. 문제 2. 문제 풀기 전에, ITEM_INFO 👉🏻 아이템 ID, 아이템 명 조회 ITEM_TREE 👉🏻 X ROOT 아이템 조회하기 아이템 ID ASC 3. 테이블 ITEM_INFO AS INFO ITEM_TREE AS TREE 4. 풀이 과정 1단계) 테이블 INFO와 테이블 TREE가 공통으로 가지고 있는 컬럼인 ITEM_ID를 이용하여 INNER JOIN을 해준다. SELECT FROM ITEM_INFO AS INFO INNER JOIN ITEM_TREE AS TREE ON INFO.ITEM_ID = TREE.ITEM_ID 2단계) ‘PARENT 아이템이 없는 아이템을 ROOT 아이템’이기 때문에, IS NULL을 이용하여 PARENT_ITEM_ID 컬럼에서 NULL 값을 조회하는 WHERE..

Skills/SQL 2024.03.09