무냐의 개발일지

[SQL로 시작하는 데이터분석] #1 PostGreSQL 로 CSV파일 IMPORT 해오기! 본문

데싸 추가 독학

[SQL로 시작하는 데이터분석] #1 PostGreSQL 로 CSV파일 IMPORT 해오기!

무냐코드 2024. 1. 13. 17:35

1. sql 활용한 분석

  • structured data : 열과 행에 저장되는 데이터
  • unstructured data : 미리 지정된 구조, 데이터 모델, 데이터 타입이 없음 (문서, 이메일, 웹 페이지 등)

 

  • quantitative data : 특정 수치로 정량화한 데이터 (가격, 양, 방문기간, 숫자 타입 정보 등)
  • qualitative data : 텍스트 형태로 적힌 느낌, 의견 등 수치로 측정할 수 없는 데이터 (설문조사, 소셜미디어 내용 등) - 텍스트 분석, 감성 분석, 자연어 처리 기술을 활용 시 수준 높은 분석 가능

 

  • first-party data : 기관이 직접 수집한 데이터 (로그, 고객 정보 등)
  • second-party data : 서비스 제공 업체에서 수집하는 데이터 (이메일, 소프트웨어 등)
  • third-party data : 업체에 돈 지불/ 정부에서 무료로 공개한 데이터 등

 


2. 데이터 준비

  • 프로파일링 (데이터가 어떻게 저장되어 있는지, 열 이름, 관계 파악) - EDA(Exploratory data analysis와 연관있음- 데이터 분포를 파악하는 데 box plot, histogram 등 유용하다)
    • 출현빈도 확인이 가장 좋다
    • 프로파일링 하려는 필드 : GROUP BY 로 묶는다
    • COUNT() , COUNT DISTINCT()
    • 구간화 (연속값을 프로파일링할 때 유용)CASE WHEN CONDITION1 THEN RETURN_VALUE_1END*오류발생 시, 반환값 데이터 타입을 cast로 변경하여 해결한다 → CAST(1234 as varchar)SELECTWHEN D>100 THEN ‘J’CAS WHEN~~
    • 이런 식으로 설정 CASE문 SELECT안에 여러개 쓸 수 있다 ROUND(값, 소수점자리) → ROUND(sales, 2) 이런 식으로
    • ELSE ‘M’ END AS ‘KJM’,
    • CASE WHEN D≤100 THEN ‘K’
    • 혹은 1234::varchar 으로 해도 바뀐다 타입
    • *하나의 case문 안의 모든 then 반환값은 데이터 타입이 같아야한다 (문자/순자/논리 등)
    • ELSE RETURN_VALUE_2
    • CASE문 활용
    • 윈도우 함수 (여러 행에 걸친 수행을 수행한다)COUNT, SUM, AVG, MIN, MAX ,RANK, FIRST_VALUE 등ORDER BY 는 정렬 기준
    • PARTITION BY 에 해당하는 필드로 구분해 연산 수행
    • function (필드명) over (partition by 필드명 order by 필드명)
    REPLACE(’$19’,’$’,’’) → 19NULL : 처리하는 방법 (CASE WHEN num_orders IS NULL then 0 else num_orders END)
    • UNION ALL : 여러 쿼리 결과를 조합해 하나의 데이터셋으로 만든다 (각 쿼리의 열갯수가 서로 동일해야 한다, 데이터 타입이 호환되어야 한다)‘1980’ as year,FROM country_popSELECT country,year_1990 as population이런 식으로 합친다
    • FROM country_pop
    • ‘1990’ as year,
    • UNION ALL
    • year_1980 as population
    • SELECT country,
  • NULLIF : 같으면 null, 다르면 첫번째 숫자 반환) → nullif(date, ‘2015-03-03') 같으면 null, 다르면 date를 반환한다
  • date : 데이터타입 → cast(—- as date)

3. 시계열 분석

시간순으로 정렬된 데이터 배열 (일일 최고 기온, S&P장 마감 지수, 일일 걸음 수 등)

시계열 분석을 통해 시간에 따른 데이터 변화를 이해하고 정량화 할 수 있다

예측은 특히, 시계열 분석의 주요 목표 중 하나이다

과거의 값으로 미래의 값을 예측하며, 시장상황, 대중트렌드, 제품도입 시기 등

정확한 예측은 어려워도, 계획 수립의 좋은 근거를 얻거나, 인사이트를 얻을 수 있다

  1. 깃허브 페이지에서 csv 파일 다운로드 받기
  2. PgAdmin에서 테이블 만들기!! (아래와 같이 각 열의 데이터타입을 넣어준다)

CREATE TABLE sales_data (

  sales_month DATE, naics_code TEXT, kind_of_business TEXT, reason_for_null TEXT, sales INTEGER

);

 

   3. CSV파일을 임포트 해준다.

COPY sales_data FROM '/path/to/your_csv_file.csv' DELIMITER ',' CSV HEADER NULL AS '\N';

여기서 시간을 ㅜㅜ 엄청 뺐겼는데 그래도 한 번 해보니까 다음부턴 수월할 거 같다!