대외활동/Brightics 서포터즈

[Brightics | 실습] 브라이틱스로 본 서울시 공유 자전거 현황 :: 데이터 전처리편

케이와이엠 2021. 6. 15. 14:17

안녕하세요 ! 이번주를 시작으로 약 3주간 개인분석 프로젝트가 진행될 예정인데요 ,

첫 개인 분석인 만큼 정말 설렙니다 ٩(๑>∀<๑)۶

Brightics를 활용하여 흥미있는, 또 때로는 심도깊은 주제로 분석을 해보고 싶은 제 소망이 이루어지는 순간입니다.

오늘은 첫 시간인만큼 어떤 주제로 진행하는지 ! 그리고 데이터를 어디서, 어떻게 수집했는지, 어떻게 업로드하는지 알려드리려고 해요. 으쌰으쌰해서 앞으로 재밌는 주제들로 자주 소통했으면 좋겠네요 —̳͟͞͞♡


DATA 선정

분석 프로젝트 주제 선정 이유는?

이번 첫 . 개인 프로젝트에서 제가 다루어 볼 데이터는 바로 " 서울 시 공공자전거 " 데이터 입니다 .

따릉이죠 !!!!!

다들 한 번쯤은 한강이나 주변 공원에서 따릉이를 타보셨을 텐데요 !

주제 선정을 할 때 첫 미션인만큼 , 많은 분들이 궁금해하고 공감할 수 있는 주제로 다가가고 싶었습니다. 

 

제가 올해 초 읽었던 기사가 있는데요,

서울시가 정리한 <데이터에 담긴 서울 교통 2020>에 따르면 지난 한 해 서울 시내에서 발생한 대중교통 이용건수는 줄어든 반면, 따릉이 대여 건수는 25%가량 늘었다고 합니다.

아마도 코로나19의 전파로 인해 시민들의 사회적 거리두기와 재택근무등이 시행되면서 이동을 최소화하려는 모습이 반영된 것으로 보입니다 . 반면에 비대면 교통수단인 자전거, 특히 공공자전거의 접근성과 선호도가 높아지며 따릉이 이용건수는 증가한 것으로 보입니다.

이렇듯 코로나19 상황에 개인 이동 수단에 대한 시민들의 관심이 높아지고 있다는 사실을 확인할 수 있습니다. 

따라서 저 또한 브라이틱스를 이용해서 작년 2020년도의 서울시 공공자전거 현황을 데이터로 확인해보고 싶은 호기심이 들었습니다. 

DATA 수집

 

주제도 선정했으니 데이터를 수집해볼 시간입니다.

저의 경우 데이콘에서 제공하는 '따릉이 데이터를 활용한 데이터 분석' 과정을 공부한 적이 있는데요

https://dacon.io/competitions/open/235576/talkboard/401060

 

[공공] 서울시 따릉이 자전거 이용 예측 AI모델

출처 : DACON - Data Science Competition

dacon.io

데이콘 측에서 잘 정리해준 데이터인지라 ! 이 데이터를 써보고 싶었으나

현황보다는 날씨변수들에 따른 대여건수의 변화를 살펴보는지라 저의 의도와는 맞지 않을 것 같다는 생각이 들었습니다. ㅠㅠ 

그래서 직접 데이터를 수집하러 떠났답니다

👀 (데이터 사냥꾼) 👀

 

https://data.seoul.go.kr/dataList/datasetList.do#

 

서울 열린데이터광장

전체  7,017건 을 찾았습니다. 정확도순 최신공개일순 조회순 제목순 조회 공공데이터 [환경] 서울시 대기오염물질 측정소 높이 정보 대기오염물질 측정소 높이 (위치정보) 수정일자 :  2022-04-19

data.seoul.go.kr

 

데이터셋> 공공데이터 | 서울열린데이터광장

 

저는 서울 열린데이터광장에서 제공하는 공공데이터를 이용했어요.

서울 열린데이터광장에는 인구/가구 , 주택/건설, 교육, 교통, 환경, 복지, 문화/관광 등 다양한 유형의 데이터셋을 제공하고 있습니다. 디테일한 데이터들이 많이 올라와 있으니 위 링크를 통해 확인해보시면 좋을 것 같네요:)

제가 선택한 자료들은 요 3개 입니다!

서울시에서 공공자전거와 관련되서 10개가 넘는 공공데이터들을 제공해주고 있어서 하나하나 꼼꼼히 읽어보았어요.

대여이력 정보의 경우 , 대여 일시와 반납 일시가 나와있어서 시간대별 이용건수를 파악할 수 있습니다.

또, 이용정보(월별) 자료 성별과 연령대별 코드가 나와있어서 이 또한 변수로 사용하면 좋을 것 같습니다.

마지막으로 추가적으로 신규가입자 정보도 들고 와보았습니다. 

 

앗 그런데 말이죠

고작 .. 한 달 자료만 다운받았는데 10만 행이 넘어버리는 게 아니겠어요 ,,?

ㄴ제가 어리석었어죠 ..... 우리 민족은 따릉이에 미쳐있는 민족이라는 걸 잠시 잊었어요 ... 하하

일년 치 자료를 모으면 100만 행이 넘어가버리는데 ㅠㅠ 엑셀러버인 저로서는 감당하기 너무 힘들어보였습니다

그래서 긴급 수정 !! 일년 치 자료가 아니라 10월 한달 자료만 분석해보기로 했어요 :(

 

10월로 선택한 이유아무래도 여름철, 겨울철 이용에는 상당한 변수가 생길 수 있으니 피했고,

10월 이용량이 가장 높다는 사실을 듣고 최대한 외생 변수를 제어할 수 있는 10월로 pick !

데이터 브라이틱스에서 LOAD 하기

 

 

이제 쵸큼은 익숙해진 브라이틱스 모델 구현 창 !!

지난 [Brightics | Bacis] 프로젝트 생성 및 모델링 편을 확인하시면 더 자세히 아실 수 있습니다.

2021.06.15 - [삼성 Brightics] - [Brightics | Basic ] 브라이틱스 기본 사용법 익히기 :: 프로젝트 생성 및 모델링 ]

 

[Brightics | Basic ] 브라이틱스 기본 사용법 익히기 :: 프로젝트 생성 및 모델링 ]

Brightics Studio 설치까지 모두 끝냈으니, 이제 본격적으로 Brightics Studio와 친해져볼 시간입니다. 앞으로 쉬운 연습 단계부터 어려운 실습 단계까지 차근차근 따라오실 수 있도록 Basic Level / Intermediat

uumini.tistory.com

 

저는 따릉이의 '따' 자에 꽂혀서  <ddaddadda> 따따따 모델을 만들어주었습니다

 

Load 시 주의할 점

※ File Name allows only the following characters: "a-z", "A-Z", "0-9", "_", ".".

파일 이름은 영문 대소문자 , 숫자, 밑줄바, 점 만 가능하다는 사실 !!

 

use_ifo_oct.csv / rent_info_oct.csv / newly_subscribe_oct.csv 순입니다.

2020.07 ~ 2020.12자료가 한 파일로 묶여있길래 2020.10 자료만 뽑아냈습니다.

저전거코드, 대여장소, 거치대 수 등과 같이 불필요없는 열들은 거의 다 삭제해주었습니다.

 

대여일자 -> rent_date

이용건수 -> usenum

성별 -> gender

연령대코드 -> agecode

운동량 -> exercise

이동거리(m) -> move_distance

이용시간(분) -> usetime

대여일시 -> rent_time

반납일시 -> return_time

로 변수도 바꿔주었어요 !

 

로컬 피시에서 정리된 csv 파일을 가져옵니다

전 엑셀 파일에서 이미 한시간동안 데이터를를 정제한 탓에 수월하게 load되었습니다. 

 

 

깜빡하고 삭제 못한 대여장소 번호(rent_placenum)가 있었지만

우리 친절한 브라이틱스는 LOAD 마지막 단계에서 지정할 칼럼까지 확인하라고 알려줍니다.

 

어때요 저 LOAD함수 부자 같나요 ? ㅎㅎㅎㅎㅎㅎ

 

데이터 변수들을 하나의 JOIN 함수로 묶어주고 싶었지만 공통된 열이 없어서 묶기 애매하더라구요

어차피 각 파일별로 도출할 현황 결과값이 다를 것 같애서 다 따로 만들어놓았습니다 !

DATA 전처리

데이터를 정리해봅시다

1단계 ] 문제점 파악하기

최종 로드한 use_info_oct 자료를 확인해보면, 다음과 같이 문제들이 존재합니다.

1. 운동량 0 & 이동거리 0 & 사용시간 0분 ~ 5분 데이터 존재

운동량이 없고 이동거리가 없는 자전거 대여 정보는 데이터로서 효력이 없다고 판단했어요.

그리고 사용시간이 현저히 낮은 데이터, 그 기준을 0~5분으로 잡고 이들도 제거해야 할 듯해요.

2. 오타 데이터 존재 / 3. 빈데이터 존재

gender 열에서 현재 M과 W가 아닌 문자가 등장했네요.

그리고 성별이 구분되지 못한 채 대여정보가 수집된 행도 있어보입니다.

4. NULL 값 존재

브라이틱스에서 null값은 결측치로 작용을 하는데요, 현재 exercise에서 null이 떠 있습니다.

2단계 ] 전처리 작업으로 문제 해결하기

1. Filter 함수

 

가장 먼저, 따릉이 대여 데이터 중 특정 항목을 제거하는 작업입니다.

그 후 데이터들 중 운동량(exercise)가 0, 이동거리가 0, 사용시간이 0이면서 5분 이하인 데이터를 제외한

데이터를 대상으로 하기 위해 FILTER 함수를 사용해주었습니다.

(exercise != 0 & move_distance != 0 & usetime > 0 & usetime < 5)

 

또한 gender의 경우 \N이라는 string을 제거해주고 빈데이터도 삭제해주었습니다.

 

짠 !

2. Replace Missing Number

null값을 해결하는 방법으로는 replace missing number 함수을 사용합니다.

제 데이터 중 exercise 항목의 null값을 해결하기 위해서인데요!

만약 double, int, 유형이 아닌 string 유형이라면 replace missing string 함수를 이용하시면 됩니다.

 

fill value 에는 자신이 원하는 대체 항목을 선택할 수 있어요

to : 원하는 값 / mean : 평균값 / median : 중앙값 / min : 최소값 / max : 최대값

저는 전체 항목의 평균값 mean 을 사용했습니다.

전처리 완성 !

9만 7천 데이터에서 2만 4천 데이터로 ... 줄어들었다는 대박적인 사건

브라이틱스 클릭만으로 정말 손쉽게 전처리가 가능합니다 ㅠㅠㅠ!!!

이로써 분석할 데이터가 1/4가량으로 줄었다는 희소식 전해드리며 

데이터 Load 과정과 전처리과정은 여기서 마무리하도록 하겠습니다 !!

다음 포스팅에는 더 다양한 함수들과 차트로 직접 분석해본 결과를 가져오겠습니다 ;)

 


*해당 게시글은 Brightics 서포터즈 활동의 일환으로 작성된 포스팅 입니다.

게시글 관련 문의 및 소통을 원하신다면 아래 댓글로 남겨주세요

브라이틱스 사용 중 문의사항은

brightics@samsung.com으로 연락주세요 :)

#삼성SDSBrightics #BrighticsAI #BrighticsStudio #브라이틱스 #브라이틱스스튜디오 #데이터 #데이터분석 #데이터분석플랫폼 #모델링 #파이썬 #R #Rstudio #태블로 #하둡 #코딩 #코딩없이분석 #삼성SDS #브라이틱스서포터즈 #삼성서포터즈 #데이터분석대외활동 #대외활동 #대학생대외활동 #데린이탈출 #서울시공공자전거 #따릉이데이터