Python, Taipy & Google 시트로 매끄러운 데이터 대시 보드 만들기

Python, Taipy & Google 시트로 매끄러운 데이터 대시 보드 만들기

Python, Taipy & Google 시트로 매끄러운 데이터 대시 보드 만들기Python, Taipy & Google 시트로 매끄러운 데이터 대시 보드 만들기
저자의 이미지 | 표의 문자

소개

데이터는 기업이 특히 결정을 내릴 때 귀중한 통찰력을 얻을 수있는 수단을 제공하기 때문에 모든 비즈니스에 중요한 자원이되었습니다. 데이터가 없으면 결정은 가장 효과적인 접근법이 아닌 본능과 운에만 의존합니다.

그러나 방대한 양의 원시 데이터는 이해하기 어렵습니다. 직접적인 통찰력을 제공하지 않으며 추가 처리가 필요합니다. 그렇기 때문에 많은 사람들이 데이터 대시 보드를 사용하여 우리가 가진 원시 데이터를 요약, 시각화 및 탐색하는 데 의존하는 이유입니다. 세련된 대시 보드를 개발함으로써 비 기술적 사용자가 데이터로부터 쉽게 통찰력을 얻을 수있는 간단한 방법을 제공 할 수 있습니다.

그렇기 때문에이 기사는 활용하여 매끄러운 데이터 대시 보드를 만드는 방법을 탐색 할 것입니다. 파이썬,,, 타이피그리고 Google 시트.

들어가자.

매끄러운 데이터 대시 보드 개발

Python을 통해 Google 시트에 액세스하기 위해 필요한 모든 자격 증명을 준비하여 튜토리얼을 시작합니다. 먼저 Google 계정을 만들고 Google 클라우드 콘솔. 그런 다음 APIS & Services> Library로 이동하여 Google Sheets API 및 Google Drive API를 활성화해야합니다.

API를 활성화 한 후 APIS & Services> Credentials로 돌아가 자격 증명> 서비스 계정을 작성하십시오. Google 시트를 읽고 쓸 수 있도록 지시 사항을 따르고 편집자 또는 소유자와 같은 역할을 할당하십시오. 방금 만든 서비스 계정을 선택한 다음 키로 이동하십시오> 키 추가> 새 키 생성. JSON을 선택하고 다운로드하십시오 credentials.json 파일. 어딘가에 저장하고 파일을 열십시오. 그런 다음 이메일 값을 아래에서 복사하십시오 client_email.

데이터 세트의 경우 다음을 사용합니다 심장 데이터 세트 ~에서 Kaggle 예로. Google 드라이브에 파일을 저장하고 Google 시트로 열립니다. Google Sheets 파일에서 파일> 공유 버튼으로 이동하여 방금 복사 한 이메일을 추가하십시오. 마지막으로, URL을 통해 나중에 데이터에 액세스하므로 Google Sheets 파일의 URL을 복사하십시오.

좋아하는 IDE를 열면 다음과 같이 프로젝트를 구성합니다.

taipy_gsheet/
│
├── config/
│   └── credentials.json         
├── app.py                   
└── requirements.txt

필요한 모든 파일을 만들면 대시 보드를 개발하기 시작합니다. 우리는 응용 프로그램 프레임 워크에 Taipy를 사용할 것입니다. 팬더 데이터 조작을 위해 gspread 그리고 OAUTH2CLIENT Google Sheets API와 상호 작용하려면 및 줄거리 시각화를 위해. 에서 requirements.txt 파일, 다음 패키지를 추가하십시오.

taipy
pandas
gspread
oauth2client
plotly

이것들은 튜토리얼에 필요한 라이브러리이며 환경에 설치합니다. 가상 환경을 사용하여 주요 환경이 깨지는 것을 잊지 마십시오. 우리는 또한 Python 3.12를 사용할 것입니다. 이 기사가 작성된 시점에서 이것은 현재 위의 라이브러리에서 작동하는 파이썬 버전입니다.

다음 명령을 사용하여 라이브러리를 설치하십시오.

pip install -r requirements.txt

설치가 성공하면 응용 프로그램을 준비합니다. ~ 안에 app.py대시 보드를 설정하기위한 코드를 작성합니다.

먼저 응용 프로그램 개발에 사용할 필요한 모든 라이브러리를 가져옵니다.

import pandas as pd
import gspread
import plotly.express as px
import taipy as tp
from taipy import Config
from taipy.gui import Gui
import taipy.gui.builder as tgb

다음으로 다음 코드를 사용하여 Google 시트의 데이터를로드합니다. 변경 SHEET_URL 실제 데이터 URL을 사용한 값. 또한 데이터가 잘 작동하도록 데이터를 전처리 할 것입니다.

SHEET_URL = "
client = gspread.service_account(filename="config/credentials.json")
df_raw = pd.DataFrame(client.open_by_url(SHEET_URL).get_worksheet(0).get_all_records())
df_raw["sex"] = pd.to_numeric(df_raw["sex"], errors="coerce").fillna(0).astype(int)
df_raw["sex_label"] = df_raw["sex"].map({0: "Female", 1: "Male"})

그런 다음 Taipy로 대시 보드를 준비합니다. Taipy는 프론트 엔드 및 백엔드 개발을 다루는 데이터 중심 애플리케이션을위한 오픈 소스 라이브러리입니다. 라이브러리를 사용하여 Taipy에서 사용할 수있는 기본 기능으로 데이터 대시 보드를 작성하겠습니다.

