데이터 수집하기
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로 읽힘)
1. 결측치 찾기
- RangeIndex 개수와 non_null 개수 비교해보고 같으면 결측치가 없는 것!
df.info()
2. 이상치 데이터 찾기
- min을 보면 됨 -> 0또는 마이너스값 있는지 체크
df.describe()
데이터 정제화
컬럼명의 시간을 데이터화하기 위하여 컬럼명 추출하기 🐾
- 컬럼명 추출하기(.columns - 함수아님! 객체임!)
col_list = df.columns
print( col_list[0] )
print( col_list[1:] )
3개의 열(날짜, 시간, 전력량)을 가지는 데이터 프레임 생성하기 🐾
- 깨끗한 데이터프레임 생성
result_df = pd.DataFrame(columns=["날짜", "시간", "전력량"])
result_df
데이터프레임에 데이터 행단위 추가하기 🐾
- 빈 데이터프레임(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)
'Back-End > 데이터베이스' 카테고리의 다른 글
[DB] 데이터베이스 연결 - pymysql 라이브러리 사용 (3) | 2023.11.29 |
---|---|
[DB] 데이터베이스 테이블에 저장하기, 설계하기 (DB 연결, 저장, 자원반환) (2) | 2023.11.28 |
[DB] 데이터 전처리 기초 - 판다스(pandas) (6) | 2023.11.28 |
[DB]데이터베이스(MariaDB) - 함수, 뷰(view), 프로시저(procedure) (10) | 2023.11.27 |
[DB]데이터베이스 그룹함수 - WITH ROLLUP, CUBE, GROUPING SETS (5) | 2023.11.27 |