brunch

You can make anything
by writing

C.S.Lewis

by 박경아 Sep 10. 2024

효과적인 데이터 시각화를 위한 4가지 팁 (Tips)

데이터 분석이 쉬워지는 챗GPT 활용법

챗GPT의 데이터 분석 환경이조? 코드 인터프리터(데이터 분석가)에는 다양한 파이썬 라이브러리들이 설치되어 있어 데이터 분석 작업을 효율적으로 진행할 수 있는데요. 


예를 들어, 데이터를 업로드하면 데이터를 표로 보여주고 여러가지 기초 통계나 피벗 테이블을 만들 수 있는 것은 판다스(Panda) 라이브러리가 설치되어 있기 때문이구요. 그리고 데이터를 분석하는 과정에서 다양한 그래프를 그릴 수 있는 것은 대표적인 파이썬 시각화 라이브러리인 맷플랏립(Matplotlib)과 씨본(Seaborn) 라이브러리 등이 설치되어 있기 때문입니다. 


사용자가 그래프를 그려달라고 하면 챗GPT가 알아서 맷플랏립을 사용하든 씨본 라이브러리를 사용해서 코드를 작성하고 시각화된 결과물을 보여줄텐데요.



맷플랏립 vs. 씨본


맷플랏립은 파이썬에서 가장 강력하고 기본적인 시각화를 제공하는 도구이지만, 스타일을 직접 설정하지 않으면 다소 밋밋하고 기본적인 그래프가 그려집니다. 반면, 씨본은 디폴트로 좀 더 세련된 스타일을 제공하고 선형그래프(lineplot), 막대그래프(barplot) 등 그래프 함수에 다양한 인수들을 지원하여 간단한 설정으로 복잡한 시각화 작업을 할 수 있는데요.


오늘은 씨본을 활용해서 챗GPT에서 효과적으로 그래프를 그리는 방법을 소개해 보겠습니다. 실습에 사용할 데이터셋은 씨본 펭귄 데이터셋으로, 펭귄 종류, 지느러미 길이, 부리 길이, 체중, 성별, 서식지 등의 다양한 범주형과 수치형 데이터를 포함하고 있어 시각화 연습에 적합하죠.



배경 테마 및 색상 팔레트 설정하기


먼저, 펭귄 종류별로 지느러미 길이 분포를 히스토그램으로 시각화해볼께요. 씨본 라이브러리를 사용하고 기본 배경 스타일과 색상을 사용해 그려볼 거예요. 

씨본은 다섯 가지 배경 스타일을 지원하는데, 화이트, 디폴트 스타일(화이트 그리드), 다크, 다크 그리드, 그리고 틱 스타일이 있습니다. 


https://seaborn.pydata.org/tutorial/aesthetics.html

            

다양한 색상 팔레트도 지원해서 범주형 데이터에는 주로 질적 팔레트(Qualitative Palette), 수치형 컬럼에서는 연속적인 색상을 나타내는 양적 팔레트(Sequential Palette)를 사용할 수 있는데요. 


대표적인 질적 팔레트로는 기본 색상인 deep 외에 deep의 여러가지 버전인 mutedpastelbrightdark, colorblind이 있구요. 외부 컬러 팔레트인 ColorBrewer도 지원해서 Set1, Set2, Dark2, Paired 등을 사용할 수도 있습니다. 


연속적인 색상을 나타내는 양적 팔레트로는 rocket, mako, flare, crest 등이 있습니다. 


그럼, 배경은 다크 그리드를 사용하고 색상은 질적 팔레트 6가지 색상을 모두 사용해서 각각 그래프를 그려볼까요?

   

본격적으로 시각화를 하기 전에 깔끔한 화이트 혹은 다크 그리드 등 원하는 배경 스타일과 색상 팔레트를 미리 설정해 놓으면 좀 더 원하는 스타일로 그래프들을 일관성 있게 그릴 수 있을 것입니다. 



색상인수(hue) 설정하기


두 번째는 색상인수 설정하기인데요. 씨본의 그래프 함수들은 다양한 인수를 가지고 있는데 그 중 대표적인 것이 바로 hue 인수입니다. 한국어로 번역하면 '색조'라는 뜻인데요. 쉽게 말해 범주형 데이터 별로 색상을 구분해 그리고 싶을 때 사용하는 인수입니다.


앞서 펭귄 종류별로 지느러미 길이 분포가 색상이 구분된 그래프를 보셨조? 이건 히스토그램의 색상인수로 펭귄 종류가 설정되어 있어서 그런 건데요.

            

그럼, 이번엔 성별로 지느러미 길이 분포를 시각화해보겠습니다. 물론 챗GPT에게 색상인수를 성별 컬럼으로 해달라고 말해도 됩니다.

            

이렇게 색상 인수를 설정하면 펭귄 종류나 성별 등 특정 범주형 데이터별로 데이터를 구분 및 시각화하여 데이터를 더욱 다양하게 분석할 수 있죠.

  


컬럼인수(col) 인수 설정하기


세 번째 방법은 컬럼 인수를 사용하여 범주형 데이터 별로 여러 개의 서브 플롯을 그리는 것이에요. 서식지 변수를 컬럼인수로 설정하면 서식지별로 지느러미 길이 분포를 시각화할 수 있습니다. 


앞서 색상인수로 펭귄 컬럼을 사용해서 그런지 챗GPT가 알아서 색상 인수로 펭귄종류를 설정했고, 그리고 컬럼 인수로 서식지가 설정되서 서식지 별로 펭귄 종류에 따른 지느러미 길이 분포를 확인할 수 있습니다. 


씨본은 자동화된 레이아웃을 지원하여 긴 코드를 작성하지 않고도 간단히 컬럼 인수 또는 행 인수를 설정하여 다양한 서브 플롯을 생성할 수 있어요.


한글폰트 깨짐 해결하기
            

마지막으로 그래프 제목이 한글로 작성된 경우 폰트가 깨질 수 있는데, 이런 경우에는 폰트 파일을 직접 업로드하여 해결할 수 있습니다. 


네이버 글꼴 모음에서 나눔글꼴을 다운로드 받아 압축을 해제했구요. 이 가운데서 나눔고딕 폰트 하나를 챗GPT에 업로드하고 이 폰트를 사용해 달라고 하겠습니다. 그러면 챗GPT가 업로드된 파일로 파일 경로를 설정해서 깨짐 문제를 해결해 주는데요. 

            

그러나 이 방법은 특정 코드가 폰트 경로를 지원할 때만 작동하고, 예를 들어 Matplotlib에서는 업로드한 파일로 폰트 경로를 설정할 수 있어서 이렇게 해결할 수 있었구요. 또한, 이 폰트는 시스템에 영구적으로 설치된 게 아니고 임시적으로 업로드해서 사용한 것이라 필요할 때마다 새롭게 폰트를 업로드해야 한다는 점을 참고하시면 될 것 같습니다. 



이렇게 해서 씨본을 활용해 데이터 시각화를 효과적으로 하는 방법을 소개해 보았습니다. 오늘 소개한 팁들을 데이터 분석 작업에 적용해 보시구요. 자세한 내용은 아래 영상을 참고해 주세요.

https://www.youtube.com/watch?v=9i43bIWh-ZU

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari