대화식 데이터 앱을 위해 간소, 팬더 및 플롯을 결합하는 방법

저자의 이미지 | chatgpt
소개
파이썬에서 대화식 웹 기반 데이터 대시 보드 생성 간소,,, 팬더그리고 줄거리. 이 세 가지 라이브러리는 웹 개발에 대한 배경이 필요없이 정적 데이터 세트를 반응적이고 시각적으로 매력적인 응용 프로그램으로 변환하기 위해 완벽하게 협력합니다.
그러나 시작하기 전에 이해해야 할 중요한 건축 차이가 있습니다. Jupyter Notebooks에서 직접 작동하는 Matplotlib 또는 Seaborn과 같은 라이브러리와 달리 Streamlit은 명령 줄에서 실행 해야하는 독립형 웹 응용 프로그램을 만듭니다. 당신은 텍스트 기반 IDE와 같은 vs 코드로 코드를 작성할 것입니다. .py 파일그리고 그것을 사용하여 실행하십시오 sleamlit run filename.py. 노트북 환경에서 스크립트 기반 개발로의 전환은 데이터 애플리케이션을 공유하고 배포 할 수있는 새로운 가능성을 열어줍니다.
이 실습 자습서에서는 전체 판매 대시 보드를 구축하는 방법을 배웁니다. 두 가지 명확한 단계. Just Stimlit 및 Pandas를 사용하여 핵심 기능으로 시작한 다음 Plotly를 사용하여 대화식 시각화로 대시 보드를 향상시킵니다.
설정
필요한 패키지 설치 :
pip install streamlit pandas plotly
프로젝트를위한 새 폴더를 만들고 vs 코드 (또는 선호하는 텍스트 편집기)로 열 수 있습니다.
1 단계 : sleamlit + pandas 대시 보드
간소와 팬더 만 사용하여 기능 대시 보드를 구축하는 것으로 시작하겠습니다. 이것은 간소화가 대화식 웹 인터페이스를 만드는 방법과 Pandas가 데이터 필터링을 처리하는 방법을 보여줍니다.
호출 된 파일을 만듭니다 step1_dashboard_basic.py:
import streamlit as st
import pandas as pd
import numpy as np
# Page config
st.set_page_config(page_title="Basic Sales Dashboard", layout="wide")
# Generate sample data
np.random.seed(42)
df = pd.DataFrame({
'Date': pd.date_range('2024-01-01', periods=100),
'Sales': np.random.randint(500, 2000, size=100),
'Region': np.random.choice(['North', 'South', 'East', 'West'], size=100),
'Product': np.random.choice(['Product A', 'Product B', 'Product C'], size=100)
})
# Sidebar filters
st.sidebar.title('Filters')
regions = st.sidebar.multiselect('Select Region', df['Region'].unique(), default=df['Region'].unique())
products = st.sidebar.multiselect('Select Product', df['Product'].unique(), default=df['Product'].unique())
# Filter data
filtered_df = df[(df['Region'].isin(regions)) & (df['Product'].isin(products))]
# Display metrics
col1, col2, col3 = st.columns(3)
col1.metric("Total Sales", f"${filtered_df['Sales'].sum():,}")
col2.metric("Average Sales", f"${filtered_df['Sales'].mean():.0f}")
col3.metric("Records", len(filtered_df))
# Display filtered data
st.subheader("Filtered Data")
st.dataframe(filtered_df)
여기에서 사용 된 주요 유선형 방법을 분류합시다.
- st.set_page_config () 브라우저 탭 제목과 레이아웃을 구성합니다
- 세인트 사이드 바 필터 용 왼쪽 탐색 패널을 만듭니다
- St.multiselect () 사용자 선택에 대한 드롭 다운 메뉴를 생성합니다
- St.Columns () 나란히 레이아웃 섹션을 만듭니다
- st.metric () 레이블이있는 많은 숫자를 표시합니다
- St.DataFrame () 대화식 데이터 테이블을 렌더링합니다
이러한 방법은 선택이 변경되면 사용자 상호 작용을 자동으로 처리하고 앱 업데이트를 트리거합니다.
터미널에서 실행하십시오 (또는 대 코드의 통합 터미널) :
streamlit run step1_dashboard_basic.py
브라우저가 열립니다 대화식 대시 보드 표시.
사이드 바에서 필터를 변경해보십시오. 메트릭과 데이터 테이블 업데이트가 자동으로 어떻게 업데이트되는지 시청하십시오! 이것은 팬더의 데이터 조작 기능과 결합 된 유선형의 반응성 특성을 보여줍니다.
2 단계 : 대화식 시각화를 위해 줄거리를 추가하십시오
이제 Plotly의 대화식 차트를 추가하여 대시 보드를 향상시켜 봅시다. 이것은 세 가지 라이브러리가 모두 매끄럽게 어떻게 작동하는지 보여줍니다. 새 파일을 만들어 호출합시다 step2_dashboard_plotly.py :
import streamlit as st
import pandas as pd
import plotly.express as px
import numpy as np
# Page config
st.set_page_config(page_title="Sales Dashboard with Plotly", layout="wide")
# Generate data
np.random.seed(42)
df = pd.DataFrame({
'Date': pd.date_range('2024-01-01', periods=100),
'Sales': np.random.randint(500, 2000, size=100),
'Region': np.random.choice(['North', 'South', 'East', 'West'], size=100),
'Product': np.random.choice(['Product A', 'Product B', 'Product C'], size=100)
})
# Sidebar filters
st.sidebar.title('Filters')
regions = st.sidebar.multiselect('Select Region', df['Region'].unique(), default=df['Region'].unique())
products = st.sidebar.multiselect('Select Product', df['Product'].unique(), default=df['Product'].unique())
# Filter data
filtered_df = df[(df['Region'].isin(regions)) & (df['Product'].isin(products))]
# Metrics
col1, col2, col3 = st.columns(3)
col1.metric("Total Sales", f"${filtered_df['Sales'].sum():,}")
col2.metric("Average Sales", f"${filtered_df['Sales'].mean():.0f}")
col3.metric("Records", len(filtered_df))
# Charts
col1, col2 = st.columns(2)
with col1:
fig_line = px.line(filtered_df, x='Date', y='Sales', color="Region", title="Sales Over Time")
st.plotly_chart(fig_line, use_container_width=True)
with col2:
region_sales = filtered_df.groupby('Region')['Sales'].sum().reset_index()
fig_bar = px.bar(region_sales, x='Region', y='Sales', title="Total Sales by Region")
st.plotly_chart(fig_bar, use_container_width=True)
# Data table
st.subheader("Filtered Data")
st.dataframe(filtered_df)
터미널에서 실행하십시오 (또는 대 코드의 통합 터미널) :
streamlit run step2_dashboard_plotly.py
이제 완벽한 대화식 대시 보드가 있습니다!
Plotly 차트는 완전히 대화식입니다. 데이터 포인트를 가리키고 특정 기간을 확대하고 범례 항목을 클릭하여 데이터 시리즈를 표시/숨길 수 있습니다.
세 라이브러리가 함께 작동하는 방식
이 조합은 각 라이브러리가 가장 잘 처리되기 때문에 강력합니다.
팬더 모든 데이터 운영 관리 :
- 데이터 세트 작성 및로드
- 사용자 선택을 기반으로 데이터 필터링
- 시각화를위한 데이터 집계
- 데이터 변환 처리
간소 웹 인터페이스를 제공합니다.
- 대화식 위젯을 만듭니다 (다중 선택, 슬라이더 등)
- 사용자가 위젯과 상호 작용할 때 전체 앱을 자동으로 다시 실행합니다.
- 반응성 프로그래밍 모델을 처리합니다
- 열과 컨테이너로 레이아웃을 관리합니다
줄거리 풍부하고 대화식 시각화를 만듭니다.
- 사용자가 호버링, 확대 / 축소 및 탐색 할 수있는 차트
- 최소한의 코드가있는 전문적인 그래프
- Streamlit의 반응성과의 자동 통합
주요 개발 워크 플로
개발 프로세스는 간단한 패턴을 따릅니다. Code 또는 텍스트 편집기에서 코드를 작성하여 시작하여 .py 파일. 다음으로, 터미널에서 응용 프로그램을 사용하여 사용하십시오 sleamlit run filename.py브라우저에서 대시 보드가 열립니다 . 코드를 편집하고 저장할 때 간소화는 자동으로 변경 사항과 제안을 감지하여 응용 프로그램을 다시 실행합니다. 대시 보드에 만족하면 Streamlit Community Cloud를 사용하여 다른 사람과 공유 할 수 있습니다.
다음 단계
이러한 개선 사항을 시도해보십시오.
실제 데이터 추가 :
# Replace sample data with CSV upload
uploaded_file = st.sidebar.file_uploader("Upload CSV", type="csv")
if uploaded_file:
df = pd.read_csv(uploaded_file)
실제 데이터 세트에는 데이터 구조에 특정한 전처리 단계가 필요합니다. 열 이름을 조정하고, 결 측값을 처리하고, 실제 데이터 필드와 일치하도록 필터 옵션을 수정해야합니다. 샘플 코드는 템플릿을 제공하지만 각 데이터 세트에는 청소 및 준비에 대한 고유 한 요구 사항이 있습니다.
더 많은 차트 유형 :
# Pie chart for product distribution
fig_pie = px.pie(filtered_df, values="Sales", names="Product", title="Sales by Product")
st.plotly_chart(fig_pie)
Plotly의 그래프 기능의 전체 갤러리를 활용할 수 있습니다.
대시 보드를 배포합니다
대시 보드가 로컬로 작동하면 다른 사람과 공유하는 것은 Community Cloud를 통해 간단합니다. 먼저 코드를 공개 Github 저장소로 푸시하여 요구 사항 .txt 의존성을 나열하는 파일 (sleamlit, pandas, plotly). 그런 다음 GitHub 계정으로 로그인을 방문하여 저장소를 선택하십시오. Streamlit은 앱을 자동으로 빌드하고 배포하여 누구나 액세스 할 수있는 공개 URL을 제공합니다. Free Tier는 여러 앱을 지원하고 합리적인 트래픽로드를 처리하므로 대시 보드를 동료와 공유하거나 포트폴리오에서 작업을 전시하는 데 적합합니다.
결론
Streamlit, Pandas 및 Plotly의 조합은 정적 보고서에서 데이터 분석을 대화식 웹 응용 프로그램으로 변환합니다. 두 개의 파이썬 파일과 소수의 방법만으로 비싼 비즈니스 인텔리전스 도구와 경쟁하는 완전한 대시 보드를 만들었습니다.
이 튜토리얼은 데이터 과학자들이 자신의 작업을 공유 할 수있는 방법에 대한 상당한 변화를 보여줍니다. 정적 차트를 보내거나 동료가 Jupyter 노트북을 실행하도록 요구하는 대신 브라우저를 통해 누구나 사용할 수있는 웹 응용 프로그램을 만들 수 있습니다. 노트북 기반 분석에서 스크립트 기반 애플리케이션으로의 전환은 데이터 전문가가 통찰력을보다 쉽게 접근하고 영향을 줄 수있는 새로운 기회를 열어줍니다.
이러한 도구로 계속 구축 할 때 대화식 대시 보드가 조직의 기존보고를 어떻게 대체 할 수 있는지 고려하십시오. 여기서 배운 것과 동일한 원리는 실제 데이터 세트, 복잡한 계산 및 정교한 시각화를 처리하기 위해 규모가 규모입니다. 이 경영진 대시 보드, 탐색 적 데이터 도구 또는 클라이언트를 향한 응용 프로그램을 만들 든이 3- 라이브러리 조합은 전문 데이터 애플리케이션을위한 탄탄한 토대를 제공합니다.
인도에서 태어나 일본에서 자란 Vinod는 데이터 과학 및 기계 학습 교육에 대한 세계적인 관점을 제시합니다. 그는 신흥 AI 기술과 작업 전문가를위한 실질적인 구현 사이의 격차를 해소합니다. Vinod는 에이전트 AI, 성능 최적화 및 AI 엔지니어링과 같은 복잡한 주제를위한 접근 가능한 학습 경로를 만드는 데 중점을 둡니다. 그는 실용적인 기계 학습 구현에 중점을두고 라이브 세션과 개인화 된 지침을 통해 차세대 데이터 전문가를 멘토링합니다.
Post Comment