반응형
요즘 급 영논문 작성 때문에 지하철 혼잡도를 시각화하고 있는데
거기서 melt()라는 함수가 헷갈려서 한 번 정리해볼 까 한다
1. melt()란?
melt()는 Pandas 라이브러리에서 제공하는 함수로, **wide-format(넓은 형식)**의 데이터를 **long-format(긴 형식)**으로 변환하는 데 사용
기본적으로 여러 개의 컬럼이 개별적인 정보를 나타내는 경우, 이를 하나의 컬럼으로 변환하여 데이터를 더 직관적이고 분석하기 쉽게 만드는 역할
- 기본 사용
pd.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value')
- frame: 변환할 데이터프레임
- id_vars: 그대로 유지할 컬럼 (예: 기준 변수)
- value_vars: 변환할 컬럼 목록
- var_name: 컬럼명을 나타낼 변수 이름
- value_name: 값이 들어갈 컬럼 이름
2. melt()가 필요한 이유
Pandas에서 melt()를 사용하는 이유는 주로 wide-format(넓은 형식) 데이터를 long-format(긴 형식)으로 변환하여 데이터 분석 및 시각화를 용이하게 하기 위함
- melt()를 사용하지 않은 경우
변환 전 데이터 (wide-format) | 평균혼잡도 | 문화공간여부 | 휠체어리프트여부 | 만남의장소여부 | 환승주차장여부 | 자전거보관소여부 | ... |---|---|---|---|---|---| | 32 | 1 | 0 | 1 | 1 | 0 | | 27 | 0 | 0 | 1 | 0 | 0 | | 45 | 1 | 1 | 0 | 1 | 1 |
-> 이 상태에서 박스 플롯을 그리면 문제가 발생
sns.boxplot(x=facility_cols, y='평균혼잡도', data=df)
3. melt() 적용 전과 후의 데이터 비교
facility_cols = ['문화공간여부', '휠체어리프트여부', '만남의장소여부', '환승주차장여부', '자전거보관소여부',
'엘리베이터여부', '기차예매역여부', '무인민원발급기여부', '환전키오스크여부', '수유실여부']
facility_melted = df.melt(id_vars=['평균혼잡도'], value_vars=facility_cols,
var_name='편의시설', value_name='유무')
print(facility_melted.head())
4. melt()를 활용한 박스 플롯 시각화
plt.figure(figsize=(12, 6))
sns.boxplot(x='편의시설', y='평균혼잡도', hue='유무', data=facility_melted, palette='coolwarm')
plt.xticks(rotation=45)
plt.title('편의시설 유무에 따른 평균 혼잡도 비교 (박스 플롯)')
plt.xlabel('편의시설 종류')
plt.ylabel('평균 혼잡도')
plt.legend(title='편의시설 유무', loc='upper right')
plt.show()
이렇게 melt를 활용하여
아래와 같은 박스플롯을 생성할 수 있엇음
반응형
'데이터 분석' 카테고리의 다른 글
vscode 소스 제어 활용 / 병합 충돌 해결하기 (0) | 2025.02.06 |
---|---|
주피터 마크다운 정리 ( 제목, 글꼴, 목록, 링크, 코드, 구분선, 테이블, 체크박스 등) (0) | 2024.12.24 |