자기계발 Diary

오늘의 공부day_6(데이터 분석이란 무엇일까?,SQL)

siron94 2024. 11. 11. 18:56

데이터 분석가는 도구와 프로세스를 사용하여 데이터에서의 의미를 도출하며 데이터 수집, 수정, 조사, 분석, 인사이트 도출, 지식 내재화를 담당합니다.

이 때문에 데이터 분석가의 수요는 매우 높으며 기업 경영과 과학 분야에서 핵심적인 역할을 수행하고 있습니다.

 

  • 데이터란 무엇인가? 데이터의 의미와 정의

데이터는 특정 사실이나 정보의 집합을 의미합니다. 데이터는 의사 결정과 계획 수립뿐만 아니라 스토리 텔링에도 매우 중요합니다.

 

다음과 같이 데이터의 유형을 크게 두 가지로 나누고 있습니다

  • 정성적 데이터
  • 정량적 데이터

 

  • 정성적 데이터

정성적 데이터숫자가 아닌 데이터로, 이미지, 비디오, 텍스트 문서 또는 오디오가 포함됩니다. 이러한 유형의 데이터는 측정하거나 계산할 수 없습니다. 대신, 사람들이 특정한 대상을 어떻게 느끼는지 알려줍니다. '무엇을', '왜', '어떻게'와 같은 질문에 답하는 것이 목적이며, 서술형으로 기록되는 데이터입니다.

 

  • 정량적 데이터

정량적 데이터숫자로 표현되며, 주로 관찰, 설문조사 또는 사용자 인터뷰를 통해 수집합니다. 이러한 유형의 데이터는 셀 수 있고 측정 가능하며 비교할 수 있습니다. '얼마나 많이', '얼마나 자주', '얼마나 오래'와 같은 질문에 답하는 것이 목적입니다. 정량적 데이터를 수집하고, 분석하고, 해석하는 행위를 통계 분석 수행이라고 합니다. 통계 분석은 데이터의 기본 패턴과 추세를 파악하는 데 유용합니다.

 

 

  • 데이터 분석이란 무엇인가?

데이터 분석데이터를 정리하고, 변환하고, 조작하고, 검사함으로써 지저분한 원시 데이터에서 유용한 인사이트를 도출하는 작업입니다. 데이터에서 얻은 인사이트는 차트, 그래프 또는 대시보드와 같이 시각적 형태로 표현됩니다.

이러한 통찰력은 기업이나 조직의 발전에 도움을 줄 수 있습니다.

데이터 분석의 핵심은 트렌드를 식별하고 예측하며, 수집 가능한 모든 데이터로부터 패턴과 상관관계를 파악하여 복잡한 문제에 대한 해결책을 찾는 것입니다.

 

 

  • 데이터 분석은 왜 중요할까?

데이터는 지식과 같습니다. 이는 데이터 분석이 모든 기업에 필수적이라는 것을 의미합니다. 관리, 회계, 물류, 마케팅, 디자인, 엔지니어링 등 모든 분야에서 매우 유용하게 활용할 수 있습니다.

 

  • 데이터 분석을 통한 고객 타겟팅 개선

데이터를 분석하여 경쟁업체를 이해하고, 제품 및 서비스를 현재 시장의 요구사항에 맞출 수 있습니다. 또한, 제품과 서비스에 가장 적합한 청중과 인구 통계를 도출하는 데 도움을 줍니다. 이를 통해 효과적인 가격 전략을 세우고 제품과 서비스의 수익성을 확보할 수 있습니다. 그리고 고객의 요구에 맞춘 솔루션을 제공할 수 있습니다. 기본적으로 적절한 정보와 도구를 사용하면 제품이나 서비스의 가치와 품질을 파악할 수 있습니다. 또한 제품이나 서비스가 고객의 문제를 해결하는 데 도움이 되는지 확신할 수 있습니다. 이는 결국 비용 절감과 시간 절약으로 이어지기 때문에 제품 개발 단계에서 특히 중요합니다.

 

  • 데이터 분석은 성공과 성과를 측정한다

