ETL(提取、转换、加载)过程是有效管理数据的基础,特别是在需要基于实时数据快速决策的应用程序中。在本文中,我们将使用涉及币安 API 的实时加密货币交易的实际示例来探索 ETL 流程。提供的 Python 代码说明了如何提取交易数据、将其转换为可用格式、将其加载到 SQLite 数据库中,以及通过实时绘图将数据可视化。
示例 ETL 项目: https://github.com/vcse59/FeatureEngineering/tree/main/Real-Time-CryptoCurrency-Price-Tracker
1。提取物
ETL 过程的第一步是提取,其中涉及从各种来源收集数据。在这种情况下,数据是通过与 Binance Testnet API 的 WebSocket 连接提取的。此连接允许实时传输 BTC/USDT 交易。
代码中提取的实现方式如下:
with websockets.connect(url) as ws: response = await ws.recv() trade_data = json.loads(response)
收到的每条消息都包含重要的交易数据,包括价格、数量和时间戳,格式为 JSON。
2。变形
提取数据后,它会经历转换过程。此步骤清理并结构化数据以使其更有用。在我们的示例中,转换包括将时间戳从毫秒转换为可读格式,并将数据组织成适当的类型以供进一步处理。
price = float(trade_data['p']) quantity = float(trade_data['q']) timestamp = int(trade_data['T']) trade_time = datetime.fromtimestamp(timestamp / 1000.0)
这确保了价格和数量存储为浮点数,并且时间戳被转换为日期时间对象,以便于操作和分析。
3。加载
最后一步是加载,将转换后的数据存储在目标数据库中。在我们的代码中,SQLite 数据库作为交易数据的存储介质。
加载过程由以下函数管理:
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()
此函数连接到 SQLite 数据库,如果不存在则创建一个表,并插入交易数据。
4。可视化
除了存储数据之外,将数据可视化以便更好地理解和决策也很重要。提供的代码包含一个实时绘制交易的函数:
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
此函数生成两个子图:一个用于价格,另一个用于数量。它使用matplotlib库动态可视化数据,让用户实时观察市场趋势。
结论
此示例重点介绍了 ETL 过程,演示了如何从 WebSocket API 中提取数据、进行转换以进行分析、加载到数据库中以及如何进行可视化以获取即时反馈。该框架对于构建需要基于实时数据做出明智决策的应用程序至关重要,例如交易平台和市场分析工具。
以上是了解实时数据的 ETL 过程:提取、转换、加载和可视化的详细内容。更多信息请关注PHP中文网其他相关文章!

可以使用多种方法在Python中连接两个列表:1.使用 操作符,简单但在大列表中效率低;2.使用extend方法,效率高但会修改原列表;3.使用 =操作符,兼具效率和可读性;4.使用itertools.chain函数,内存效率高但需额外导入;5.使用列表解析,优雅但可能过于复杂。选择方法应根据代码上下文和需求。

有多种方法可以合并Python列表:1.使用 操作符,简单但对大列表不内存高效;2.使用extend方法,内存高效但会修改原列表;3.使用itertools.chain,适用于大数据集;4.使用*操作符,一行代码合并小到中型列表;5.使用numpy.concatenate,适用于大数据集和性能要求高的场景;6.使用append方法,适用于小列表但效率低。选择方法时需考虑列表大小和应用场景。

CompiledLanguagesOffersPeedAndSecurity,而interneterpretledlanguages provideeaseafuseanDoctability.1)commiledlanguageslikec arefasterandSecureButhOnderDevevelmendeclementCyclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesandentency.2)cransportedeplatectentysenty

Python中,for循环用于遍历可迭代对象,while循环用于条件满足时重复执行操作。1)for循环示例:遍历列表并打印元素。2)while循环示例:猜数字游戏,直到猜对为止。掌握循环原理和优化技巧可提高代码效率和可靠性。

要将列表连接成字符串,Python中使用join()方法是最佳选择。1)使用join()方法将列表元素连接成字符串,如''.join(my_list)。2)对于包含数字的列表,先用map(str,numbers)转换为字符串再连接。3)可以使用生成器表达式进行复杂格式化,如','.join(f'({fruit})'forfruitinfruits)。4)处理混合数据类型时,使用map(str,mixed_list)确保所有元素可转换为字符串。5)对于大型列表,使用''.join(large_li

pythonuseshybridapprace,ComminingCompilationTobyTecoDeAndInterpretation.1)codeiscompiledtoplatform-Indepententbybytecode.2)bytecodeisisterpretedbybythepbybythepythonvirtualmachine,增强效率和通用性。

theKeyDifferencesBetnewpython's“ for”和“ for”和“ loopsare:1)” for“ loopsareIdealForiteringSequenceSquencesSorkNowniterations,而2)”,而“ loopsareBetterforConterContinuingUntilacTientInditionIntionismetismetistismetistwithOutpredefinedInedIterations.un

在Python中,可以通过多种方法连接列表并管理重复元素:1)使用 运算符或extend()方法可以保留所有重复元素;2)转换为集合再转回列表可以去除所有重复元素,但会丢失原有顺序;3)使用循环或列表推导式结合集合可以去除重复元素并保持原有顺序。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver Mac版
视觉化网页开发工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。