要绘制“按天聚类的时间序列图”,首先需要按天对时间序列数据进行聚类。这可以通过以下步骤完成:
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
data = pd.read_csv('data.csv', parse_dates=['date'])
其中,'data.csv'是包含时间序列数据的CSV文件路径,'date'是日期列的名称。
data_daily = data.groupby(data['date'].dt.date).sum()
这将按天对数据进行汇总,将相同日期的数据求和。
kmeans = KMeans(n_clusters=3)
kmeans.fit(data_daily)
这里假设要将数据聚类为3个簇,可以根据实际需求进行调整。
data_daily['cluster'] = kmeans.labels_
这将为每个日期添加一个表示簇标签的列。
fig, ax = plt.subplots(figsize=(10, 6))
colors = ['red', 'green', 'blue']
for cluster, color in zip(data_daily['cluster'].unique(), colors):
cluster_data = data_daily[data_daily['cluster'] == cluster]
ax.plot(cluster_data.index, cluster_data['value'], color=color, label=f'Cluster {cluster}')
ax.set_xlabel('Date')
ax.set_ylabel('Value')
ax.legend()
plt.show()
这将根据聚类结果绘制时间序列图,每个簇使用不同的颜色标识。
完整的示例代码如下所示:
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 加载时间序列数据
data = pd.read_csv('data.csv', parse_dates=['date'])
# 按天汇总数据
data_daily = data.groupby(data['date'].dt.date).sum()
# 执行K均值聚类
kmeans = KMeans(n_clusters=3)
kmeans.fit(data_daily)
# 将聚类结果添加到汇总数据中
data_daily['cluster'] = kmeans.labels_
# 绘制时间序列图
fig, ax = plt.subplots(figsize=(10, 6))
colors = ['red', 'green', 'blue']
for cluster, color in zip(data_daily['cluster'].unique(), colors):
cluster_data = data_daily[data_daily['cluster'] == cluster]
ax.plot(cluster_data.index, cluster_data['value'], color=color, label=f'Cluster {cluster}')
ax.set_xlabel('Date')
ax.set_ylabel('Value')
ax.legend()
plt.show()
请注意,上述代码中的一些细节(例如数据加载和绘图参数)可能需要根据实际情况进行调整。