데이터를 분석하면 여러분의 제품과 서비스가 경쟁사와 비교하여 시장에서 얼마나 경쟁력이 있는지 측정할 수 있습니다.

먼저, 과거에 가장 큰 성공을 거두고 원하는 결과를 얻은 영역이 어디인지, 즉 나의 강점을 파악할 수 있습니다.

그리고 어려움에 부닥친 취약한 영역을 찾아낼 수 있습니다. 따라서 사전에 적절한 조치를 하고 문제가 발생하지 않도록 예방할 수 있습니다. 또한 여러 영역의 성과 달성도를 한눈에 들어오는 표로 만들어 목표를 설정하고 더 나은 기회를 찾아낼 수 있습니다.

 

 

  • 데이터 분석 프로세스 개요

 

  • 1단계: 답변이 필요한 질문 인식 및 식별

데이터 분석 프로세스의 첫 번째 단계는 명확한 목표를 설정하는 것입니다. 많은 양의 데이터를 수집하기 전에 실제로 데이터 분석을 수행하는 이유를 먼저 생각하는 것이 중요합니다.

  • 여러분이 해결하려는 문제는 무엇인가요?
  • 데이터 분석의 목적은 무엇인가요?
  • 이를 통해 무엇을 하려고 하나요?
  • 무엇을 달성하고 싶나요?
  • 최종 목표는 무엇인가요?
  • 분석을 통해 무엇을 얻고자 하나요?
  • 데이터 분석이 왜 필요한가요?

이 단계에서는 비즈니스 목표에 대한 이해도와 인사이트가 가장 중요합니다. 답을 구하고자 하는 질문을 도출하고 장단기 비즈니스 목표를 정의하는 것으로 시작하세요. 분석에 무엇이 필요한지, 어떤 종류의 데이터가 필요한지, 어떤 데이터를 추적하고 측정하고 싶은지 파악하고, 해결하고자 하는 문제가 무엇인지 생각해 보세요.

 

 

 

  • 2단계: 원시 데이터 수집

다음 단계는 수집하려는 데이터 유형이 정성적(비수치적, 설명적)인지 정량적(숫자적)인지 분류하는 것입니다.

다음과 같은 방법으로 관련성 있고 적절한 데이터를 수집할 수 있습니다.

  • 사용자 그룹, 설문조사, 양식, 설문지, 내부 문서, 기업에서 이미 수행한 인터뷰 결과
  • 고객 리뷰와 고객 만족도에 대한 피드백
  • 거래 및 구매 내역 기록, 비즈니스 재무 또는 마케팅 부서에서 만든 자료와 및 재무 수치 보고서
  • 회사에서 사용하는 CRM(고객 관계 관리 시스템)
  • 웹사이트 및 소셜 미디어 활동과 월간 방문자를 현황 모니터링
  • 소셜 미디어 고객 참여를 모니터링
  • 자주 검색되는 키워드와 검색어 추적하기
  • 사람들이 어떤 광고가 자주 클릭하는지 확인하기
  • 고객 전환율 확인하기
  • 이메일 오픈율을 확인하기
  • 타사 서비스를 사용하여 회사의 데이터를 경쟁업체와 비교하기
  • 데이터베이스 쿼리
  • 공개 데이터 세트를 웹 스크래핑을 통해 수집. 웹 스크래핑은 웹사이트에서 데이터와 콘텐츠를 추출하고 수집하는 행위입니다.

 

 

 

  • 3단계: 데이터 정제

