내가 이전에 matplotlib을 사용한 이유는 복잡한 구문을 배우는 데 수백 시간을 "싱크"했기 때문입니다. 이로 인해 나는 "날짜 형식 지정" 또는 "두 번째 Y축 추가" 방법을 찾기 위해 StackOverflow에서 셀 수 없이 많은 밤을 보내게 되었습니다.
그러나 이제 사용하기 쉽고 잘 문서화되어 있으며 강력한 오픈 소스 Python 플로팅 라이브러리 Plotly와 같은 더 나은 선택이 있습니다. 오늘은 여러분에게 심층적인 경험을 제공하고 매우 간단한(단 한 줄이라도!) 코드로 더 나은 차트를 그릴 수 있는 방법을 배우겠습니다.
이 기사의 모든 코드는 Github에서 오픈 소스로 제공되었으며 모든 차트는 대화형입니다. Jupyter Notebook을 사용하여 확인하세요.
(Github 소스코드 주소: https://github.com/WillKoehrsen/Data-Analytics/blob/master/plotly/Plotly%20Whirlwind%20Introduction.ipynb)
(plotly로 그린 예시 차트. 이미지 출처 :plot.ly)
plotly의 Python 패키지는 d3.js를 기반으로 하는plot.js 기반의 오픈 소스 코드 라이브러리입니다. 우리가 실제로 사용하는 것은 커프스 단추라고 불리는 플롯을 캡슐화하는 라이브러리입니다. 이를 통해 플롯과 Pandas 데이터 테이블을 더 쉽게 함께 사용할 수 있습니다.
*참고: Plotly 자체는 여러 가지 제품과 오픈 소스 도구 세트를 갖춘 시각화 기술 회사입니다. Plotly의 Python 라이브러리는 무료로 사용할 수 있습니다. 오프라인 모드에서는 차트를 무제한으로 만들 수 있습니다. 온라인 모드에서는 Plotly의 공유 서비스를 사용하므로 25개의 차트만 생성하고 공유할 수 있습니다.
이 기사의 모든 시각화는 오프라인 모드에서 플롯 + 커프스 단추 라이브러리를 사용하여 Jupyter Notebook에서 수행되었습니다. pip install 커프스 단추 플롯을 사용하여 설치를 완료한 후 다음 코드를 사용하여 Jupyter에서 가져오기를 완료할 수 있습니다.
일변량 분포: 히스토그램 및 상자 플롯
일변량 분석 그래프는 종종 시작 데이터입니다. 히스토그램은 기본적으로 일변량 분포 분석에 필요한 차트 중 하나입니다(아직도 몇 가지 단점이 있음).
블로그 게시물의 총 좋아요 수를 예로 들어(원본 데이터는 Github 참조: https://github.com/WillKoehrsen/Data-Analytic/tree/master/medium) 간단한 대화형 히스토그램을 만드세요.
( .plot을 .iplot으로 변경하면 더욱 아름답게 보이는 대화형 차트를 얻을 수 있습니다! 이미지의 요소를 클릭하면 자세한 정보가 표시되고 확대 및 축소되며 이미지의 특정 부분 필터링과 같은 기능이 강조 표시됩니다(다음에 설명하겠습니다).누적 세로 막대형 차트를 그리려면 다음만 필요합니다.
Pandas 데이터 테이블에서 간단한 처리를 수행하고 막대형 차트를 생성합니다.위와 같이 이렇게 하면 플롯 + 커프스 단추 및 팬더의 기능을 통합할 수 있습니다. 예를 들어 먼저 .pivot()을 사용하여 피벗 테이블 분석을 수행한 다음 막대 차트를 생성할 수 있습니다.
예를 들어 다양한 게시 채널의 각 기사로 인해 유입된 신규 팬 수를 계산해 보세요.대화형 차트의 장점은 원하는 대로 데이터를 탐색하고 분석을 위해 하위 항목을 분할할 수 있다는 것입니다. 상자 그림은 많은 정보를 제공할 수 있지만 특정 값을 볼 수 없으면 많은 정보를 놓칠 가능성이 높습니다!
산점도는 대부분의 분석의 핵심 내용입니다. 이를 통해 시간에 따른 변수의 변화 또는 두 개 이상의 변수 간의 관계 변화를 확인할 수 있습니다.
시계열 분석
실제 데이터의 상당 부분에는 시간 요소가 있습니다. 다행스럽게도 Plotly + Cufflinks에는 시계열 시각적 분석을 지원하는 기능이 내장되어 있습니다.
내가 "데이터 과학을 향하여" 웹사이트에 게시한 기사 데이터를 예로 들어, 기사의 인기가 어떻게 변하는지 알아보기 위해 게시 시간을 지표로 사용하여 데이터 세트를 구축해 보겠습니다.
위 그림에서 우리는 한 줄의 코드로 여러 가지 작업을 수행했습니다.
아래 코드에서는 세 번째 범주 변수로 색상이 지정된 이변량 산점도를 추가합니다.
다음으로 조금 더 복잡합니다: 로그 축. 우리는 Plotly의 레이아웃 매개변수를 지정하여 이를 달성하고(다른 레이아웃에 대해서는 공식 문서 https://plot.ly/python/reference/를 참조하십시오) 포인트의 크기(크기 매개변수)와 숫자 변수 read_ratio(읽기 비율)가 바인딩됩니다. 숫자가 클수록 거품의 크기가 커집니다. 더 복잡해지고 싶다면(자세한 내용은 Github의 소스 코드 참조) 4개의 변수를 하나의 그림에 넣을 수도 있습니다! (그러나 실제로 이 작업을 수행하는 것은 권장되지 않습니다.) 전과 마찬가지로 팬더를 플롯+커프스 단추와 결합하여 많은 유용한 차트를 얻을 수 있습니다. 다음을 확인하는 것이 좋습니다. 더 많은 예제와 함수 예제가 포함된 공식 문서 또는 소스 코드. 한두 줄의 코드만으로 원래의 대화형 기능을 유지하면서 텍스트 주석, 보조선, 최적선과 같은 유용한 요소를 차트에 추가할 수 있습니다.고급 그리기 기능
다음으로 몇 가지 특별한 차트를 자세히 소개하겠습니다. 자주 사용하지 않을 수도 있지만 잘 사용하면 분명 사람들에게 깊은 인상을 줄 것입니다. 우리는 단 한 줄의 코드로 멋진 차트를 생성할 수 있는 Plotly의 Figure_factory 모듈을 사용할 것입니다!
다양한 변수 사이의 관계를 탐색하려면 산점도 행렬(SPLOM이라고도 함)이 탁월한 선택입니다.
이렇게 복잡하더라도 그래픽 또한 완전히 대화형이므로 데이터를 더 자세히 탐색할 수 있습니다.여러 수치 변수 간의 관계를 반영하기 위해 상관 관계를 계산한 다음 주석이 달린 히트 맵 형식으로 시각화할 수 있습니다.
다양한 차트 외에도 Cufflinks는 다양한 색상 테마를 제공하므로 다양한 차트 스타일 간을 쉽게 전환할 수 있습니다. 다음 두 그림은 각각 "space" 테마와 "ggplot" 테마입니다.
또한 3D 차트(표면 및 거품)도 있습니다.
연구에 관심이 있는 사용자의 경우 원형 차트를 만드는 것은 어렵지 않습니다.
Jupyter Notebook에서 이러한 차트를 생성하면 차트에 작은 링크가 나타납니다. 오른쪽 하단 모서리에 "plot.ly로 내보내기(plot.ly에 게시)"라고 표시됩니다. 이 링크를 클릭하면 "차트 워크샵"(https://plot.ly/create/)으로 이동합니다.
여기에서 최종 프레젠테이션 전에 다이어그램을 추가로 수정하고 다듬을 수 있습니다. 주석을 추가하고, 특정 요소의 색상을 선택하고, 모든 것을 정리하고, 멋진 차트를 생성할 수 있습니다. 나중에 웹에 게시하여 다른 사람이 검토할 수 있는 링크를 생성할 수도 있습니다.
차트 워크숍에서 찍은 두 장의 사진은
너무 많은 이야기를 하다 읽다 지치셨나요? 그러나 우리는 이 라이브러리의 모든 기능을 다 사용하지는 않았습니다. 공간의 제약으로 인해 더 좋은 차트와 예시가 있으니, Plotly 및 Cufflinks 공식 문서를 방문하여 하나씩 살펴보시기 바랍니다.
(미국 전역의 풍력 발전 단지 데이터를 보여주는 Plotly 대화형 지도. 출처:plot.ly)
플로팅 라이브러리를 선택할 때 가장 필요한 기능은 다음과 같습니다.
빠른 데이터 탐색을 위한 한 줄 차트
데이터 분할/조사를 위한 대화형 요소인정합니다. 플롯팅은 확실히 데이터 과학 작업에서 가장 즐거운 부분이며, 플롯팅을 통해 이러한 작업을 더욱 즐겁게 완료할 수 있습니다.
(Python으로 그리는 즐거움이 시간에 따라 어떻게 변했는지 보여주는 그래프. 출처는 datascience.com)
2022년에는 Python 그리기 라이브러리를 업그레이드하고 데이터 과학 및 시각화에 대비해야 할 때입니다. 더 강하고 더 아름다워요!
위 내용은 강력한 오픈 소스 Python 드로잉 라이브러리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!