📌EDA 과제2_주유소 데이터 분석
개요
- 최근 물가가 상승하면서 유가도 덩달아 상승했다. 그런데 셀프주유소와 일반주유소 간의 차이가 꽤 있다는 것을 운전자라면 알 것이다. 이를 데이터 분석을 통해 알아보자
데이터 출처 : 오피넷
목표
- 셀프주유소와 일반주유소의 가격차이 알아보기
- 구별 유가 정보 시각화하기
제한사항
- 서울시를 대상으로 한다
- 데이터 수집 시 부가정보를 포함한다(셀프, 세차장, 충전소, 경정비, 편의점, 24시간운영)
절차
-
오피넷사이트 이해
- 지역별 싼 주유소 찾기로 이동
- 사이트 활용에 대한 이해
-
서울 구역별 데이터 수집
- 주유소명, 주소, 브랜드, 휘발유 가격, 경유 가격, 셀프 여부, 세차장 여부, 충전소 여부, 경정비 여부, 편의점 여부, 24시간 운영 여부, 구, 위도, 경도 데이터 수집
-
데이터 분석
- 시각화, 분석에 맞게 데이터 구조변환
- 내용 분석
-
데이터 시각화
-
해석
1. 오피넷사이트 이동
사이트 해석 내용
- 오피넷 사이트에서는 각 지역을 드롭다운 목록으로 선택한다
- 부가정보, 상표, 형태 등을 선택할 수 있다
- 지역을 선택하면 URl은 바뀌지 않고 데이터만 변경된다
- 해당 지역에 포함되는 주유소는 아래에 목록으로 나열된다
- 주유소를 클릭하면 상세내용을 알 수 있다
2. 서울 구역별 데이터 수집
- 주유소명, 주소, 브랜드, 휘발유 가격, 경유 가격, 셀프 여부, 세차장 여부, 충전소 여부, 경정비 여부, 편의점 여부, 24시간 운영 여부, 구, 위도, 경도 데이터 수집
- 부가정보도 수집해야 하므로 각 주유소를 클릭하여 상세정보에서 데이터를 수집한다
- 데이터프레임을 만들어야하므로 모든 데이터를 각각의 리스트에 저장
- 위도, 경도는 googlemaps에서 수집
- 데이터 수집 오류발생
- 문제 : 각 주유소를 선택했을 때, 글자가 보이지 않으면 Selenium이 이를 선택 불가능
- 해결 : 페이지 전체를 읽어오는 BeutifulSoup를 활용
driver.find_element(By.CSS_SELECTOR, target).click()
page = driver.page_source
soup = BeautifulSoup(page, 'html.parser')
name.append(soup.select_one("#os_nm").text)
df = pd.DataFrame({
'name': name,
'address': address,
'brand': brand,
'gasoline': gasoline,
'diesel': diesel,
'self': self_,
'car_wash': car_wash,
'gas_station': gas_station,
'maintenace': maintenance,
'convenience': convenience,
'operating_24': operating_24,
'gu': gu,
'lat': lat,
'lng': lng
})
3. 데이터 분석
- 구조변환 및 분석
분석내용
- 각 구별로 가격의 차이가 발생한다
- 전반적으로 셀프가 일반주유소보다 가격이 싸다
- 셀프가 없는 구역은 용산구이다.
4. 데이터 시각화
- 휘발유 기준 지도 시각화
5. 해석
사실
- 일반적으로 서울중심이 기름가격이 비싸며, 바깥으로 갈수록 가격이 싸지고, 셀프주유소가 증가하는 경향을 보인다
- 셀프는 일반보다 약 50~120원 정도 싸다
- 셀프 가격차이가 가장 큰 지역은 중구(477), 강남구(346), 영등포구(216), 종로구(187), 성동구(146) 이고 중구의 최대편차는 968원이다
인과관계
- 셀프는 고객 스스로가 주유하는 것으로 인건비를 아끼는 것을 의미한다
- 셀프의 단점은 사용자의 불편함, 사용미숙으로 인한 주유시간증가와 회전률저하 및 사고발생, 범죄 등이 있다
- 사용자가 많은 주유소는 셀프를 사용하는 것이 부적합하고, 그만큼 직원을 고용할 것이다
결론
📌8주차 학습내용 요약
Git
Git 기본용어
- Repository : 소스코드가 저자오디어 있는 여러 개의 Branch가 모여있는 디스크상의 물리적 공간
- Checkout : 특정 시점이나 Branch의 소스코드로 이동하는 것
- Stage : 작업한 내용이 올라가는 임시저장영역
- Commit : 작업한 내용을 Repository에 저장하는 과정
- Tag : 임의의 commit 위치에 쉽게 찾아갈 수 있도록 붙여놓은 이정표
- Push: Local Repository의 내용 중, Remote Repository에 반영되지 않은 commit을 Remote로 보내는 과정
- Pull : Remote에 있는 내용 중, Local에 반영되지 않은 내용을 가져와서 Local 에 저장하는 과정
- Branch : 특정 시점에서 분기하여 새로운 commit을 쌓을 수 있는 가지를 만드는 것
- Merge : branch의 반대개념으로 하나의 branch를 다른 branch와 합치는 과정
- README file : 프로젝트에 대한 설명, 사용방법, 설치방법 등에 대한 내용을 기술하는 파일
- .gitignore : git 버전관리에서 제외할 파일을 지정하는 파일
Git 명령어
기본 터미널 명령어
- 폴더 이동 :
cd filename
- 이전으로 이동 :
cd ..
- 폴더 생성 :
mkdir
- 파일 목록 조회 :
ls
- 숨김도 조회 :
ls -all
Git 활용 명령어
- 작업공간 선언 :
git init
- git 상태 :
git status
- add :
git add filename
- commit :
git commit -m "comment" filename
- Push :
git push origin <target>
- Pull :
git pull origin <target>
- Local Remote :
git remote add origin https://<username>:<token>@github.com/<repository>.git
- git clone :
git clone https://<username>:<token>@github.com/<repository>.git
BRANCH 명령어
- branch 조회 :
git branch -a
- local branch 생성 :
git branch branchname
- local branch 이동 :
git checkout branchname
- local branch 생성&이동 :
git checkout -b branchname
- remote branch 생성 :
git push origin branchname
- local branch 삭제 :
git branch -d branchname
- remote branch 삭제 :
git push origin --delete branchname
TAG 명령어
git tag tagname
: 마지막 버전에 태그
git tag tagname commithash
: 지정한 commit에 태그
git push origin tagname
: Remote에 태그 push하기
git tag
: 태그목록보기
git show tagname
: 특정 태그 상세
git tag --delete tagname
: 특정태그 삭제하기
git push --delete origin tagname
: Remote 태그 삭제하기
📌학습범위
- Part 06. Git
- Git의 배경과 설치, 기본용어
- Repository & Branch
- TAG & README