Pandas: 同一个时间戳的多个值,如何绘制?

Pandas: Multiple values for the same timestamp, how to plot it?

我正在尝试处理包含一天的多个 y 轴值的振动数据集。实际上,这些值仅来自整数列表中一天中的 3 秒。

我有 N 个传感器,每个传感器都有一个整数列表 [4321、2134、541、...、1234],代表一天中 3 秒内的振动。 到目前为止,我每天都有一个带有 N 个传感器的 DataFrame,并且在 Vibration col 中有一个整数列表。在这 3 秒内,所有列表应该具有相同数量的元素。

我想要一种方法来绘制带有时间戳与振动的图表,此外,颜色是传感器。所以,在一天结束时,一个典型的情节面对所有传感器数据。

数据集是这样的:

Sensor | Timestamp | Vibration

A977549 | 2022-02-28 | [4101, 4028, 3290, 3419, 2...]

A977549 | 2022-02-27 | [3518, 3457, 6234, 331, 1...]

B977549 | 2022-02-28 | [3798, 6417, 234, 331, 3...]

B977549 | 2022-02-27 | [3591, 2417, 434, 3341, 2...]

...

它总是在一天中的同一时间采样,或者至少我们可以假设,在提到的这 3 秒内。

非常感谢您的帮助! :)

不确定我能否完全理解您的问题,但据我了解,您需要多行用于单个传感器(对于列表中的每个位置)。

您可以从列表中创建新列并为每个传感器构建一个图:

columns = ['Sensor', 'Timestamp', 'Vibration']
data = [['A977549', '2022-02-28', [4101, 4028, 3290, 3419]],
['A977549', '2022-02-27', [3598, 3417, 4234, 3341]],
['B977549', '2022-02-28', [4101, 4028, 3290, 3419]],
['B977549', '2022-02-27', [3598, 3417, 4234, 3341]]]

df = pd.DataFrame(data, columns=columns)
df['Timestamp'] = pd.to_datetime(df['Timestamp'])

df_vibr = pd.DataFrame(df['Vibration'].to_list(), columns=[f'Vibr_{i}' for i in range(len(df.loc[0, 'Vibration']))])

df = df.join(df_vibr).drop('Vibration', axis=1)
#print(df)

for sensor, subdf in df.groupby('Sensor'):
    subdf.plot(x='Timestamp', y=df.columns[2:], xticks=df['Timestamp'].to_list(), title=sensor)

plt.show()

在您的示例中添加传感器后,我得到以下图表: