728x90
반응형

데이터 수집하기


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

  • 수집위치 : data.go.kr
  • 한국전력거래소 시간별 전력수요량 csv 파일 다운로드

 

데이터 불러들이기

🫐 데이터 프레임 변수명 : df

  • df = pd.read_csv(file_path)
    → 이렇게 작성하면 UnicodeDecodeError 에러
    → 인코딩 필요
  • pandas는 기본적으로 utf-8
  • 메모장 저장될 때 기본 utf-8, 공공데이터 저장 ansi
  • euc-kr 한국어 타입으로 인코딩
import pandas as pd
file_path = "./01_data/한국전력거래소_시간별 전력수요량_20211231.csv"
df = pd.read_csv(file_path, encoding= "euc-kr")
df

 

🫐 결측데이터 확인

df.info()

 

- 결측치는 없다

 

 

 

 

 

 

 

 

 

 

 

 

 

🫐 이상치 데이터 확인
- 측정된 데이터 이므로 min을 보는게 적절하다
- min이 0 이하로 떨어지면 이상치

df.describe()


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

df.columns

 

🫐 변수로 받기

col_list = df.columns
col_list

 

데이터 프레임 생성하기

 

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

result_df = pd.DataFrame(columns=["년도", "시간", "전력량"])
result_df


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

  • items() : 튜플로 만들어서 넘겨주면 그 안에 갯수만큼 왼쪽의 변수들이 각각 받아준다.
  • print(ymd, "/", time, "/", value) : 2021-12-31 / 24시 / 70123 까지 추출된다.
  • concat() : 데이터프레임과 데이터프레임을 행단위(axis = 0) 또는 칼럼단위(axis = 1)로 추가할 때 사용
  • ignore_index=True : 행이 추가될 때 행 인덱스 번호를 자동증가 시키기 (default = false)
### 데이터프레임에 데이터 행단위 추가하기
result_df = pd.DataFrame(columns=["년도", "시간", "전력량"])

for index, row in df.iterrows() :
    # print(row)
    ### 년도 데이터
    ymd = row[col_list[0]] # 날짜
    
    ### 시간과 전령량이 합쳐진 데이터
    data = row[col_list[1:]] # 1시 부터 24시 까지. 모든 시간대
    # print(data)

    ### 시간과 전력량을 각각 추출하여 데이터프레임에 넣기
    # - 넣을 값 : 날짜, 시간, 잔력량
    for time, value in data.items() :
        # print(ymd, "/", time, "/", value)

        ### 행단위로 데이터프레임에 추가하기 위해서 추가할 행을 데이터프레임으로 생성
        df_temp = pd.DataFrame({"년도":[ymd], "시간":[time], "전력량":[value]})

        ### 데이터프레임에 행단위로 추가하기
        result_df = pd.concat([result_df, df_temp], axis=0, ignore_index=True)
        
### 최종결과 출력
result_df


       

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

  • 저장할 경로 지정
  • index=False : 인덱스 번호값은 저장하지 않기(default = True)
save_path = "./01_data/new_data.csv"
result_df.to_csv(save_path, index = False)

좌) index = True 우) index = False 

🫐 저장한 데이터 파일 읽어들이기

file_path = "./01_data/new_data.csv"
df = pd.read_csv(file_path)
df

728x90
반응형

+ Recent posts