[데이터분석] 탐색적 데이터분석- 상관관계 그래프

정만·2025년 4월 11일

데이터분석

목록 보기
61/61

상관관계 사용 그래프 타입

  • Heatmap 그래프
  • 산점도(Scatter) 그래프

히트맵 그래프 예시

import pandas as pd
doc = pd.read_csv("COVID-19-master/csse_covid_19_data/csse_covid_19_daily_reports/04-01-2020.csv", encoding='utf-8-sig')
doc.corr(numeric_only=True)

그래프 이해하는법

corr(method=상관계수): 각 속성간 상관 관계 확인하기
피어슨 상관계수는 선형 상관 관계를 조사하며, 일반적으로
+1에 가까우면, 양의 선형 상관 관계
0에 가까우면 상관관계가 없고
-1에 가까우면 음의 선형 상관 관계를 가진다라고 해석한다.

plotly expree를 사용하여 히트맵 그래프를 만들어보자.

doc2 = doc.corr(numeric_only=True)
import plotly.express as px
fig_px = px.imshow(
    doc2,
    text_auto=True,                # 각 셀에 값 자동 표시
    aspect="auto",                 # 가로세로 비율 자동 조정
    title="Heatmap (Plotly Express)"
)
fig_px.show()

그래프 옵션

text_auto
:각 셀 안에 해당하는 값을 자동으로 텍스트로 표시.

  • True: 모든 셀에 값이 자동으로 표시한다.
  • False: 셀에 값을 표시하지 않는다.

aspect
: 히트맵의 가로세로 비율(aspect ratio)을 조정.

  • auto: 데이터의 실제 비율에 따라 자동으로 조정.

title
: 그래프의 제목을 설정.

Plotly Graph Objects를 사용하여 히트맵 생성하자.

import plotly.graph_objects as go


fig = go.Figure()

# add_trace()를 사용하여 Heatmap trace 추가
fig.add_trace(
    go.Heatmap(
        z=doc2.values,             # 히트맵에 사용될 데이터 (2D 배열)
        x=doc2.columns,            
        y=doc2.index,            
        colorscale='Viridis',      # 컬러 스케일 설정 
        colorbar=dict(
            title="Value"          # 컬러바 제목
        ),
        text=doc2.values,          # 각 셀에 실제 데이터 값을 텍스트로 추가
        texttemplate='%{z:.2f}',    # 셀 내부에 소수점 둘째 자리까지 포맷팅하여 표시
        hovertemplate='X: %{x}<br>Y: %{y}<br>Value: %{z:.2f}<extra></extra>'  # hover 시 표시 형식
    )
)

# 레이아웃 업데이트: 제목 설정
fig.update_layout(title="Heatmap (Plotly Graph Objects)")
fig.show()

산점도 그래프 (Scatter)

예시로 확인해보자.

import pandas as pd
doc = pd.read_csv("COVID-19-master/csse_covid_19_data/csse_covid_19_daily_reports/04-01-2020.csv", encoding='utf-8-sig')

그래프가 우상향한다면, 두 feature 간 관계가 있다고 볼 수 있다.

import plotly.express as px

fig_px = px.scatter(
    doc,               
    x="Confirmed",       # x축에 'Confirmed'(확진자 수) 
    y="Active",          # y축에 'Active'(격리/치료 중 환자 수) 
    title="Scatter Plot (Plotly Express)"  # 그래프 제목
)

# 2. 레이아웃 템플릿을 'seaborn'으로 적용 
# https://plotly.com/python/templates/
fig_px.update_layout(template="seaborn")

# 3. 그래프 표시
fig_px.show()

profile
멋있는 어른이 되고싶은 정만이의 벨로그

0개의 댓글