Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 개념
- BOJ
- level1
- HAVING 절
- 자바
- 헤드퍼스트 디자인패턴
- Python
- java
- Java11
- 응용
- 기본
- baekjoon
- Codeforces Round #802 (Div. 2)
- 백준
- 코딩테스트
- 파이썬
- SQLD / SQLP
- JAVA 11
- programmers
- 명품 자바 프로그래밍
- pypy3
- 단계별로 풀어보기
- 기초
- 공공데이터
- Python 3
- Codeup
- SELECT 절
- 기초100제
- GROUP BY 절
- 이론
Archives
- Today
- Total
Development Project
[ 2021 NIPA AI - 기본 ] 3. 공공데이터를 활용한 파이썬 데이터분석 프로젝트 - 4. 유가 데이터를 활용한 주유소 시장 분석 본문
AI/Edu
[ 2021 NIPA AI - 기본 ] 3. 공공데이터를 활용한 파이썬 데이터분석 프로젝트 - 4. 유가 데이터를 활용한 주유소 시장 분석
나를 위한 시간 2021. 12. 16. 20:04// gg...
=> 주유소별로 7일치씩 쌓여있는 데이터를 요약하여 주유소별로 1개의 행이 되도록 각 년도 데이터를 가공
=> 이 데이터를 통해 지난 4년동안 몇개의 주유소가 개업 및 폐업 했는지 분석
=> 브랜드별 가격경쟁력 및 지난 4년간 시장 점유율 변화를 분석
=> 주유소별 가격 편차가 어느정도 되는지 알아보고, 지역별로도 유의미한 차이가 있는지 분석
데이터 출처 : https://www.data.go.kr/data/15044628/fileData.do
한국석유공사_제품별 주유소 판매가격_일간_20210113
전국 주유소 판매가격의 산술 평균
www.data.go.kr
[Project 1] 유가 데이터를 활용한 주유소 시장분석
- 데이터 Cleansing 및 Feature Engineering
- 18년 데이터 기준 데이터 점검 및 Cleansing
- import 및 초기설정
-
import numpy as np import pandas as pd import seaborn as sns sns.set_style('darkgrid') import matplotlib.pyplot as plt import matplotlib.font_manager as fm font_dirs = ['/usr/share/fonts/truetype/nanum', ] font_files = fm.findSystemFonts(fontpaths=font_dirs) for font_file in font_files: fm.fontManager.addfont(font_file) plt.rcParams['font.family'] = 'NanumBarunGothic' plt.rcParams['axes.unicode_minus']=False
-
- 불러오기 [ read_csv("경로") ]
-
f18 = pd.read_csv(f'./data/과거_판매가격(주유소)_2018.csv')
-
- 정보 출력 [ .head() ]
-
f18.head()
-
- 열 제거 [ .drop(index) ]
-
# 0번 row 제거 f18 = f18.drop(0) f18.head()
-
- null값 판단
-
# 변수별 null값 확인 결과 null 없음 f18.isna().sum()
-
- 결과 확인
-
# include='all': 카테고리형 변수도 정보 제공 f18.describe(include='all')
- - - - - - - = describe 점검 포인트 = - - - - - - -
① 기간이 수치로 인식되고 있음
② unique 지역 개수가 229이어서 너무 많음
③ 휘발유 min이 0임
④ unique 상표 개수가 9개이므로 적절함
⑤ unique 셀프여부 개수가 2개이며, 셀프여부는 각각 절반정도 비중을 차지함
⑥ unique 번호가 11673개이며 최대 7개까지 기록 - 수정
- 기간이 수치로 인식되고 있음 => 기간을 datetime 형태로 변환
-
f18['기간'] = f18['기간'].apply(lambda x:pd.to_datetime(str(int(x))))
-
- unique 지역 개수가 229이어서 너무 많음 => 지역 변수 중 첫 지역 구분만 컬럼 형성
-
region_len = f18['지역'].apply(lambda x: len(x.split())) print(f"min: {min(region_len)},max: {max(region_len)}")
-
f18['지역2'] = f18['지역'].apply(lambda x:x.split()[0]) import collections collections.Counter(f18['지역2'])
-
- 휘발유 min이 0임 == 0인 열을 확인 후 제거
-
# 휘발유값 0인 ROW 확인 f18.loc[f18['휘발유']==0].head(10)
-
f18.loc[f18['번호']=='A0010629']
-
- 기간이 수치로 인식되고 있음 => 기간을 datetime 형태로 변환
-
- import 및 초기설정
- 18년 데이터 기준 데이터 점검 및 Cleansing
'AI > Edu' 카테고리의 다른 글
Comments