Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Phân tích dữ liệu thời gian thực với Python
Hướng Dẫn Đồ ÁnLập Trình AI

Phân tích dữ liệu thời gian thực với Python

Chia sẻ
Chia sẻ

Phân tích dữ liệu thời gian thực (real-time analytics) là một trong những kỹ năng quan trọng khi xử lý các luồng dữ liệu từ cảm biến IoT, giao dịch tài chính, mạng xã hội hay logs hệ thống. Với Python, bạn có thể dễ dàng xây dựng các pipeline để thu thập, xử lý và trực quan hóa dữ liệu liên tục nhờ vào các thư viện như Pandas, Plotly, và WebSockets.

Trước khi đi sâu vào real-time, bạn nên làm quen với [Hướng dẫn tiền xử lý dữ liệu sạch để huấn luyện mô hình tốt hơn][Phân tích dữ liệu bán hàng bằng Python và Pandas] để nắm vững các thao tác xử lý dữ liệu cơ bản. Ngoài ra, bài [Phân tích mạng xã hội bằng Python và NetworkX] cũng cung cấp cái nhìn về dữ liệu dạng graph, rất hữu ích khi kết hợp với dữ liệu thời gian thực.

Dữ liệu sử dụng để thực hành

Trong ví dụ này, chúng ta sẽ sử dụng dữ liệu giá tiền điện tử từ sàn Binance để mô phỏng luồng dữ liệu thời gian thực. Ngoài ra, để tiện cho những người không muốn kết nối trực tiếp API, bạn có thể tải một dataset giá crypto lịch sử và dùng nó để giả lập dữ liệu streaming.

📥 Link tải dataset lịch sử: https://www.kaggle.com/datasets/jessevent/all-crypto-currencies
📥 Tài liệu API Binance (WebSocket): https://github.com/binance/binance-spot-api-docs

Chuẩn bị môi trường

Chúng ta sẽ làm việc trên Google Colab để tận dụng môi trường Python được cài đặt sẵn. Đầu tiên, cài đặt các thư viện cần thiết:

!pip install pandas numpy matplotlib plotly websocket-client dash

Import các thư viện:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import plotly.express as px
from websocket import create_connection
import json
import time

Thu thập dữ liệu thời gian thực từ API Binance

Binance cung cấp API WebSocket để stream dữ liệu giao dịch. Bạn có thể kết nối và nhận dữ liệu liên tục như sau:

def stream_binance(symbol='btcusdt', interval=1, limit=10):
    """
    Stream giá tiền điện tử từ Binance WebSocket API
    """
    ws = create_connection(f"wss://stream.binance.com:9443/ws/{symbol}@trade")
    print(f"Streaming giá {symbol.upper()}...")
    for _ in range(limit):
        response = ws.recv()
        data = json.loads(response)
        price = float(data['p'])
        print(f"Giá hiện tại: {price} USD")
        time.sleep(interval)
    ws.close()

# Stream dữ liệu 10 lần, cách nhau 1 giây
stream_binance()

Lệnh này sẽ in ra giá Bitcoin mỗi giây trong 10 lần liên tiếp.

Giả lập dữ liệu thời gian thực từ file CSV

Nếu bạn đã tải dataset từ Kaggle, hãy đọc file và giả lập streaming.

# Đọc dữ liệu lịch sử
df = pd.read_csv('/content/all_crypto_currencies.csv')
df['timestamp'] = pd.to_datetime(df['timestamp'])
df_btc = df[df['symbol'] == 'BTC'].sort_values('timestamp')

# Giả lập streaming bằng cách in từng dòng
for i, row in df_btc[:50].iterrows():
    print(f"{row['timestamp']}: {row['close']} USD")
    time.sleep(1)  # Mô phỏng delay 1 giây

Trực quan hóa dữ liệu thời gian thực

Vẽ biểu đồ đường (line chart) với Matplotlib

plt.figure(figsize=(12,6))
plt.plot(df_btc['timestamp'][:100], df_btc['close'][:100], color='blue')
plt.title('Giá Bitcoin theo thời gian')
plt.xlabel('Thời gian')
plt.ylabel('Giá (USD)')
plt.xticks(rotation=45)
plt.show()

Vẽ biểu đồ tương tác với Plotly

fig = px.line(df_btc[:100], x='timestamp', y='close', title='Giá Bitcoin')
fig.show()

Phân tích thống kê dữ liệu thời gian thực

Tính toán giá trung bình, độ lệch chuẩn và phát hiện bất thường:

mean_price = df_btc['close'].mean()
std_price = df_btc['close'].std()
print(f"Giá trung bình: {mean_price:.2f} USD")
print(f"Độ lệch chuẩn: {std_price:.2f} USD")

# Phát hiện giá > (mean + 2*std)
anomalies = df_btc[df_btc['close'] > mean_price + 2*std_price]
print("Các điểm bất thường:")
print(anomalies[['timestamp', 'close']])

Xây dựng dashboard thời gian thực với Dash

Dash của Plotly cho phép tạo dashboard tương tác. Đây là bước nâng cao để bạn giám sát dữ liệu streaming.

from dash import Dash, dcc, html, Output, Input

app = Dash(__name__)

app.layout = html.Div([
    html.H1("Real-Time Bitcoin Price Dashboard"),
    dcc.Graph(id='live-graph'),
    dcc.Interval(id='interval-component', interval=1000, n_intervals=0)
])

@app.callback(Output('live-graph', 'figure'), Input('interval-component', 'n_intervals'))
def update_graph_live(n):
    new_df = df_btc[:n+10]
    fig = px.line(new_df, x='timestamp', y='close', title='Giá Bitcoin Real-Time')
    return fig

app.run_server(debug=True, use_reloader=False)

Kết luận

Bạn vừa học cách thu thập, xử lý và trực quan hóa dữ liệu thời gian thực với Python. Từ kết nối API Binance, giả lập dữ liệu streaming từ CSV, đến xây dựng dashboard thời gian thực bằng Dash, bạn đã có một pipeline hoàn chỉnh để phân tích real-time data.

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!