내일배움캠프(QA,QC_5기)

[내일배움캠프] QA/QC_5기 ( 55일차 )

lshxkwh 2026. 5. 27. 20:23

[ 팀 프로젝트 ] - 심화

01. 데이터 뜯어보기 

예..? 당황했지만.. 일단 열어보자...

 

  • TripA01.CSV

이건좀 아니지... 라는생각이들었지만.. 일단 이런 데이터가 A 32개 B 38개가 있다.

 

일단 오늘할거 A,B 데이터를 병합을 시켜보자

 

  1.  라이브 러리 및 환경 설정
    import os
    import numpy as np
    import pandas as pd

    base_path = '/content/drive/MyDrive/포아송_진실에 방으로/데이터셋/'
    files = ['TripB_merged.csv', 'TripA_merged.csv']
    - 데이터 처리에 필요한 도구를 불러오고, 파일이 위치한 경로와 병합할 파일을 정의한다. 


  2. 데이터 로드 및 프레임 구조화
    def load_trip(file):
        raw = pd.read_csv(os.path.join(base_path, file), header=None, low_memory=False)

        cols = raw.iloc[0, 0].split(';')
        df = raw.iloc[1:, 0].astype(str).str.split(';', expand=True).iloc[:, :len(cols)]
        df.columns = cols
    load_trip 함수를 통해 각 파일을 불러온다 . header=None으로 설정하여 원본의 첫 줄을 데이터로 먼저 읽은뒤 분리해서 헤더로 지정.
    ( 쓰지 않는 경우 컬럼 명이 아닌 데이터 값으로 표현 됨 ) - 경험 담 짜증 

    핵심 함수: .iloc[], .split(), .str.split()
    함수 해설:
    • .iloc[행, 열]: 파일 내에서 특정 위치의 데이터를 정밀하게 선택.
    • .split(';'): 문자열을 세미콜론 기준으로 리스트화.
    • .str.split(';', expand=True): 문자열 데이터를 분리한 뒤, 그 결과를 1차원 리스트가 아닌 '2차원 데이터프레임(표)' 구조로 확장(expand)합니다.
    • .columns: 데이터프레임의 열 이름을 직접 할당하여 구조를 완성.
  3.  데이터 결합
      df['Trip_File'] = raw.iloc[1:, 1].values
    데이터가 어느 파일에서 왔는지 추적하기 위한 컬럼 Trip_File 컬럼을 생성.
    핵심 함수: .iloc[], .values
    함수 해설:
    • .iloc[1:, 1]: 1번 행부터의 데이터를 가져오되, 컬럼은 2번째 열(인덱스 1)을 선택합니다.
    • .values: 데이터프레임 구조를 제거하고 순수 데이터 값만 추출하여 새로운 컬럼으로 삽입


  4.  if 'Cabin Temperature Sensor [캜]' in df.columns:
            df['Cabin Temperature Sensor [캜]'] = df['Cabin Temperature Sensor [캜]'].replace(-500, np.nan)
    핵심 함수: .apply(), pd.to_numeric(), .replace()

    함수 해설:

    • .apply(): 여러 컬럼에 동일한 함수를 일괄 적용.
    • pd.to_numeric(..., errors='coerce'): 데이터 타입을 숫자로 변환. coerce 옵션은 변환 실패 시 에러 대신 NaN(결측치)을 반환하여 프로그램 중단을 막는다.
    • .replace(a, b): 특정 값(a)을 찾아 지정한 값(b)으로 치환하여 센서 노이즈를 효과적으로 제거.