Rumah > pembangunan bahagian belakang > Tutorial Python > Memahami Proses ETL dengan Data Masa Nyata: Pengekstrakan, Transformasi, Pemuatan dan Visualisasi

Memahami Proses ETL dengan Data Masa Nyata: Pengekstrakan, Transformasi, Pemuatan dan Visualisasi

Barbara Streisand
Lepaskan: 2024-10-04 12:11:02
asal
472 orang telah melayarinya

Understanding the ETL Process with Real-Time Data: Extraction, Transformation, Loading, and Visualization

Proses ETL (Extract, Transform, Load) adalah asas untuk mengurus data dengan cekap, terutamanya dalam aplikasi yang memerlukan pembuatan keputusan pantas berdasarkan data masa nyata. Dalam artikel ini, kami akan meneroka proses ETL menggunakan contoh praktikal yang melibatkan dagangan mata wang kripto masa nyata daripada API Binance. Kod Python yang disediakan menggambarkan cara untuk mengekstrak data perdagangan, mengubahnya menjadi format yang boleh digunakan, memuatkannya ke dalam pangkalan data SQLite dan memvisualisasikan data dengan plot masa nyata.

Contoh Projek ETL : https://github.com/vcse59/FeatureEngineering/tree/main/Real-Time-CryptoCurrency-Price-Tracker

1. Ekstrak
Langkah pertama proses ETL ialah Pengekstrakan, yang melibatkan pengumpulan data daripada pelbagai sumber. Dalam kes ini, data diekstrak melalui sambungan WebSocket ke API Binance Testnet. Sambungan ini membolehkan penstriman masa nyata bagi dagangan BTC/USDT.

Begini cara pengekstrakan dilaksanakan dalam kod:

 with websockets.connect(url) as ws:
    response = await ws.recv()
    trade_data = json.loads(response)

Salin selepas log masuk

Setiap mesej yang diterima mengandungi data perdagangan penting, termasuk harga, kuantiti dan cap masa, yang diformatkan sebagai JSON.

2. Ubah
Setelah data diekstrak, ia menjalani proses Transformasi. Langkah ini membersihkan dan menyusun data untuk menjadikannya lebih berguna. Dalam contoh kami, transformasi termasuk menukar cap masa daripada milisaat kepada format yang boleh dibaca dan menyusun data ke dalam jenis yang sesuai untuk pemprosesan selanjutnya.


price = float(trade_data['p'])
quantity = float(trade_data['q'])
timestamp = int(trade_data['T'])

trade_time = datetime.fromtimestamp(timestamp / 1000.0)


Salin selepas log masuk

Ini memastikan harga dan kuantiti disimpan sebagai terapung, dan cap masa ditukar kepada objek datetime untuk manipulasi dan analisis yang lebih mudah.

3. Muatkan
Langkah terakhir ialah Memuatkan, di mana data yang diubah disimpan dalam pangkalan data sasaran. Dalam kod kami, pangkalan data SQLite berfungsi sebagai medium storan untuk data perdagangan.

Proses pemuatan diuruskan oleh fungsi berikut:


def save_trade_to_db(price, quantity, timestamp):
    conn = sqlite3.connect('trades.db')
    cursor = conn.cursor()
    # Create a table if it doesn't exist
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS trades (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            price REAL,
            quantity REAL,
            timestamp TEXT
        )
    ''')
    # Insert the trade data
    cursor.execute('''
        INSERT INTO trades (price, quantity, timestamp)
        VALUES (?, ?, ?)
    ''', (price, quantity, trade_time))
    conn.commit()
    conn.close()


Salin selepas log masuk

Fungsi ini menyambung kepada pangkalan data SQLite, mencipta jadual jika ia tidak wujud dan memasukkan data perdagangan.

4. Visualisasikan
Selain menyimpan data, adalah penting untuk menggambarkannya untuk pemahaman yang lebih baik dan membuat keputusan. Kod yang disediakan termasuk fungsi untuk merancang dagangan dalam masa nyata:


def plot_trades():
    if len(trades) > 0:
        timestamps, prices, quantities = zip(*trades)

        plt.subplot(2, 1, 1)
        plt.cla()  # Clear the previous plot for real-time updates
        plt.plot(timestamps, prices, label='Price', color='blue')
        plt.ylabel('Price (USDT)')
        plt.legend()
        plt.title('Real-Time BTC/USDT Prices')
        plt.xticks(rotation=45)

        plt.subplot(2, 1, 2)
        plt.cla()  # Clear the previous plot for real-time updates
        plt.plot(timestamps, quantities, label='Quantity', color='orange')
        plt.ylabel('Quantity')
        plt.xlabel('Time')
        plt.legend()
        plt.xticks(rotation=45)

        plt.tight_layout()  # Adjust layout for better spacing
        plt.pause(0.1)  # Pause to update the plot


Salin selepas log masuk

Fungsi ini menjana dua subplot: satu untuk harga dan satu lagi untuk kuantiti. Ia menggunakan perpustakaan matplotlib untuk menggambarkan data secara dinamik, membolehkan pengguna memerhati arah aliran pasaran dalam masa nyata.

Kesimpulan
Contoh ini menyerlahkan proses ETL, menunjukkan cara data boleh diekstrak daripada API WebSocket, diubah untuk analisis, dimuatkan ke dalam pangkalan data dan divisualisasikan untuk maklum balas segera. Rangka kerja ini penting untuk membina aplikasi yang perlu membuat keputusan termaklum berdasarkan data masa nyata, seperti platform dagangan dan alat analisis pasaran.

Atas ialah kandungan terperinci Memahami Proses ETL dengan Data Masa Nyata: Pengekstrakan, Transformasi, Pemuatan dan Visualisasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan