데이터 시각화는 데이터 분석의 중요한 부분이며, 특히 실시간 데이터의 시각화는 데이터를 신속하게 인사이트로 변환하는 데 많은 도움을 줍니다. 이번 포스트에서는 Pandas와 Matplotlib을 사용하여 간단한 실시간 데이터 시각화 미니 프로젝트를 진행해 보겠습니다. 이를 통해 실시간 데이터를 수집하고, 처리하고, 시각화하는 과정을 익힐 수 있습니다.

필요한 라이브러리 설치하기

먼저 필요한 라이브러리를 설치해야 합니다. Pandas와 Matplotlib, 그리고 데이터를 실시간으로 가져오기 위해 requests 라이브러리를 사용할 것입니다. 아래의 명령어를 통해 설치할 수 있습니다.

pip install pandas matplotlib requests

실시간 데이터 수집

여기서는 예시로 JSONPlaceholder라는 무료 REST API를 활용하여 사용자 정보를 실시간으로 수집하겠습니다. 아래 코드는 일정 간격으로 API에서 데이터를 받아오는 코드입니다.

import requests
import pandas as pd
import time

def fetch_data():
    url = 'https://jsonplaceholder.typicode.com/users'
    response = requests.get(url)
    data = response.json()
    return pd.DataFrame(data)

def collect_real_time_data():
    while True:
        df = fetch_data()
        print(df[['name', 'email']])
        time.sleep(10)  # 10초마다 데이터 수집

위 코드에서 fetch_data() 함수는 API에서 사용자 정보를 받아와 Pandas DataFrame으로 변환합니다. collect_real_time_data() 함수는 이 데이터를 10초마다 수집하여 콘솔에 출력합니다.

데이터 시각화

이제 수집한 데이터를 시각화해 보겠습니다. 사용자 수를 시각화하는 간단한 바 차트를 만들어 보겠습니다. 다음 코드를 추가합니다.

import matplotlib.pyplot as plt

def plot_data(df):
    plt.figure(figsize=(10, 5))
    plt.bar(df['name'], range(len(df)), color='skyblue')
    plt.xlabel('User Names')
    plt.ylabel('Index')
    plt.title('User Names from JSONPlaceholder')
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.show()

def collect_and_plot():
    while True:
        df = fetch_data()
        plot_data(df)
        time.sleep(10)  # 10초마다 데이터 시각화

여기서 plot_data() 함수는 DataFrame의 사용자 이름을 바 차트로 시각화합니다. collect_and_plot() 함수는 데이터를 수집하고 그 데이터를 시각화하는 역할을 합니다.

전체 코드

위의 모든 코드를 하나로 통합하면 다음과 같은 스크립트가 됩니다.

import requests
import pandas as pd
import matplotlib.pyplot as plt
import time

def fetch_data():
    url = 'https://jsonplaceholder.typicode.com/users'
    response = requests.get(url)
    data = response.json()
    return pd.DataFrame(data)

def plot_data(df):
    plt.figure(figsize=(10, 5))
    plt.bar(df['name'], range(len(df)), color='skyblue')
    plt.xlabel('User Names')
    plt.ylabel('Index')
    plt.title('User Names from JSONPlaceholder')
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.show()

def collect_and_plot():
    while True:
        df = fetch_data()
        plot_data(df)
        time.sleep(10)  # 10초마다 데이터 시각화

collect_and_plot()

이 코드를 실행하면, 10초마다 API에서 사용자 데이터를 가져와 바 차트를 업데이트합니다.

마무리

이번 포스트에서는 Pandas와 Matplotlib을 활용하여 실시간 데이터 시각화 미니 프로젝트를 구현해 보았습니다. 데이터를 수집하고, 처리하고, 시각화하는 과정을 통해 실시간 데이터의 흐름을 시각적으로 이해할 수 있는 기회를 제공했습니다. 이와 같은 간단한 프로젝트를 통해 데이터 시각화의 기초를 다질 수 있으며, 나아가 더 복잡한 데이터 시각화 프로젝트로 발전시킬 수 있습니다. 데이터로 보는 세상에서 다양한 인사이트를 얻는 데 도움이 되길 바랍니다!