하나 이상의 소스에서 데이터를 수집하고 나면, 해당 데이터의 구조를 이해하는 것이 중요합니다. 필요한 데이터를 모두 수집했는지, 중요한 데이터가 누락되었는지 확인하는 것도 중요합니다. 다양한 소스에서 데이터를 수집했다면 데이터가 구조화되지 않았을 수 있습니다. 구조화되지 않은 원시 데이터는 사용할 수 없습니다. 그리고 모든 데이터가 반드시 좋은 데이터는 아닙니다. 그래서 데이터는 정제되어야 합니다. 즉, 오류를 수정하고 데이터를 가다듬고 정렬해야 합니다. 이는 다음과 같은 작업을 포함합니다.

 

  • 아웃라이어(비정상적으로 크거나 작은 값) 찾기
  • 오타 수정
  • 데이터 오류 제거
  • 중복 데이터 제거
  • 형식의 불일치 수정
  • 누락된 값을 확인하거나 잘못된 데이터 수정
  • 일관성이 떨어지는 데이터 수정
  • 관련성이 없는 데이터와 분석에 유용하지 않거나 필요하지 않은 데이터 제거하기

이 단계를 통해 데이터의 품질을 높일 수 있으며, 정확하고 적합한 데이터에 초점을 맞추어 분석을 수행할 수 있습니다. 최종 분석의 정확도는 본 단 계에서 좌우됩니다.

 

 

 

  • 4단계: 데이터 분석

다음 단계는 1단계에서 정의했던 질문과 목표에 따라 데이터를 분석하는 것입니다. 비즈니스의 목표와 방향성에 따라 네 가지 다른 데이터 분석 기술이 사용됩니다.

 

  • 기술적 분석(Descriptive Analysis): 분석 프로세스의 기본이자 가장 첫 단계입니다. 수집된 데이터를 요약하며, "무슨 일이 일어났지?"라는 질문에 답하는 것을 목표로 합니다. 데이터의 핵심 포인트를 살피고, 이미 벌어진 일에 집중합니다.
  • 진단적 분석(Diagnostic Analysis): 수집된 데이터를 사용하여 당면한 문제의 원인을 이해하고 패턴을 찾아내는 단계입니다. "왜 이런 일이 일어났지?"라는 질문에 답하는 것을 목표로 합니다.
  • 예측 분석(Predictive Analysis): 미래 트렌드를 감지하고 예측하는 단계이며 기업의 미래 성장에 중요한 인사이트를 줍니다. “앞으로 어떤 일이 벌어질까?”라는 질문에 답하는 것을 목표로 합니다.
  • 처방적 분석(Prescriptive Analysis): 위 세 단계에서 얻은 모든 인사이트를 하나로 모아 앞으로 다가올 일에 대한 대비책을 세우고 실행 가능한 계획을 수립하는 단계입니다. "무엇을 해야 할까?"라는 질문에 답하는 것을 목표로 합니다.

 

 

 

  • 5단계: 결과 공유

마지막 단계는 결과를 해석하는 것입니다. 이 단계에서는 일반적으로 데이터 시각화 도구를 사용하여 보고서, 차트, 그래프, 대화형 대시보드를 생성하게 됩니다. 이 모든 것은 이해 관계자와 회사의 경영진 및 의사 결정자에게 여러분이 분석한 내용과 결과를 효과적으로 공유하는 데 도움을 줍니다. 데이터를 취합하고 내러티브를 만들어 명확하고 직관적이며 간결하게 결과를 제시해야 합니다.

 

 

 

 

  • 데이터 분석에 필요한 기술은 무엇일까?

 

  • 수학과 통계 대한 좋은 이해

데이터 분석가에게 필요한 수학 지식은 어떤 일을 하느냐에 좌우됩니다. 최소한 수학의 기초를 이해하고 기본적인 지식이 있다면 큰 도움이 됩니다. 데이터 분석가는 데이터를 수집하고 분석하며, 패턴을 파악하고, 데이터에서 결론을 도출하기 위해 통계와 확률에 대한 충분한 지식이 필요합니다.

 

 

  • SQL 및 관계형 데이터베이스에 대한 지식

