빅데이터 분석기사[python]/데이터 분석

기본적 데이터 분석을 위한 기초 SQL문

sunning 2024. 12. 22. 22:07
728x90

1. 데이터 확인 및 구조 탐색

1.1 테이블의 구조 확인

  • 테이블의 컬럼 이름과 데이터 타입 확인.
 
DESCRIBE table_name;
SHOW COLUMNS FROM table_name;

1.2 데이터 미리보기

  • 테이블의 첫 몇 행을 확인하여 데이터 구조를 이해.
 
SELECT * FROM table_name LIMIT 10;

2. 데이터 요약 및 기본 통계

2.1 행 개수 확인

  • 데이터의 전체 크기(행 수)를 확인
SELECT COUNT(*) AS total_rows FROM table_name;

2.2 고유 값 개수 확인

  • 특정 컬럼의 고유 값 개수 계산
 
SELECT COUNT(DISTINCT column_name) AS unique_values FROM table_name;

2.3 특정 컬럼의 최소, 최대, 평균, 합계 계산

  • 기본적인 통계치를 계산.
 
SELECT MIN(column_name) AS min_value,
MAX(column_name) AS max_value,
AVG(column_name) AS average_value,
SUM(column_name) AS total_sum
FROM table_name;

2.4 Null 값 확인

  • 특정 컬럼에서 Null 값의 개수 확인.
 
SELECT COUNT(*) AS null_count FROM table_name WHERE column_name IS NULL;

3. 데이터 분포 확인

3.1 그룹별 집계

  • 특정 컬럼별 데이터 분포를 확인
 
SELECT column_name, COUNT(*) AS count FROM table_name GROUP BY column_name ORDER BY count DESC;

3.2 값의 빈도수 확인

  • 특정 값의 빈도 계산
 
SELECT column_name, COUNT(*) AS frequency FROM table_name GROUP BY column_name ORDER BY frequency DESC;

3.3 값 구간화 및 그룹화

  • 예: 나이(age)를 기준으로 구간을 나누어 빈도를 확인
 
SELECT CASE WHEN age BETWEEN 0 AND 18 THEN '0-18'
            WHEN age BETWEEN 19 AND 35 THEN '19-35'
            WHEN age BETWEEN 36 AND 50 THEN '36-50'
            ELSE '50+'
       END AS age_group,
       COUNT(*) AS count
FROM table_name
GROUP BY age_group
ORDER BY count DESC;

 


4. 데이터 관계 탐색

4.1 두 컬럼 간 상관 관계 탐색

  • 그룹화하여 두 컬럼의 관계를 요약
SELECT column1, column2, COUNT(*) AS count FROM table_name GROUP BY column1, column2 ORDER BY count DESC;

4.2 조인(Join)을 통한 관계 분석

  • 두 테이블을 연결해 관계를 확인
SELECT a.column1, b.column2 FROM table1 a JOIN table2 b ON a.common_column = b.common_column WHERE a.column1 > 10;

5. 이상치 및 데이터 품질 확인

5.1 특정 조건에서 이상치 확인

  • 값이 너무 크거나 작은 경우 확인
SELECT * FROM table_name WHERE column_name > 1000 OR column_name < 0;

5.2 Null 값 비율 계산

  • 컬럼별 Null 비율을 계산
SELECT column_name, COUNT(*) AS total_count, SUM(CASE WHEN column_name IS NULL THEN 1 ELSE 0 END) AS null_count, (SUM(CASE WHEN column_name IS NULL THEN 1 ELSE 0 END) * 100.0 / COUNT(*)) AS null_percentage FROM table_name;

6. 데이터 정렬 및 필터링

6.1 특정 조건으로 필터링

  • 조건에 맞는 데이터를 추출
SELECT * FROM table_name WHERE column_name = 'specific_value';

6.2 정렬된 데이터 확인

  • 특정 컬럼 기준으로 정렬
SELECT * FROM table_name ORDER BY column_name DESC LIMIT 10;

7. 파생 데이터 생성

7.1 계산된 컬럼 추가

  • 새로운 계산된 필드를 생성
SELECT column1, column2, (column1 * column2) AS calculated_field FROM table_name;

7.2 조건에 따른 새로운 컬럼 생성

  • 특정 조건을 만족하는 새로운 필드를 생성
SELECT column_name, CASE WHEN column_name > 100 THEN 'High' ELSE 'Low' END AS category FROM table_name;
728x90