Intro

이 글은 미래내일 일경험 인턴십에서 근무하면서

겪거나 배우고 느낀 것을 기록하고자 작성한 포스트입니다.


최근의 일들

최근에 이상치 제거와 관련해서 대표님과 인턴들간의 갈등이 있었다.

데이터를 직접 크롤링하고, 분석해보니 데이터에 기입 오류 혹은 측정 오류 등으로 추정되는 이상치가 꽤 많이

발견이 되었는데, 이것과 관련해서 이상치를 제거하는 방법을 고민하고 실행했다가

대표님께서는 여기에 납득이 잘 되지 않으셨는지

이상치를 그대로 반영한 데이터 분석을 실행해보라고 말씀하셔서 대표님과 인턴들 사이에 혼란이 생겼던 것 같다.

대표님께서는 데이터에 얼마나 이상치가 들어있는지 잘 모르셨던 것 같고,

그래서 우리가 이상치를 제거하기 위해 사용한 통계적 방법에 대해서도 충분히 납득이 되지 않으셨던 것 같다.

이러한  갈등은 직접 수집한 데이터를 보여드리고, 어디 어디에 어떤 오류가 있는지 말씀드리면서 잘 마무리 되었다.

이상치가 조밀하게 분포해 있었기 때문에, 어디부터 건강 데이터를 필터링 해야 할지 기준을 세우기 어려웠던 우리는

대표님의 지시가 잘 이해가 되지 않았던 것 같다.

아무튼 서로의 오해나 갈등이 마무리 된 것 같아서 다행이다.


과제 수행

최근에는 과제가 있었다. 그래서 뭔가 복학한 기분(?)

예전에 대표님께서 과제를 내 주신 적이 있는데, 이 과제에 대해 기대를 많이 하셨는지

우리가 가져온 결과에 대해서 실망도 많이 하셨던 것 같다.

대표님이 강조하신 걸 정리하자면, 데이터를 단순히 시각화 하는 것은 누구나 할 수 있고,

그 이상의 해석 능력이 있어야 한다(?)라고 말할 수 있을 것이다.

저번 과제에서는 그게 좀 부족했던 것 같고, 그래서 이번에는 개인별로 혈압, 혈당, 맥박에 이상이 있다고 추정되는

사람 두 명씩을 분석해 결과를 발표하는 식으로 진행했다.

사실 예전에도 조사했지만, 우리가 가진 데이터에서 혈압과 혈당, 맥박 간의 상관관계는 명확히 드러나지 않았다.

그나마 수축기 혈압과 이완기 혈압이 양의 상관관계를 지니고 있었을 뿐이다.

그래서 나는 날짜를 계절로 범주화하는 함수를 만들어서

계절이라는 범주마다 특정인의 혈압이 어떻게 되는지를 분석해보았다.

바이올린 차트로 시각화를 해 보니, 겨울에 특정인의 혈압이 상승하고 여름에는 하강하는 추세가 있음을 알게 되었다.

엄청 의미 있는 정보는 아니지만, 계절과 혈압의 관계를 어느 정도 분석했다는 점에서 의미가 있었다고 생각한다.


오늘 한 일

오늘은 데이터의 컬럼 타입명을 자동으로 변환하는 함수를 만들었다. (고맙다 챗 지피티!!!)

import pandas as pd
import numpy as np

def auto_convert_dtype(df):
    converted_df = df.copy()
    converted_df = converted_df.dropna(axis=0)
    for col in converted_df.columns:
        current_dtype = converted_df[col].dtype
        
        try:
            # '측정날짜' 컬럼은 datetime 자료형으로 변환
            if col == '측정날짜':
                converted_df[col] = converted_df[col].astype('int64').astype('str')
                converted_df[col] = pd.to_datetime(converted_df[col])
            else:
                # 나머지 열은 숫자 자료형으로 변환
                converted_df[col] = converted_df[col].astype('int64')
        except ValueError:
            # 변환할 수 없는 경우, 원래 데이터 유형 그대로 유지
            converted_df[col] = df[col]
    
    return converted_df

함수를 중간 중간 실행해보니 계속 float64를 int64로 형 변환 못하는 부분도 있었고

출력된 데이터 프레임을 보니 자료 형태도 이상해서 유심히 생각해보니

converted_df = converted_df.dropna(axis=0) 으로 NaN값이 들어있는 행을 없애야 했는데,

그러지 않아서 오류가 발생했던 것 같았다.

아무튼 오늘도 과제가 또 생겼다. 후후…

내일은 기술 박람회 때문에 코엑스를 가야 한다. 파이팅~~!

태그:

카테고리:

업데이트: