将dataframe中的数据按天分组,绘制其中四列数据的图像,并将所有图像显示在同一个画布中
时间: 2024-05-04 14:20:18 浏览: 12
假设你已经使用 pandas 包读取了数据,并且数据中包含了时间戳列。首先,可以按照时间戳列对数据进行分组,然后对每一组数据绘制图像,最后将所有图像显示在同一个画布中。
下面是一个示例代码:
``` python
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_csv('data.csv')
# 将时间戳列转换为 pandas 中的时间类型
df['time'] = pd.to_datetime(df['time'])
# 按照天分组
grouped = df.groupby(pd.Grouper(key='time', freq='D'))
# 绘制图像
fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(12, 8))
for i, (name, group) in enumerate(grouped):
if i >= 4: # 只绘制前四天的数据
break
row = i // 2
col = i % 2
group.plot(x='time', y=['col1', 'col2', 'col3', 'col4'], ax=axs[row][col], title=name.date().isoformat())
# 调整子图之间的间距和顶部的边距
plt.subplots_adjust(hspace=0.4, top=0.9)
# 显示图像
plt.show()
```
在上面的代码中,我们首先读取了数据,然后将时间戳列转换为 pandas 中的时间类型。接着,我们使用 groupby 方法按照天分组,并且在循环中对每一组数据绘制图像,并将图像显示在指定的子图中。最后,我们调整了子图之间的间距和顶部的边距,并显示了所有图像。你需要将代码中的 'data.csv' 替换为你自己的数据文件路径,以及 'time'、'col1'、'col2'、'col3'、'col4' 分别替换为你自己数据中的时间戳列和需要绘制的四列数据的列名。