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()
在您的示例中添加传感器后,我得到以下图表:
我正在尝试处理包含一天的多个 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()
在您的示例中添加传感器后,我得到以下图表: