해당 프로젝트는 학교에서 진행한 개인 프로젝트를 게시글 형태로 가공하여 발행하는 시리즈이다. 아마 현재까지 발행된 게시글 중 필자의 주관적인 판단이 가장 많이 들어간 시리즈이지 않을까 싶다.
사실 데이터 분석과 관련된 인사이트를 많이 보여주고 싶은 마음이 제일 크다.
도대체 이 작자가 어떤 데이터에 대해 어떤 생각을 가지고 있는지 소개하는 시간을 가져보도록 하자.
프로젝트로 주어진 3개의 데이터를 분석하고 시각화하는 과제를 부여받았다. 이에 주어진 3개의 데이터의 종류는 다음과 같다.
results_calories.txt
results_distance.txt
results_stpes.txt
학교에서는 이 세 개의 파일을 띡 주고 '분석해 봐~'하는 것으로 과제가 주어졌기에, 어떤 방식으로 분석해야 하는지도 차근차근 알 필요가 있었다. 그리고 얼핏 들었던 내용으로는 fitbit에서 제공하는 open api를 이용하여 추출해낸 텍스트 정보였다는 것 정도?
이에 각각에 대한 특징을 조사하고 어떠한 인사이트를 통해 시각화를 진행하였는지, 추가적으로 간단한 ML 학습을 통해 지도 학습을 진행하도록 한다.
우선 데이터를 처리함에 앞서 상기 3개의 데이터가 어떠한 내용을 가지고 있는지 유추해내고 분석을 진행하는 것이 타당해 보인다.
results_calories.txt : 섭취 칼로리 or 소모한 칼로리
results_distance : 이동한 거리(단위는 km)
results_stpes : 이동한 걸음(steps의 오타로 보인다. 이후 steps로 통일)
해당 데이터 정보 유추를 바탕으로 진행하고자 하는 데이터 분석은 크게 다음과 같다.
1. 만약 results_calories 데이터가 소모한 칼로리라면 이동한 거리/걸음과 양의 상관관계를 보여야 할 것이고, 섭취한 칼로리라면 음의 상관관계를 보여야 할 것이다. corr 함수를 이용하여 어떠한 관계를 보이고 있는지 확인하는 작업을 거치도록 한다.
2. 이동한 거리와 이동한 걸음은 정비례한 상관관계를 보일 것이다. 해당 데이터가 정말로 비슷한 양상을 띠고 있는지 확인하는 절차를 거치도록 한다.
3. 모든 파일은 한 사용자의 4월부터 11월까지의 생체정보를 담고 있다. 모든 정보에 대한 결측치/이상치는 존재하지 않는지, 존재한다면 어떤 방식으로 이를 처리할 것인지에 대한 분석을 진행하도록 한다.
이렇게 세 가지의 방향성을 기준으로 시작하되, 분석을 진행하며 도중에 생기는 보충사항에 대해서는 그때그때 소개하도록 한다.
우선적으로 각 데이터를 pandas 라이브러리를 이용하여 불러오는 작업을 거쳤고, read_csv 함수를 이용하여 각 데이터를 subplot 형식으로 print 하는 과정을 거쳤다. 각 구분자가 csv 형식이 아닌 띄어쓰기 형식이었기 때문에 구분자를 띄어쓰기로 진행하고 인덱스 처리를 해줘야 정상적으로 출력되는 것을 알 수 있었다.
날짜는 모두 동일한 날짜를 가지고 있었기에 x축이 더러워지는 것을 피하고자 사전에 제거하고 그래프를 출력하였다.
해당 그래프를 보면서 처음으로 떠오른 특징은 다음과 같았다.
특징 1 : 전반적으로 세 개의 그래프가 비슷한 높낮이를 보이고 있는 것으로 보이고 특히 distance와 steps 그래프는 거의 동일하다 싶을 정도로 진행이 되고 있다. 또한 세 그래프의 x축은 같은 날짜로 같지만, y축의 범위는 제각각인 것을 알 수 있다.
해결방안 : 독립적으로 그래프를 그리는 것에 있어서는 해당 그래프를 그대로 사용하되, 다른 그래프와의 분석을 위해서는 따로 min-max scaling를 이용하여 정규화를 진행하고 분석을 추후 진행하도록 한다.
해당 그래프를 통하여 얻을 수 있는 추가적인 특징과 해결방안은 다음과 같다.
특징 2 : steps의 일부 값에서 0인 값이 존재하는 것을 확인했다. 사람은 아예 걷지 않는 것은 아님을 알고 있기 때문에(화장실을 가는 데에도 걸음은 필수적으로 요구된다.) 이는 해당 날에 해당 기기(웨어러블 장비)를 착용하지 않은 것으로 간주한다.
해결방안 : 날짜별 행동 패턴은 비슷할 수도 있지만 부족한 데이터의 크기로 인하여 각 날짜별 데이터는 독립적이라 판단. steps/distance가 0 인 데이터는 추후 학습에서 제외하는 방향으로 한다.
특징 3 : 특징 2번의 내용을 바탕으로 steps나 distance 값이 0인 데이터의 calories 값이 거의 일정하게 유지되고 있다.(약 1400~1547 사이) 이는 필수로 생활하는데 요구되는 기초대사량으로 보이기에 유의미한 데이터로 보이지 않는다.
해결방안 : 이유는 특징 2번의 내용과 동일. 기초대사량으로는 데이터 분석에 한계가 있기에 steps/distance가 0인 데이터에 대해 calories 데이터도 제외하도록 한다.
다음 장에는 해당 해결방안을 기준으로 테이블을 join 해보고 어떠한 분석결과가 나왔는지 알아보는 시간을 가진다.
'개발 > 데이터 분석' 카테고리의 다른 글
도보에 따른 칼로리 소모량 분석해보기 3. 선형 회귀 분석(+분석 코드) (0) | 2023.01.09 |
---|---|
도보에 따른 칼로리 소모량 분석해보기 2. 데이터 전처리 (0) | 2023.01.07 |
Analytic SQL 5. 이동 평균(Moving Average)과 유의 사항 (0) | 2023.01.05 |
Analytic SQL 4. Window 절 심화 (0) | 2023.01.04 |
Analytic SQL 3. 집계(Aggregate) SQL (0) | 2022.12.30 |