코딩헤딩

[데이터 분석] 데이터 수집하기 본문

데이터

[데이터 분석] 데이터 수집하기

멈머이 2023. 11. 29. 00:10
728x90

<한국 전력거래소 시간별 전력수요량 데이터 수집>
 - 수집위치 : data.go.kr

공공 데이터 포털에서 공공데이터를 다운로드하여 진행했다.

 

* 데이터 불러오기

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

1. 파일 경로 및 파일 이름 지정

2. 읽어올 파일의 확장자와 인코딩 형식 지정.


* 결측데이터

df.info()

 

 

데이터 형식 확인

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


* 이상치데이터

df.describe()

이 단계에서 논리적으로 데이터에 오류가 있는지 확인해야 한다.

 예를 들어 전력사용량의 최솟값인 min에서 마이너스 값이 나올 수 없다.


* 컬럼명 추출하기

col_list = df.columns
col_list

- 컬럼명의 시간을 데이터화하기 위해


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

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

 

데이터가 들어갈 껍데기만 만들었다.

 


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

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

for index, row in df.iterrows() :
    ### 년도 데이터
    ymd = row[col_list[0]]

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


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


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

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

### 결과 출력하기
result_df


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

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

728x90