Plotly
plotly를 사용해서 그래프를 그려보기로 하였다.
plotly는 조금 더 깔끔하고 인터렉티브한 시각화 라이브러리이다.
plotly를 사용하여 2013년 - 2022년의 전체 발전량에서 에너지원별로 차지하는 비중을 시각화 하였다.
① 설치 - pandas 정의와 폰트 설정도 해주기
pip install plotly
② 데이터 전처리
import pandas as pd
df = pd.read_csv('datapre/에너지원별_발전량.csv',encoding='euc-kr')
합계를 제외한 에너지원들의 발전량만 시각화하기 위해 에너지원별(1) 이 합계인 행을 전체 삭제하는 구문을 사용하였고
컬럼명도 간결하게 바꿔주었다.
③ 막대 그래프로 시각화
hover 기능도 있고 label을 클릭하면 해당 label 데이터만 보여주는 등의 효과가 있다.
html로 저장하여 보여줄 수 있다.
아래 코드를 사용하면 html로 저장이 된다.
import plotly.express as px
import plotly.offline as pyo
# 예시 데이터프레임 생성
# df_temp = ...
# Plotly 그래프 생성
fig = px.bar(df_temp, x="연도", y="발전량(GWh)", color="에너지원", hover_data=["에너지원"], width=700, height=500)
fig.update_layout(bargap=0.5)
fig.update_xaxes(type='category')
# 그래프를 HTML 파일로 내보내기
pyo.plot(fig, filename='output_plot.html', auto_open=False)
Streamlit
< Streamlit >
- 라이브러리 : 설치해야함, pip install streamlit-audiorecorder
- 데이터분석용으로 데모 시연용으로 간혹 사용되는 웹애플리케이션 라이브러리.
- .py의 파이썬으로 데이터 시각화, 웹애플리케이션을 빠르고 쉽게 만들 수 있는 오픈 소스 라이브러리
- 스트림릿을 사용하면, 데이터과학자, 엔지니어, 개발자 등이 빠르게 웹을 구축할 수 있고,
사용자 인터페이스(UI)를 만들기 위한 복잡한 코드 작성 없이 pthon 코드로 작성 가능
< Streamlit 특징 >
1. 단순한 스크립트 사용
- 텍스트, 그래프, 표, 위젯 함수 등과 같은 요소를 사용해서 웹을 만들 수 있음
2. 실시간 업데이트
- 코드를 수정하면 브라우저에서 새로고침을 통해 수정사항이 실시간으로 업데이트 됨
- 개발자가 빠르게 프로토타입을 만들고 수정하기 용이함
3. 대화형 위젯 함수
- 스트림릿은 대화형 위젯 함수을 사용하여, 사용자와 상호 작용할 수 있는 요소를 제공함
- 슬라이더, 버튼, 체크박스 등의 위젯 함수를 사용하여 사용자 입력을 처리할 수 있음
4. 데이터 시각화
- 다양한 데이터 시각화 라이브러리(예:matplotlib, plotly 등)과 통합되어 있음
- 데이터를 시각화하고 웹 브라우저를 통해 사용자에게 보여줄 수 있음
5. 레이아웃 및 스타일
- 스트림릿을 사용하여 화면 레이아웃 및 스타일을 정의할 수 있음
- html에서 사용하는 css 스타일 코드를 사용해서 적용 가능함
① 라이브러리 정의
import streamlit as st
② jupyter notebook ( ipynb) 파일에 보여주고자하는 그래프(내용) 관련 코드 작성하기
st.title("<데이터 시각화>")
▶ 제목 설정
생성이 완료되고 랜더링이 되면 DeltaGenerator() 가 뜬다.
DeltaGenerator() : 스트림릿 어플리케이션 내에서 텍스트, 데이터 , 그래프 등의 컨텐츠를 생성하고 랜더링하는데 사용되는 객체
이 클래스는 스트림릿 웹 애플리케이션의 컨텐츠를 동적으로 업데이트하고 조직하는데 사용되는 중요한 클래스이다.
st.write("streamlit 시각화 애플리케이션!")
st.text("이것은 일반 텍스트 입니다.")
▶ 텍스트 입력 / 일반텍스트 추가
st.header("Streamlit(스트림릿)을 시작하겠습니다.")
st.subheader("웹 앱을 만들기 위한 스트림릿 작은 제목 입니다.")
▶ 큰 제목 / 작은 제목
[ 그래프 보여주기 ]
▶ matplotlib 의 pyplot 사용시
st.pyplot(fig)
▶ plotly 사용시
st.plotly_chart(fig)
### 버튼이 클릭이 되면 처리해라라는 명령으로 처리..
# - True 아니면 False의 조건처리로 명령 처리함
# - 버튼이 클릭이 되면 if 조건은 참이되어서, 실행이 됩니다.
if st.button("더하기 버튼") :
result = 2 + 2
# - 더한값을 웹브라우저에 출력하기
st.write(f"2 + 2 = {result}")
▶ 버튼 생성하기
[ 사용자 입력창 ]
### 사용자 입력을 받기위한 텍스트 박스 만들기
# - name = text_input(표시할 라벨, value값) : 입력된 value값을 리턴해주는 함수
user_input = st.text_input("사용자 입력 : ", "기본값")
# user_input
▶ 입력받기
### 웹페이지에 출력하기
st.write(f"사용자 입력값 : {user_input}")
▶ 출력하기
③ streamlit 실행하기
1) ipynb 파일을 py로 변환하기
- Dataspell의 경우에는 파일 리팩터링 > Python으로 변환
2) 프롬프트(터미널) 에서 가상환경 활성화 > py 파일 위치로 디렉토리 이동 > streamlit run 파일명.py
streamlit 사용하여 생성된 웹브라우저에서의 화면
'Project' 카테고리의 다른 글
[데이터분석 미니프로젝트] plotly 그래프 생성하기 (2) | 2023.12.11 |
---|---|
[데이터분석 미니프로젝트] - 웹크롤링 데이터 워드 클라우드 (3) | 2023.12.11 |
[데이터분석 미니프로젝트] - 에너지원별 발전량 분석 / 시각화 (2) | 2023.12.09 |
[데이터분석 미니프로젝트] - 수질데이터 시각화 / 에너지원별 발전량 데이터 전처리 (0) | 2023.12.08 |
[데이터분석 미니프로젝트] - 수질 정보 데이터 전처리 (4) | 2023.12.07 |