您可以使用
pandas
(
文档)处理时间序列数据,这在IT技术中非常实用。在此情况下,您需要创建两个数据帧,然后合并并排序它们。
通过
merge
操作,您会得到一个合并的“Time”系列(有关不同合并方式的详细信息请
点击此处),其中对于没有该时间值的数值列插入了
nan
值。接着,按共享的
Time
列进行排序。
df.fillna
函数(
文档)接受
method
参数, 如果它是
ffill
或
pad
则将缺失值填充为最后一个有效值,如果是
bfill
则将其填充为下一个有效值。或者,您也可以使用
df.interpolate
进行缺失值的线性插值(
文档)。
方便的是,
pandas
包装了
matplotlib
,因此您可以直接从数据帧中进行绘图。
import matplotlib.pyplot as plt
import pandas as pd
s1_values = [6,8,6,3,7,9]
s1_times = [1,3,6,7,8,12]
s2_values = [3,8,7,2,5,4,6,2]
s2_times = [2,4,5,7,8,9,10,13]
df1 = pd.DataFrame(zip(s1_times, s1_values), columns=['Time', 's1 values'])
df2 = pd.DataFrame(zip(s2_times, s2_values), columns=['Time', 's2 values'])
df = df1.merge(df2, how='outer', on='Time', sort='Time')
df.fillna(method='pad', inplace=True)
df.plot(kind='scatter', x='s1 values', y='s2 values')
plt.show()
使用 fillna(method='ffill')
![enter image description here](https://istack.dev59.com/QiuQR.webp)
使用 interpolate()
![enter image description here](https://istack.dev59.com/bVe8m.webp)