본문 바로가기

Back-End/데이터베이스

[DB] 데이터 수집하기

~ 목차 ~

 

 
 

데이터 수집하기

 

1. 한국전력거래소 시간별 전력수요량 데이터 수집

2. 데이터 불러오기

    - 결측치 찾기

    - 이상치 찾기

3. 데이터 정제화

    - 컬럼명 추출

    - 빈 데이터프레임(1) 생성

    - 데이터프레임(2)에 데이터 행단위 추가하기
    - 데이터프레임(1)+(2) 합치기

4. 정제된 데이터 파일 저장하기

 

 

 


 

데이터 수집

   한국전력거래소 시간별 전력수요량 데이터 수집  🐾

 - 수집위치 : data.go.kr
 - 다운로드 : 한국전력거래소_시간별 전력수요량 (파일데이터 or 오픈API)
 - CSV : 파일데이터로 다운로드, JSON/XML : 오픈 API
 - 메타데이터 : 컬럼에 대한 타입과 데이터 형식을 알려주는 문서
 - 어떻게 관리하면 데이터를 편하게 사용할 수 있을까? 
     25개 컬럼?(24시간 데이터니까) → 너무 많음
     성격에 맞는 데이터를 정하는게 좋음(열로 관리) : 날짜, 시간대, 전력량

 

 

데이터 불러오기

  데이터 불러오기 🐾

- 데이터프레임 변수명: df
  import pandas as pd
  file_path = "./01_data/한국전력거래소_시간별 전력수요량_20211231.csv"

  df = pd.read_csv(file_path, encoding = 'euc-kr')

UnicodeDecodeError  인코딩하기(encoding)

    pandas는 기본으로 utf-8로 읽음
    한국 전용 타입 : euc-kr
    저장된 걸 바로 넘기는 형식 : ANSI (euc-kr로 읽힘)

df 실행

1. 결측치 찾기 

  - RangeIndex 개수와 non_null 개수 비교해보고 같으면 결측치가 없는 것!
  df.info()

info함수

 

2. 이상치 데이터 찾기 

  - min을 보면 됨 -> 0또는 마이너스값 있는지 체크
  df.describe()

describe함수

 

 

데이터 정제화

  컬럼명의 시간을 데이터화하기 위하여 컬럼명 추출하기 🐾

   - 컬럼명 추출하기(.columns - 함수아님! 객체임!)
   col_list = df.columns
   print( col_list[0] )
   print( col_list[1:] )

 

df.columns

 

  3개의 열(날짜, 시간, 전력량)을 가지는 데이터 프레임 생성하기 🐾

   - 깨끗한 데이터프레임 생성
   result_df = pd.DataFrame(columns=["날짜", "시간", "전력량"])
   result_df

빈 데이터프레임(1) 생성

  데이터프레임에 데이터 행단위 추가하기 🐾

  - 빈 데이터프레임(1) 생성하기
  result_df = pd.DataFrame(columns=["날짜", "시간", "전력량"])


  - 행 한줄 가져오는 반복문 생성하기
for index, row in df.iterrows():
 
    ### 년도 데이터
    ymd = row[col_list[0]]
    #print(ymd)

    ### 시간과 전력량 데이터
    data = row[col_list[1:]]
    #print(data)

  - 시간과 전력량을 각각 추출하여 데이터프레임에 넣기
    # 넣을 값 : 날짜, 시간, 전력량
    # items : 한 열을 튜플로 바꿔서 왼쪽으로 넘겨줌
    for time,value in data.items():
        #print(ymd , "/", time, "/", value)
        
        ### 행 단위로 데이터프레임에 추가하기 위해, 추가할 행 데이터프레임 생성
        df_temp = pd.DataFrame({"날짜":[ymd], "시간":[time], "전력량":[value]})

        ### 데이터프레임에 행단위로 추가하기
        # concat() : 데이터프레임과 데이터프레임을 행단위(axis=0) 또는 컬럼단위(axis=1)로 추가할 때 사용
        # ignore_index=True : 행이 추가될 때 행 인덱스 번호를 자동증가 시키기
        # ignore_index의 기본값 : False
        
        result_df = pd.concat([result_df, df_temp], axis=0, ignore_index=True)

# 최종 결과 출력하기
result_df 

최종 결과 출력

 

정제된 데이터 파일 저장하기

  데이터 파일 저장하기 🐾

   1. 저장할 경로 지정
       save_path = "./01_data/new_data.csv"

    2. index=False : 데이터프레임 생성시 자동생성된 index값을 없애 주는 코드 ,
                               인덱스 번호값은 저장하지 않기(기본값 True)
       result_df.to_csv(save_path, index = False)

파일 생성

 

728x90