干货 | 时间序列数据的对齐和数据库的分批查询
Posted 数据魔术师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了干货 | 时间序列数据的对齐和数据库的分批查询相关的知识,希望对你有一定的参考价值。
在机器学习里,我们对时间序列数据做预处理的时候,经常会碰到一个问题:有多个时间序列存在多个表里,每个表的的时间轴不完全相同,要如何把这些表在时间轴上进行对齐,从而合并成一个表呢?尤其是当这些表都存在数据库里,而且超级超级大的时候,怎样才能更高效地处理呢?
在文章中,已经介绍过了如何在Python中创建数据库连接以及对数据库进行增删改查、分组聚合以及批量读取和处理等操作。
今天就以上面的问题为导向,手把手教你如何用Python一步步实现相应的功能。讲解的内容主要有:
如何实现两个有序序列的合并;
延伸到两个时间序列数据的对齐;
从数据库中自动循环分批读取数据。
需要掌握的主要编程技巧包括:
用函数实现特定功能
用类对功能进行封装
实现基本的迭代器
使用的工具及版本:Python3.7,mysql8.0, Jupyter Notebook
----读者请注意:经测试发现,少部分手机不能正常显示本文代码框(例如不能左右滑动,会自动换行等),为了获得更好的阅读体验,建议这部分读者横屏阅读,或请移步至留言区获取源代码链接。----
本节主要介绍如何实现将2个有序(默认从小到大排序)序列合并成一个序列,同时介绍Python中基本的循环结构。
其实在Python中固然有相应的方法可以很容易地做到(例如集合的set.union()方法),这里之所以要自己实现,主要是要理解这种思想,为后文的功能实现做铺垫。
if 语句的语法结构为:
if boolean_expression1: #如果满足条件1,则执行suite1代码块
suite1
elif boolean_expression2: #如果满足条件2,则执行suite2代码块
suite2
else: #否则执行else_suite代码块
else_suite
其中elif
和else
为可选。
1.2.1 while循环
(1) 循环机制及应用场景
用于编写通用迭代结构
顶端测试为真时执行循环体,并会重复多次测试直到为假后结束循环
(2) 语法格式
while boolean_expression: #如果测试为真,则执行while_suite代码块(循环执行)
while_suite
else: #直到测试为假,则执行一遍else_suite代码块之后结束循环
else_suit
其中else
为可选。
1.2.2 for 循环
(1)循环机制及应用场景
通用的序列迭代器,用于遍历任何有序的序列对象内的元素
可用于字符串、元组、列表和其它的内置可迭代对象,以及通过类所创建的新对象
(2)语法格式
for expression in iterable:
for_suite
else:
else_suite
其中else
为可选。
以上是关于干货 | 时间序列数据的对齐和数据库的分批查询的主要内容,如果未能解决你的问题,请参考以下文章