아래 코드에서는 사용자가 What-IF 분석을 위해 실행할 수있는 파이프 라인 인 시나리오를 개발할 것입니다. 본질적으로 파이프 라인으로 전달할 수있는 다양한 매개 변수를 실험하기위한 프레임 워크입니다. 예를 들어, 성 필터의 입력으로 평균 연령에 대한 시나리오를 준비하는 방법은 다음과 같습니다.

def compute_avg_age(filtered_df: pd.DataFrame, gender_filter: str) -> float:
    data = (
        filtered_df
        if gender_filter == "All"
        else filtered_df[filtered_df["sex_label"] == gender_filter]
    )
    return round(data["age"].mean(), 1) if not data.empty else 0

filtered_df_cfg = Config.configure_data_node("filtered_df")
gender_filter_cfg = Config.configure_data_node("gender_filter")
avg_age_cfg = Config.configure_data_node("avg_age")

task_cfg = Config.configure_task(
    "compute_avg_age", compute_avg_age, [filtered_df_cfg, gender_filter_cfg], avg_age_cfg
)
scenario_cfg = Config.configure_scenario("cardiac_scenario", [task_cfg])
Config.export("config.toml")

나중에 시나리오를 다시 방문하지만 성별 선택 자체와 기본 상태를 준비하겠습니다.

gender_lov = ["All", "Male", "Female"]
gender_selected = "All"
filtered_df = df_raw.copy()
pie_fig = px.pie()
box_fig = px.box()
avg_age = 0

다음으로, 우리는 사용자가 성별을 선택하거나 시나리오를 제출하는 등 대시 보드와 상호 작용할 때 변수 및 데이터 시각화를 업데이트하는 기능을 만듭니다.

def update_dash(state):
    subset = (
        df_raw if state.gender_selected == "All"
        else df_raw[df_raw["sex_label"] == state.gender_selected]
    )
    state.filtered_df = subset
    state.avg_age = round(subset["age"].mean(), 1) if not subset.empty else 0

    state.pie_fig = px.pie(
        subset.groupby("sex_label")["target"].count().reset_index(name="count"),
        names="sex_label", values="count",
        title=f"Target Count -- {state.gender_selected}"
    )
    state.box_fig = px.box(subset, x="sex_label", y="chol", title="Cholesterol by Gender")

def save_scenario(state):
    state.scenario.filtered_df.write(state.filtered_df)
    state.scenario.gender_filter.write(state.gender_selected)
    state.refresh("scenario")
    tp.gui.notify(state, "s", "Scenario saved -- submit to compute!")

기능이 준비되면 아래 코드와 함께 기본 구성으로 프론트 엔드 대시 보드를 준비합니다.

with tgb.Page() as page:
    tgb.text("# Cardiac Arrest Dashboard")
    tgb.selector(value="{gender_selected}", lov="{gender_lov}",
                 label="Select Gender:", on_change=update_dash)

    with tgb.layout(columns="1 1", gap="20px"):
        tgb.chart(figure="{pie_fig}")
        tgb.chart(figure="{box_fig}")

    tgb.text("### Average Age (Live): {avg_age}")
    tgb.table(data="{filtered_df}", pagination=True)

    tgb.text("---")
    tgb.text("## Scenario Management")
    tgb.scenario_selector("{scenario}")
    tgb.selector(label="Scenario Gender:", lov="{gender_lov}",
                 value="{gender_selected}", on_change=save_scenario)
    tgb.scenario("{scenario}")
    tgb.scenario_dag("{scenario}")
    tgb.text("**Avg Age (Scenario):**")
    tgb.data_node("{scenario.avg_age}")
    tgb.table(data="{filtered_df}", pagination=True)

위의 대시 보드는 간단하지만 선택에 따라 변경됩니다.

마지막으로 다음 코드로 오케스트레이션 프로세스를 준비합니다.

if __name__ == "__main__":
    tp.Orchestrator().run()
    scenario = tp.create_scenario(scenario_cfg)
    scenario.filtered_df.write(df_raw)
    scenario.gender_filter.write("All")
    Gui(page).run(title="Cardiac Arrest Dashboard", dark_mode=True)

코드가 준비되면 다음 명령으로 대시 보드를 실행합니다.

자동으로 대시 보드가 브라우저에 나타납니다. 예를 들어, 다음은 시각화 및 성별 선택이 포함 된 간단한 심정지 대시 보드입니다.

아래로 스크롤하는 경우 시나리오 파이프 라인이 표시되는 방법이 있습니다. 성별을 선택하고 시나리오를 제출하여 평균 연령의 차이점을 확인할 수 있습니다.

이것이 몇 가지 구성 요소로 매끄러운 데이터 대시 보드를 구축 할 수있는 방법입니다. 대시 보드 요구에 적합한 시각화 및 기능을 추가하려면 Taipy 문서를 탐색하십시오.

마무리

데이터는 모든 회사가 필요로하는 리소스이지만 데이터로부터 통찰력을 얻는 것은 시각화되지 않으면 더 어렵습니다. 이 기사에서는 Python, Taipy 및 Google Sheets를 사용하여 세련된 데이터 대시 보드를 만들었습니다. Google 시트의 데이터에 연결하는 방법을 보여주고 Taipy 라이브러리를 활용하여 대화식 대시 보드를 구성했습니다.

이것이 도움이 되었기를 바랍니다!

Cornellius Yudha Wijaya 데이터 과학 보조 관리자 및 데이터 작성자입니다. 그는 Allianz Indonesia에서 풀 타임으로 일하는 동안 소셜 미디어 및 작문 미디어를 통해 Python과 데이터 팁을 공유하는 것을 좋아합니다. Cornellius는 다양한 AI 및 기계 학습 주제에 대해 글을 씁니다.

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다