데이터 분석가는 관계형 데이터베이스와 상호 작용하며 데이터를 추출하는 방법을 알아야 합니다. 데이터베이스는 데이터를 전자 저장소에 저장해 놓은 것이며, 여기에서 원하는 데이터를 쉽게 검색할 수 있습니다.

관계형 데이터베이스는 일정한 형식을 가지고 있으며, 저장된 모든 데이터는 사전에 정의한 관계를 통해 연결됩니다.

SQL은 Structured Query Language의 약자로 관계형 데이터베이스를 조회하고 상호 작용하는 데 사용되는 언어입니다.

 

 

  • 프로그래밍 언어 지식

데이터 분석가가 프로그래밍 언어를 다룬다면 데이터베이스에서 조회한 데이터의 구조를 바꾸고 조작할 수 있습니다. 데이터 분석 분야에서 가장 많이 사용되는 대표적인 두 언어는 파이썬과 R입니다.

 

파이썬은 범용 프로그래밍 언어이며, 영어와 유사한 구문으로 초보자도 쉽게 시작할 수 있습니다. 또한, 데이터 분석에 가장 많이 사용되는 언어 중 하나입니다.

R은 통계 및 데이터 분석에 사용되는 언어입니다. 파이썬처럼 초보자에게 친절하지 않습니다.

 

 

  • 데이터 시각화 도구에 대한 지식

데이터 시각화는 데이터를 시각적으로 해석하고 표현하는 것입니다. 시각화를 사용하면 그래프, 차트, 대화형 대시보드 등을 생성하고 다른 팀 구성원과 중요한 이해 관계자에게 쉽게 공유할 수 있습니다. 데이터 시각화 도구는 기본적으로 데이터로 이야기를 전달하고 의사 결정을 내리는 데 필요한 작업물을 만드는 데 사용됩니다. 가장 널리 사용되는 데이터 시각화 도구 중 하나는 타블로(Tableau)입니다.

 

 

  • 엑셀 지식

엑셀은 데이터 분석에 사용되는 가장 필수적인 도구 중 하나입니다. 데이터를 저장하고, 구조와 형식을 갖추며, 계산을 수행하고, 데이터를 요약하고, 트렌드를 파악하고, 데이터를 카테고리로 나누고, 보고서를 만드는 데 사용됩니다. 

 

 

 


SQL

  • 여러 번의 연산을 한 번의 SQL 문으로 수행하기 (Subquery)

서브 쿼리를 사용하면 복잡한 연산을 간소화하여 코드를 보기 쉽고 직관적으로 정리할 수 있습니다.

서브 쿼리 문법은 한 번의 연산을 활용하여 다시 사용할 수 있는 문법입니다.

 

 

  • 1. 서브 쿼리가 필요한 경우
    • 여러 번의 연산을 수행해야 할 때
    • 조건문에 연산 결과를 사용해야 할 때
    • 조건에 Query 결과를 사용하고 싶을 때

 

  • 2. 서브 쿼리문의 기본 구조

Sub라는 명칭에서 알 수 있듯이, Query 안에 sub로 들어간 구문이라고 생각해 주시면 됩니다.

 

  • 서브 쿼리는 메인 쿼리 안에 있는 서브로 들어간 구문으로, 쿼리 안에서 한 번 SELECT 문으로 조회 후, 그 결과를 다시 메인 쿼리 문에서 활용할 수 있습니다.
  • 서브 쿼리 문은 괄호 안에서 실행되며, 결과를 다시 활용하고 싶을 때 사용합니다.

 

생각할 순서

  • select 기본문
  • 가져올 칼럼 적기
  • subquery 문으로 추가
select column1, special_column
from
    ( /* subquery */
    select column1, column2 special_column
    from table1
    ) a
select column1, column2
from table1
where column1 = (select col1 from table2)

 

[실습] 주문 테이블에서 주문 번호, 음식점명, 음식 주문시간이 25분보다 초과한 시간을 가져오기

