소형 차에는 O연료, 대형 차에는 O 연료 ←- 이런 방식으로 조합을 제시하는가?
단기적 관점과 장기적 관점으로 나눠서 개발 전략 제시해도 좋을 듯
정책 수립도 제시할 것인지 ( 예를 들어 O 연료 규제 강화, OO class 차량에 대한 추가 비용(..?)
차량_연비_데이터(2002~2022).csv)로 구성VEHICLE CLASS: 차량 분류MODEL: 차량 모델FUEL: 연료 종류COMB (L/100 km): 복합 연비EMISSIONS: 배출량연비 및 CO2 배출량은 친환경 차량 설계의 주요 기준이며, 데이터 기반 정책 수립의 핵심 요소
차량의 판매량과 연비는 매우 연관이 높으며 제조사 입장에서는 필수로 관리해야 하는 항목
📊단위변환/스케일링/파생변수→ 단위변환 적합
분석의 일관성과 가독성을 위해 한국 표준식으로 단위변환을 해주었습니다. L/100km → km/L
# 1. 단위 변환하여 새 컬럼 생성: L/100km → km/L
df['COMB (km/L)'] = 100 / df['COMB (L/100 km)'] ---> ppt에 직접 작성해서 첨부
df['CITY (km/L)'] = 100 / df['CITY (L/100 km)']
df['HWY (km/L)'] = 100 / df['HWY (L/100 km)']
COMB (km/L)와 같이 의미는 같으나 단위만 다른 중복 정보를 제공하는 변수는 제외하였습니다.
# 2. COMB(mpg) 등 필요없는 컬럼들 삭제하기
df = df.drop(columns=[
'COMB (L/100 km)', 'CITY (L/100 km)', 'HWY (L/100 km)', 'COMB (mpg)'
])
df.head()
# 3. 클래스명 대문자로 통일하기
df["VEHICLE CLASS"] = df["VEHICLE CLASS"].str.strip().str.upper()
df['VEHICLE CLASS'] = df['VEHICLE CLASS'].str.replace(':', ' -', regex=False)
df["VEHICLE CLASS"].unique()
이유: 해당 컬럼의 범주가 세분화되어 있어 분석 목적에 맞는 비교가 어렵다고 판단했습니다. 따라 도매인지식으로 차급으로 그룹핑
# 4. 차량 분류 그룹핑
mapping = {
# SUV
'SUV': 'SUV - STANDARD',
'SPECIAL PURPOSE VEHICLE': 'VAN - CARGO'
}
group_df = df.copy()
group_df['VEHICLE CLASS'] = df['VEHICLE CLASS'].replace(mapping).copy()
group_df["VEHICLE CLASS"].unique()
# 'MODEL' 컬럼에서 'HYBRID'라는 글자가 포함된 행을 제외(~)하고 새로운 데이터프레임 생성
r_h_df = df1[~df1['MODEL'].str.contains('HYBRID', case=False, na=False)].copy() # ~: not의 의미로 hybrid가 포함되지 않은 행만 남김
r_h_df.shape
# 하이브리드 전처리한 데이터 저장
r_h_df.to_csv("data/processed_hybrid_df.csv", index=False)
(도메인 지식→하이브리드 관련 데이터 확인→지식/예상과 일치(특수한 케이스)→제거)
어떤 점에서 특수 차량이라고 보셨나요? - 도메인 지식
분석 결과를 보고 난 후 처리한 것이니까 후처리인가요? - 혜리 튜터님 지도
⇒
도메인 지식 근거만으로 뒷받침해서 이야기해도 되는가? - 도메인+데이터 확인
하이브리드를 뺀 차량별 연비/배출량만 봄 → 하이브리드를 함께 포함해서 분석 → 올려치기..?
단위변환/스케일링
📊단위변환/스케일링/파생변수→ 단위변환 적합
분석의 일관성과 가독성을 위해 한국 표준식으로 단위변환을 해주었습니다. L/100km → km/L
# 1. 단위 변환하여 새 컬럼 생성: L/100km → km/L
df['COMB (km/L)'] = 100 / df['COMB (L/100 km)']
df['CITY (km/L)'] = 100 / df['CITY (L/100 km)']
df['HWY (km/L)'] = 100 / df['HWY (L/100 km)']
COMB (km/L)와 같이 의미는 같으나 단위만 다른 중복 정보를 제공하는 변수는 제외하였습니다.
# 2. COMB(mpg) 등 필요없는 컬럼들 삭제하기
df = df.drop(columns=[
'COMB (L/100 km)', 'CITY (L/100 km)', 'HWY (L/100 km)', 'COMB (mpg)'
])
df.head()
# 3. 클래스명 대문자로 통일하기
df["VEHICLE CLASS"] = df["VEHICLE CLASS"].str.strip().str.upper()
df['VEHICLE CLASS'] = df['VEHICLE CLASS'].str.replace(':', ' -', regex=False)
df["VEHICLE CLASS"].unique()
이유: 해당 컬럼의 범주가 세분화되어 있어 분석 목적에 맞는 비교가 어렵다고 판단했습니다. 따라 도매인지식으로 차급으로 그룹핑
# 4. 차량 분류 그룹핑
mapping = {
# SUV
'SUV': 'SUV - STANDARD',
'SPECIAL PURPOSE VEHICLE': 'VAN - CARGO'
}
group_df = df.copy()
group_df['VEHICLE CLASS'] = df['VEHICLE CLASS'].replace(mapping).copy()
group_df["VEHICLE CLASS"].unique()
# 'MODEL' 컬럼에서 'HYBRID'라는 글자가 포함된 행을 제외(~)하고 새로운 데이터프레임 생성
r_h_df = df1[~df1['MODEL'].str.contains('HYBRID', case=False, na=False)].copy() # ~: not의 의미로 hybrid가 포함되지 않은 행만 남김
r_h_df.shape
# 하이브리드 전처리한 데이터 저장
r_h_df.to_csv("data/processed_hybrid_df.csv", index=False)
(도메인 지식→하이브리드 관련 데이터 확인→지식/예상과 일치(특수한 케이스)→제거)
어떤 점에서 특수 차량이라고 보셨나요? - 도메인 지식
분석 결과를 보고 난 후 처리한 것이니까 후처리인가요? - 혜리 튜터님 지도
⇒
도메인 지식 근거만으로 뒷받침해서 이야기해도 되는가? - 도메인+데이터 확인
하이브리드를 뺀 차량별 연비/배출량만 봄 → 하이브리드를 함께 포함해서 분석 → 올려치기..?
단위변환/스케일링
📊발표 : 이 파생변수에선 차급 간 특성과 연료 간 특성을 비교하기 위해
차량을 클래스별,
복합연비와 이산화탄소 배출량의 중앙값을 대표값으로 산출하여
별도의 파생 데이터프레임을 구성하였습니다.
# 차량 클래스별 연비 중앙값 계산 및 내림차순 정렬
veh_comb_sorted_df = df.groupby("VEHICLE CLASS", as_index=False)["COMB (km/L)"].median().sort_values(by="COMB (km/L)", ascending=False)
veh_comb_sorted_df# 차량 클래스별 CO2 배출량 중앙값 계산 및 내림차순 정렬
veh_co2_sorted_df = df.groupby("VEHICLE CLASS", as_index=False)["EMISSIONS"].median().sort_values(by="EMISSIONS", ascending=False)
veh_co2_sorted_d# 연료 유형별 연비 중앙값 계산 및 내림차순 정렬
fuel_comb_sorted_df = df.groupby("FUEL", as_index=False)["COMB (km/L)"].median().sort_values(by="COMB (km/L)", ascending=False)
fuel_comb_sorted_df# 연료 유형별 CO2 배출량 중앙값 계산 및 내림차순 정렬
fuel_co2_sorted_df = df.groupby("FUEL", as_index=False)["EMISSIONS"].median().sort_values(by="EMISSIONS", ascending=False)
fuel_co2_sorted_df3