WeniVooks

검색

essentials-numpy-pandas

Pandas 시각화

1. 판다스 시각화

Pandas는 DataFrame이나 Series 객체에서 직접 plot() 메서드를 호출하여 다양한 유형의 그래프를 쉽게 생성할 수 있습니다. DataFrame의 컬럼명을 자동으로 레이블로 사용하여 편리합니다. Matplotlib을 기반으로 하여 유연성이 높고, 특히 시계열 데이터 시각화에 강점이 있습니다.

Matplotlib은 뒤에 챕터에 있으므로 여기서는 상세한 옵션값 보다는 Pandas의 plot() 메서드를 사용하여 간단한 시각화를 수행하는 방법을 살펴보겠습니다.

위니북스에서는 그래프에서 한글을 지원하지 않습니다. 또한 위니북스에서는 show()를 사용하지만 코랩 환경에서는 plt.show()를 사용하여 그래프를 출력해야 합니다. 붙여넣기를 할 수 있도록 항상 주석으로 plt.show()를 함께 제공해드리겠습니다. 아래 코드를 실행하고 진행해주세요.

def show(n): el = js.document.querySelectorAll('py-repl')[n] display(plt.gcf(), target=el.getAttribute('id')+'-1') print('실행 완료')
1.1 기본 선 그래프 그리기

먼저 간단한 선 그래프를 그려보겠습니다. 이 예제에서는 월별 커피 판매량 데이터를 시각화합니다.

import pandas as pd import matplotlib.pyplot as plt # 데이터 생성 data = {'month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'], 'sales': [100, 120, 140, 130, 150, 170]} df = pd.DataFrame(data) # 그래프 그리기 # 그래프의 크기를 설정 plt.figure(figsize=(10, 6)) # 선 그래프 그리기 plt.plot(df['month'], df['sales'], marker='o') # 제목과 축 레이블 추가 plt.title('Monthly Coffee Sales') # x축과 y축 레이블 추가 plt.xlabel('Month') plt.ylabel('Sales') # 격자 추가 plt.grid(True) # 위니북스 환경 show(1) # Colab 환경 # plt.show()

위 코드는 월별 커피 판매량 데이터를 시각화하는 선 그래프를 그리는 예제입니다. 뒤에서 배울 matplotlib의 기본적인 사용법을 살펴보았습니다. 다른 라이브러리와도 호환이 잘 된다는 것을 알 수 있습니다.

1.2 Pandas를 이용한 선 그래프 그리기

Pandas의 DataFrame 객체는 plot() 메서드를 제공합니다. 이를 사용하면 Matplotlib을 직접 사용하지 않고도 간단하게 그래프를 그릴 수 있습니다. 위의 예제를 Pandas를 사용하여 다시 작성해보겠습니다.

import pandas as pd import matplotlib.pyplot as plt # 데이터 생성 data = {'month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'], 'sales': [100, 120, 140, 130, 150, 170]} df = pd.DataFrame(data) # 선 그래프 그리기 ax = df.plot(x='month', y='sales', marker='o', title='Monthly Coffee Sales', grid=True, figsize=(10, 6)) # 위니북스 환경 show(2) # Colab 환경 # plt.show()

2. 다양한 그래프 유형

2.1 막대 그래프 (Bar Plot)
import pandas as pd import matplotlib.pyplot as plt # 데이터 생성 data = {'Coffee': ['Espresso', 'Latte', 'Cappuccino', 'Americano', 'Mocha'], 'Sales': [150, 200, 180, 220, 130]} df = pd.DataFrame(data) # 막대 그래프 그리기 ax = df.plot(x='Coffee', y='Sales', kind='bar', figsize=(10, 6), title='Coffee Sales by Type') plt.xlabel('Coffee Type') # x축 레이블을 45도 회전 plt.xticks(rotation=45) plt.ylabel('Sales') # 위니북스 환경 show(3) # Colab 환경 # plt.show()
2.2 히스토그램 (Histogram)
import pandas as pd import numpy as np import matplotlib.pyplot as plt # 데이터 생성 (100번의 주사위 던지기) np.random.seed(0) data = np.random.randint(1, 7, 100) df = pd.DataFrame(data, columns=['Dice']) # 히스토그램 그리기 ax = df.plot(kind='hist', bins=6, rwidth=0.5, color='skyblue', alpha=0.7, figsize=(10, 6), title='Dice Roll Histogram') # 위니북스 환경 show(4) # Colab 환경 # plt.show()
2.3 산점도 (Scatter Plot)
import pandas as pd import numpy as np import matplotlib.pyplot as plt # 데이터 생성 np.random.seed(0) data = {'Price': np.random.uniform(3, 7, 50), 'Sales': np.random.uniform(100, 200, 50) - 10 * np.random.uniform(3, 7, 50)} # 가격이 높을수록 판매량 감소 df = pd.DataFrame(data) # 산점도 그리기 ax = df.plot(x='Price', y='Sales', kind='scatter', figsize=(10, 6), title='Coffee Price vs Sales') plt.xlabel('Price ($)') plt.ylabel('Sales') # 위니북스 환경 show(5) # Colab 환경 # plt.show()
2.4 파이 차트 (Pie Chart)
import pandas as pd import matplotlib.pyplot as plt # 데이터 생성 data = {'Coffee': ['Espresso', 'Latte', 'Cappuccino', 'Americano', 'Mocha'], 'Sales': [150, 200, 180, 220, 130]} df = pd.DataFrame(data) # 파이 차트 그리기 ax = df.plot(y='Sales', kind='pie', labels=df['Coffee'], autopct='%1.1f%%', startangle=90, shadow=True, figsize=(10, 6), title='Coffee Sales Distribution') plt.ylabel('') # y 레이블 제거 # 위니북스 환경 show(6) # Colab 환경 # plt.show()

Pandas의 plot() 메서드는 내부적으로 Matplotlib을 사용하지만, 사용자가 직접 Matplotlib 코드를 작성할 필요 없이 간단하게 그래프를 생성할 수 있게 해줍니다. 더 자세한 내용은 Matplotlib 챕터에서 다루겠습니다.

{"packages":["numpy","pandas","matplotlib","lxml"]}
4.4 Pandas DataFrame 25장 Pandas 활용