Home [오픈 소스 기반 데이터 분석] 5강 - 데이터 저장
Post
Cancel

[오픈 소스 기반 데이터 분석] 5강 - 데이터 저장

💡해당 게시글은 방송통신대학교 정재화 교수님의 '오픈 소스 기반 데이터 분석' 강의를 개인 공부 목적으로 메모하였습니다.



학습 개요


  • 데이터 분석을 효과적으로 수행하려면 수집 된 데이터를 일시적으로 처리하는 데 그치지 않고 분석 목적에 맞게 적절한 형식으로 저장하고 재사용할 수 있도록 관리하는 과정이 필요함
  • 다양한 환경과 시스템에서 데이터를 공유하거나 연동하려면 범용적인 저장 형식을 선택하고 데이터의 구조와 특성에 맞게 저장 전략을 수립해야 함
  • 데이터 저장의 개념과 필요성을 이해하고, 파일 기반 저장(CSV, JSON, Excel 등)과 데이터베이스 기반 저장의 방식별 특징과 장단점을 비교 학습함
  • pandas 라이브러리의 핵심 객체인 DataFrame을 생성하고 저장하는 다양한 방법을 실습함
  • 공공 데이터 포털의 API를 활용한 실제 데이터 수집과 변환, 저장 사례를 통해, 외부 데이터와의 연계성과 저장 실습 경험을 통해 데이터 분석의 기본이 되는 수집 및 저장 기술을 체계적으로 학습함



학습 목표


  • Pandas의 DataFrame을 활용하여 수집한 데이터를 처리할 수 있음
  • DataFrame에 저장된 데이터를 다양한 형식으로 저장할 수 있음
  • 데이터 수집 과정에서 발생할 수 있는 문제점을 인식하고 이를 해결하는 방법을 적용할 수 있음



강의록


데이터 저장의 이해

데이터 저장의 필요성

  • 수집한 데이터를 영구적으로 사용할 수 있도록 적절하게 관리하는 과정
    • 저장 방식은 데이터의 크기, 형태, 접근 빈도, 분석 목적 등에 따라 상이
    • 저장 방식 별 특징, 장단점에 대해 구체적 이해 필요
  • 데이터 저장 방식: 파일
    • OS의 파일 시스템 상에서 데이터를 독립적인 단위로 저장
    • 텍스트 파일, CSV 파일, JSON 파일 등 다양한 형태 가능
    • 호환성이 뛰어나고 여러 환경에서 파일 읽기/쓰기 가능
    • 대규모 데이터 처리에 비효율적이고 데이터 무결성과 보안 측면에서 취약

CSV(Comma Separated Version)

  • MS 엑셀, 구글 스프레드시트, 데이터베이스 등 다양한 프로그램과 연동이 용이
  • DataFrame은 CSV와 구조적 유사성으로 CSV 파일로 변환하여 저장하는 방법을 제공

    image.png

JSON(JavaScript Object Notation)

  • 계층 구조를 가진 데이터를 저장하는데 유용
  • json 또는 pandas 라이브러리를 사용하여 데이터를 JSON 파일로 저장 가능

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
      [
        {
          "이름": "홍길동",
          "나이": 25,
          "거주지": "서울",
          "관심사": [
            "프로그래밍",
            "데이터 분석",
            "여행"
          ]
        }
      ]
    

데이터 저장 방식: 데이터베이스

  • 수집한 정보를 효율적으로 보관하고 필요할 때 신속하게 활용하기 위한 체계적인 저장 시스템

    image.png

  • 데이터베이스의 종류

    • RDBMS
      • 데이터를 행과 열로 구성된 테이블 형태로 저장 하고 SQL을 통해 데이터의 CRUD 수행
    • 비RDBMS
      • 문서, 키-값의 쌍, 그래프 등 다양한 유연한 방식의 저장 구조를 지원하고 유사 SQL 및 API를 통해 조작
      • MongoDB, Cassandra, Redis, Elasticsearch 등이 대표적인 비관계형 데이터베이스

Pandas DataFrame의 이해

DataFrame의 구조

  • 2차원 테이블 형태의 자료 구조
    • 표 형태 그 이상으로, 데이터를 효율적으로 처리하고 분석 할 수 있도록 설계

      image.png

DataFrame의 인덱스

| | student_id | database_score | cloudcomputing_score | python_score | watch_rate | | — | — | — | — | — | — | | 0 | 101 | 85 | 78 | 92 | 0.95 | | 1 | 102 | 76 | 82 | 78 | 0.87 | | 2 | 103 | 92 | 95 | 85 | 0.99 | | 3 | 104 | 63 | 70 | 75 | 0.80 | | 4 | 105 | 88 | 84 | 91 | 0.93 |

  • DataFrame 생성 시 정수형 인덱스가 자동 부여
    • set_index() 메소드를 사용하여 문자열, 날짜 등 특정 컬럼을 인덱스로 설정 가능
    • 특정 행을 빠르게 찾고, 데이터를 조작하는 데 사용
  • 데이터는 DataFrame 내부에 NumPy의 배열 형태로 저장
    • 데이터를 효율적으로 저장하고 고속의 수치 연산 수행

DataFrame 활용 예

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import pandas as pd

data = {
    "이름": ["김철수", "이영희", "박민수", "최지훈"],
    "학년": [1, 2, 3, 4],
    "학점": [4.2, 3.8, 4.5, 3.9],
    "학과": ["컴퓨터학", "경영학", "농학", "교육학"],
    "동아리": ["프로그래밍", "독서", "로봇", "봉사"]
}
df = pd.DataFrame(data)

print("index:\\n", df.index)
print("\\ncolumns:\\n", df.columns)
print("\\nvalues:\\n", df.values)
print("\\nrows:\\n", df.values.tolist())

DataFrame 생성 함수

  • 딕셔너리, JSON, CSV, 데이터베이스 등 다양한 형태의 원시 데이터(raw data)를 DataFrame으로 변환

    데이터 유형 메소드명 설명
    딕셔너리 from_dict() 딕셔너리를 변환. 키는 열 이름, 값은 열 데이터로 설정
    시퀀스(리스트, 튜플, 딕셔너리) from_records() 레코드(리스트, 튜플, 딕셔너리)의 시퀀스를 변환
    CSV read_csv() CSV 파일에서 변환
    JSON read_json() JSON 파일/문자열에서 변환
    엑셀 파일 read_excel() 엑셀 파일에서 변환
    HTML from_html() HTML 테이블 데이터를 변환
    클립 보드 from_clipboard() 클립보드(복사한 데이터)에서 변환
    관계형 DB from_sql() SQL 결과 또는 DB 테이블에서 변환

DataFrame의 저장

  • 데이터 수집하고 데이터 분석 후
    • 데이터 분석 결과를 적절한 형태로 저장하여 보관
    • 다른 시스템과 공유하는 과정이 필요
  • DataFrame 객체는 저장된 데이터를 다양한 형식으로 저장하여 분석 결과를 활용하는 데 필요한 메소드 제공
    • to_로 시작하는 저장 메소드
    • DataFrame의 내용을 CSV, JSON, 엑셀, 데이터베이스 등 각기 다른 파일 형식이나 데이터 구조로 변환·저장
    • 파일 형식 별 특징과 장·단점 이해 요구

DataFrame의 저장

메소드 설명
to_csv() CSV 파일로 저장
to_json() JSON 파일 또는 JSON 문자열로 저장
to_excel() 엑셀 파일(.xlsx)로 저장
to_html() HTML 테이블 형식으로 변환
to_sql() 관계형 데이터베이스(SQL 테이블)로 저장
to_clipboard() 클립보드에 복사
to_dict() 파이썬 딕셔너리(dictionary)로 변환
to_string() 문자열로 변환하여 출력
to_markdown() 마크다운(markdown) 형식의 문자열로 변환

개념 정리 실습

  • 공공 데이터 포털(data.go.kr)의 API를 활용하여 대기 오염 정보를 수집하고, 분석 가능한 형태로 가공하는 과정을 실습
    • 공공기관이 보유한 데이터를 제공하는 통합 플랫폼
    • 교통, 환경, 보건, 문화 등 광범위한 분야의 데이터를 쉽게 활용할 수 있도록 개방

    | 단계 | 주요 내용 | 사용 도구 / 방법 | | — | — | — | | 1. API 사용 준비 | - 공공 데이터 포털 가입

    • 대기오염정보 API 신청
    • 인증키 발급 https://www.data.go.kr  
        2. 데이터 수집 및 변환 - API 호출
    • JSON 데이터 수신
    • DataFrame 변환 - requests 라이브러리
    • Pandas 라이브러리    
        3. 데이터 저장 - CSV 형식 저장
    • JSON 형식 저장
    • Excel 형식 저장 DataFrame 메서드

개념 정리 실습-API 키

  • 외부 서비스와의 통신을 위해 제공되는 인증 수단으로, 일반적으로 데이터 수집을 위한 API 호출 시 필요
    • 외부 서버에 접근할 수 있도록 허가 받는 고유한 문자열
  • 주의 사항
    • 외부에 노출되지 않도록 철저히 관리(사용량 제한을 초과)
    • 사용량을 모니터링하고 적절한 수준에서 관리
    • 깃허브나 공개 저장소에 API 키를 업로드하지 않도록 주의



연습 문제


  1. 데이터 저장의 가장 주된 목적은 무엇인가? a. 데이터를 영구적으로 보관하고 재사용하기 위해

  2. 다음 중 파일 형식에 따라 DataFrame을 저장하는 방식이 가장 적절하게 연결된 것은?

    a. Excel 파일 → to_excel()

  3. 다음 중 공공 데이터 포털 API 활용 시 일반적으로 필요한 작업이 아닌 것은?

    a. 이미지 압축 알고리즘 구현

    • 공공 데이터 포털 API 활용 시 일반적으로 필요한 작업
      • 인증키 발급
      • API 요청 주소 확인
      • JSON 응답 데이터 처리



정리 하기


  • 수집한 데이터를 적절한 형태로 저장하여 보관하거나 공유해야 함
  • 데이터의 크기, 형태, 접근 빈도, 분석 목적에 따라 저장 방식이 달라짐
  • 파일은 CSV, JSON, Excel 등 다양한 형식으로 저장할 수 있는 범용적 저장 방식임
  • 파일은 대규모 데이터 처리에 비효율적이고 데이터 무결성과 보안 측면에서 취약함
  • Pandas는 데이터 분석을 위한 핵심 라이브러리로 DataFrame 객체를 제공함
  • DataFrame은 딕셔너리, 리스트, 파일 등 다양한 데이터 소스에서 생성할 수 있음
  • DataFrame은 데이터를 CSV, JSON, Excel 등 다양한 형식으로 저장할 수 있음
Contents

[클라우드 컴퓨팅] 4강 - 클라우드 컴퓨팅 서비스

[클라우드 컴퓨팅] 5강 - 클라우드 이용 모델