본문 바로가기
Programming/Python

[혼만파] 4주차_혼자 만들면서 공부하는 파이썬

by 호호호호히히히히 2025. 8. 25.
728x90
반응형

 

이것은 지각의 수준을 넘어선..

공부..

그러나 어느때보다 재미있는중..

 

Chapter 07. (07-3) 시가총액 데이터 시각화하기

 

시가총액 데이터 지표화

from pathlib import Path

import pandas as pd

from step_1_1 import OUT_DIR  # 모듈 불러오기
from step_2_2 import OUT_2_2

OUT_3_1 = OUT_DIR / f"{Path(__file__).stem}.csv"


def top_kospi_company(df_raw: pd.DataFrame, prop: float) -> pd.DataFrame:
    df_raw["시가총액"] = df_raw["시가총액"].str.replace(",", "").astype(int)
    df_raw["조단위"] = df_raw["시가총액"] / 10_000  # 억단위를 조단위로 변경
    df_raw = df_raw.sort_values("시가총액", ascending=False)  # 내림차순 정렬
    df_raw["누적비율"] = df_raw["시가총액"].cumsum() / df_raw["시가총액"].sum()
    df_sliced = df_raw.loc[df_raw["누적비율"] <= prop]  # 데이터프레임 슬라이싱
    return df_sliced.filter(["종목명", "시가총액", "조단위", "누적비율"])  # 열 필터링


if __name__ == "__main__":
    df_raw = pd.read_csv(OUT_2_2)
    df_top = top_kospi_company(df_raw, 0.5)  # 시가총액 기준 상위 50% 종목 추출
    df_top.to_csv(OUT_3_1, index=False)  # CSV 파일로 저장

 

시가총액 데이터 시각화

 

ModuleNotFoundError: No module named 'plotly'

오류가 나는 경우 plotly 부터 설치 필요 합니다.

pip install -U playwright kaleido nbformat pandas plotly

 

from pathlib import Path

import pandas as pd
import plotly.express as px

from step_1_1 import OUT_DIR  # 이전 모듈 불러오기
from step_3_1 import OUT_3_1

df_raw = pd.read_csv(OUT_3_1)
fig = px.treemap(
    df_raw,  # 기준 데이터
    path=["종목명"],  # '종목명' 기준으로 데이터 분류
    values="조단위",  # '조단위' 기준으로 종목별 면전 계산
)
fig.update_traces(
    marker=dict(
        cornerradius=5,  # 모서리 둥글게
        colorscale="Plasma",  # 색상
        pad=dict(t=10, r=10, b=10, l=10),  # 트리맵 여백 지정
    ),
    texttemplate="<b>%{label}</b><br>%{value:,.0f}조원",  # 종목명, 시가총액 표시
    textfont_size=30,  # 폰트 크기
)
fig.update_layout(margin=dict(t=0, r=0, b=0, l=0))  # 이미지 여백 지정
img_path = OUT_DIR / f"{Path(__file__).stem}.png"  # 이미지 경로
fig.write_image(img_path, width=1600, height=900, scale=2)  # 이미지 파일로 저장

반응형

댓글