반응형

Google에서 bubble chart로 검색을 해 보았다.

 

A bubble chart is a type of chart that displays three dimensions of data. Each entity with its triplet (v1, v2, v3) of associated data is plotted as a disk that expresses two of the vi values through the disk's xy location and the third through its size.

 

해석을 하자면 버블 차트는 데이터의 세 가지 차원을 표현하는 차트 중 하나입니다. 각 엔터티는 연관된 데이터의 세 값 (v1, v2, v3)을 가지며, 이를 디스크로 표현하여 디스크의 xy 위치로 두 개의 vi 값과 크기로 세 번째 값을 나타냅니다.

 

개념과 그래프의 예시는 아래 위키피디아 링크를 가보면 된다.

https://en.wikipedia.org/wiki/Bubble_chart

 

Bubble chart - Wikipedia

From Wikipedia, the free encyclopedia Type of chart Bubble chart displaying the relationship between poverty and violent and property crime rates by state. Larger bubbles indicate higher percentage of state residents at or below the poverty level. Trend su

en.wikipedia.org

 

seaborn 패키지와 함께 그릴 수 있는 예제도 검색하면 쉽게 찾아볼 수 있다. 

https://python-graph-gallery.com/bubble-plot-with-seaborn/

 

Bubble Plot with Seaborn | The Python Graph Gallery

How to draw a bubble plot using the scatterplot function of seaborn library

python-graph-gallery.com

 위 링크의 예시를 하나 가져와보자. gapminder 데이터 패키지를 설치하면 쉽게 그려볼 수 있다. gapminder는 국가별 경제 수준과 의료 수준 동향을 정리한 DataSet으로 분석에 다양하게 쓰인다. 

 

# 라이브러리 불러오기
import matplotlib.pyplot as plt
import seaborn as sns
from gapminder import gapminder # import data set 

# 사이즈 크기 설정
plt.rcParams['figure.figsize'] = [8, 8]

# 데이터 가져오기
data = gapminder.loc[gapminder.year == 2007]
 
# 버블차트를 그리기
sns.scatterplot(data=data, x="gdpPercap", y="lifeExp", size="pop", legend=False, sizes=(20, 2000))

# 그래프 출력
plt.show()

 

[결과값]

파이썬 공부를 해 본 사람이라면 한번씩은 봤을 그 그래프다!

(1) 버블차트를 그리는 방법은 다양하다.

import matplotlib.pyplot as plt
import numpy as np

# 데이터 생성
num_points = 30
x = np.random.rand(num_points)
y = np.random.rand(num_points)
sizes = np.random.rand(num_points) * 100  # 크기 정보

# 버블 차트 그리기
plt.scatter(x, y, s=sizes, alpha=0.5)

# 그래프 설정
plt.title('Bubble Chart Example')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.grid(True)

# 그래프 표시
plt.show()

 

[결과값]

버블 차트(Bubble Chart)는 산점도(Scatter Plot)와 유사하지만, 각 데이터 포인트에 크기 정보를 추가한 그래프입니다. 각각의 데이터 포인트는 x축, y축으로 위치가 지정되고, 동시에 해당 데이터 포인트의 크기가 버블의 크기로 표현됩니다. 파이썬에서 버블 차트를 그리기 위해 주로 matplotlib 라이브러리를 사용합니다. 이 코드에서는 plt.scatter 함수를 사용하여 각 데이터 포인트를 표현하고, s 인자를 통해 크기 정보를 전달합니다. alpha 인자는 투명도를 나타내며, 0에서 1 사이의 값을 가집니다. num_points 변수를 통해 데이터 포인트의 개수를 조절하고, sizes 배열을 통해 각 데이터 포인트의 크기를 랜덤하게 생성합니다. 그 결과로 더 많은 버블이 표현된 그래프가 나타납니다. 데이터의 특성에 따라서 원하는 개수나 크기로 조절하실 수 있습니다.

 

(2) 버블차트의 색상을 다양하게 그려보자

import matplotlib.pyplot as plt
import numpy as np

# 데이터 생성
num_points = 30
x = np.random.rand(num_points)
y = np.random.rand(num_points)
sizes = np.random.rand(num_points) * 100  # 크기 정보
colors = np.random.rand(num_points)  # 색상 정보

# 버블 차트 그리기
plt.scatter(x, y, s=sizes, c=colors, cmap='viridis', alpha=0.5)

# 컬러바 추가
plt.colorbar()

# 그래프 설정
plt.title('Colored Bubble Chart Example')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.grid(True)

# 그래프 표시
plt.show()

 

[결과값]

위 코드에서는 c 매개변수를 통해 각 데이터 포인트의 색상을 설정하고, cmap 매개변수로는 사용할 컬러 맵을 지정합니다. 여기서는 'viridis' 컬러 맵을 사용하였습니다. 그리고 plt.colorbar() 함수를 사용하여 컬러바를 추가하였습니다. 컬러 맵은 matplotlib에서 제공하는 여러 가지 컬러 스키마 중에서 선택할 수 있습니다. 

 

반응형
Posted by 마르띤
,
반응형

(1) boxplot은 왜 쓸까?

박스 플롯(Box Plot)은 통계적 데이터의 요약된 시각화 도구로, 데이터의 중앙 경향, 분포, 이상치를 효과적으로 보여주는 차트입니다. 다른 이름으로는 상자 수염 그림(Box-and-Whisker Plot)이라고도 불립니다. 박스 플롯은 다음과 같은 주요 구성 요소로 이루어져 있습니다:

 

1. 상자 (Box):

- 상자의 하단 변은 데이터의 1사분위수(Q1)를 나타냅니다.

- 상자의 상단 변은 데이터의 3사분위수(Q3)를 나타냅니다.

- 상자의 중앙에 수평선은 데이터의 중앙값(median)을 나타냅니다.

 

2. 수염 (Whiskers):

- 수염은 데이터의 최솟값과 최댓값을 나타냅니다. 일반적으로 1.5배의 사분위 범위(IQR)를 벗어나는 값은 이상치로 간주됩니다.

 

3. 이상치 (Outliers):

- 수염 부분을 벗어나는 점은 이상치로 간주됩니다.

 

박스 플롯은 데이터의 분포를 쉽게 이해하고, 여러 그룹 간의 비교를 통해 통계적 특성을 시각적으로 비교할 수 있는 강력한 도구입니다. 특히, 중앙값과 사분위수를 통해 데이터의 중심 경향과 분포를 한눈에 파악할 수 있어 다양한 분야에서 널리 사용되고 있습니다.

 

(2) boxplot 한 개를 그려보자

# 라이브러리 불러오기
import matplotlib.pyplot as plt
import numpy as np

# 예제 데이터 생성
np.random.seed(10) # 난수 생성 시드 설정
data = np.random.normal(0, 1, 100) # 평균이 0이고 표준 편차가 1인 정규 분포에서 100개의 데이터 생성

# 그래프 사이즈 조정
fig = plt.figure(figsize =(10, 7))

# 박스 플롯 그리기
plt.boxplot(data)

# 그래프 표시
plt.show()

 

[결과값]

위 코드를 실행하면 평균이 0이고 표준 편차가 1인 정규 분포에서 생성된 데이터에 대한 박스 플롯이 그려진 그래프 창이 표시됩니다. 

 

(3) boxplot 여러 개를 그려보자

# 라이브러리 불러오기
import matplotlib.pyplot as plt
import numpy as np

# 예제 데이터 생성
np.random.seed(10)

data_1 = np.random.normal(10, 5, 100)
data_2 = np.random.normal(9, 10, 100)
data_3 = np.random.normal(8, 15, 100)
data_4 = np.random.normal(7, 20, 100)
data = [data_1, data_2, data_3, data_4]

# 그래프 사이즈 및 간격 조정
fig = plt.figure(figsize =(10, 7))
ax = fig.add_axes([0, 0, 1, 1])

# 박스 플롯 그리기
bp = ax.boxplot(data)

# 그래프 표시
plt.show()

 

[결과값]

네 개의 상자 플롯이 그려져 있으며, 각각의 상자 플롯은 다른 그룹에 해당합니다. 각 그룹의 중심 경향과 분포를 나타내기 위해 상자의 위치와 크기가 다릅니다. 그래프 상단의 표시는 각 그룹의 중앙값(median)을 나타냅니다. 수염은 각 그룹의 데이터의 전체 분포를 나타냅니다. 이상치가 몇몇 그룹에 존재합니다.

 

이번 포스팅이 파이썬 공부에 작은 도움이 되었기를 바랍니다.

반응형
Posted by 마르띤
,
반응형

(1) 리스트 다루기

fruits = ["사과", "바나나", "딸기", "포도"]
print("과일 목록:", fruits)

 

[결과값]

과일 목록: ['사과', '바나나', '딸기', '포도']

 

파이썬 리스트는 순서가 있는 데이터의 컬렉션으로, 여러 값을 담을 수 있는 가변(mutable)한 자료형입니다. 리스트는 대괄호 []를 사용하여 정의되며, 각 항목은 콤마 ,로 구분됩니다.

 

(2) 딕셔너리 활용하기

student = {"이름": "철수", "나이": 15, "성적": 90}
print("학생 정보:", student)

 

[결과값]

학생 정보: {'이름': '철수', '나이': 15, '성적': 90}

 

리스트는 순수가 있는 데이터의 컬렉션으로 각 항목은 콤마로 구분. 딕셔너리는 순서가 없는 데이터의 컬렉션으로 각 항목은 키와 밸류의 한 상으로 구분, 중괄호를 사용하고, 각 쌍은 콤마로 구분된다.

 

(3) 제곱근

import math

result = math.sqrt(25)
print("제곱근:", result)

 

[결과값]

제곱근: 5.0

 

(4) 예외처리

try:
    result = 10 / 0
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")

 

[결과값]

0으로 나눌 수 없습니다.

 

1.    try 블록:

-       try 키워드 아래의 블록은 예외가 발생할 수 있는 코드를 포함합니다.

-       여기서는 10 / 0이라는 수식이 있습니다. 이는 0으로 나누는 연산으로, 이는 ZeroDivisionError 예외를 발생시킵니다.

 

2.    except 블록:

-       except 키워드는 try 블록에서 발생한 예외를 처리하기 위한 블록을 나타냅니다.

-       ZeroDivisionError 0으로 나누려고 할 때 발생하는 예외입니다. 이 예외가 발생하면 해당 블록이 실행됩니다.

-       여기서는 예외가 발생했을 때 출력할 메시지를 print("0으로 나눌 수 없습니다.")로 지정했습니다.

 

3.    실행 흐름:

-       try 블록의 코드가 실행됩니다.

-       예외가 발생하면 프로그램의 흐름이 except 블록으로 이동하고, 지정된 메시지가 출력됩니다.

-       예외가 발생하지 않으면 except 블록은 건너뛰어집니다.

 

 

이 코드는 0으로 나누는 오류에 대한 처리를 담고 있습니다. 예외 처리를 통해 프로그램이 비정상적인 상황에서도 적절히 대응할 수 있도록 도와줍니다.

 

try:
    result = 10 / 2
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")

 

예외가 발생하지 않으므로 except 블록은 건너뛰어지고 아무 결과값도 나오지 않는다.

 

이번 포스팅이 많은 파이썬 공부에 작은 도움이 되었기를 바랍니다. 

반응형
Posted by 마르띤
,