select order_id, restaurant_name, if(over_time>=0, over_time, 0) over_time
from 
(
select order_id, restaurant_name, food_preparation_time-25 over_time
from food_orders
) a

 

 

  • User Segmentation와 조건별 수수료를 Subquery로 결합해 보기
  • [실습] 음식점의 평균 단가별 segmentation을 진행하고, 그룹에 따라 수수료 연산하기

(수수료 구간

~5000원 미만 0.05%

~20000원 미만 1%
~30000원 미만 2%
30000원 초과 3%)

select restaurant_name,
       price_per_plate*ratio_of_add "수수료"
from 
(
select restaurant_name,
       case when price_per_plate<5000 then 0.005
                when price_per_plate between 5000 and 19999 then 0.01
                when price_per_plate between 20000 and 29999 then 0.02
                else 0.03 end ratio_of_add,
       price_per_plate
from 
(
select restaurant_name, avg(price/quantity) price_per_plate
from food_orders
group by 1
) a
) b

 

 

  • 복잡한 연산을 Subquery로 수행하기

[실습] 음식점의 총 주문수량과 주문 금액을 연산하고, 주문 수량을 기반으로 수수료 할인율 구하기

(할인조건 수량이 5개 이하 → 10% 수량이 15개 초과, 총 주문금액이 300000 이상 → 0.5% 이 외에는 일괄 1%)

select restaurant_name,
       case when sum_of_quantity<=5 then 0.1
                when sum_of_quantity>15 and sum_of_price>=300000 then 0.005
                else 0.01 end ratio_of_add
from 
(
select restaurant_name,
       sum(quantity) sum_of_quantity,
       sum(price) sum_of_price
from food_orders
group by 1
) a

 

 

  • 필요한 데이터가 서로 다른 테이블에 있을 때 조회하기 (JOIN)
JOIN 은 공통 컬럼을 기준으로 두 테이블을 합쳐서, 각각 테이블에서 필요한 데이터를 조회할 수 있도록 묶음을 만드는 기능입니다. 엑셀에서의 VLOOKUP 기능과 유사합니다.
데이터 테이블에 공통되는 컬럼 하나를 기준으로 양쪽 데이터를 묶어주며, LEFT JOIN , INNER JOIN 등 여러 가지 방법이 있습니다.

 

  • LEFT JOIN은 A 테이블의 모든 값이 나오고, B 테이블과 공통된 값만 가져옵니다.
  • INNER JOIN은 A와 B 테이블에서 공통된 값만 가져옵니다.
  • 테이블에도 별명을 지어주면 어디든 적용이 가능합니다.
  • 공통컬럼은 묶어주기 위한 ‘공통 값’ 이기 때문에 두 테이블의 컬럼명은 달라도 괜찮습니다.
  • 특정 컬럼만 가져오려면 가져올 데이터가 저장된 테이블을 명시해야 한다.

JOIN의 기본 구조

-- LEFT JOIN
select 조회 할 컬럼
from 테이블1 a left join 테이블2 b on a.공통컬럼명=b.공통컬럼명


-- INNER JOIN
select 조회 할 컬럼
from 테이블1 a inner join 테이블2 b on a.공통컬럼명=b.공통컬럼명

 

[실습] JOIN을 이용하여 두 개의 테이블에서 데이터를 조회해 보기

주문 테이블과 고객 테이블을 cusomer_id를 기준으로 left join으로 묶어보기 (조회 컬럼 : order_id, customer_id, restaurant_name, price, name, age, gender)

select a.order_id,
           a.customer_id,
           a.restaurant_name,
           a.price,
           b.name,
           b.age,
           b.gender
from food_orders a left join customers b on a.customer_id=b.customer_id

 

 

 


데이터 분석가에게 데이터가 얼마나 중요한지 알 수 있었고 특히 데이터가 인간과 이렇게 밀접할 수도 있구나라고 생각했다

SQL공부는 이너조인 레프트조인에 대해서 배웠고 테이블에도 별명을 지을 수 있는지 처음 알았다.