data1 = data[data['time'] == '2020-01-04']、heatmap_data1['time'] = '2020-01-04'、sns.kdeplot(heatmap_data[heatmap_data['time'] == '2020-01-04']['Topic {}'.format(i)],shade=True,cmap='OrRd',ax=ax)topic_counts_month1 = topic_counts * (data['time'] == '2020-01-01').sum() / len(data)、优化此代码,选择时间在2020-01-04到2020-06-30的所有数据
时间: 2024-01-20 11:02:41 浏览: 70
你可以将上述代码中的时间筛选条件改为 loc 函数实现:
```
# 选择时间在 '2020-01-04' 到 '2020-06-30' 之间的所有数据
data1 = data.loc[(data['time'] >= '2020-01-04') & (data['time'] <= '2020-06-30')]
# heatmap_data1 的时间列赋值为 '2020-01-04' 到 '2020-06-30'
heatmap_data1['time'] = pd.date_range(start='2020-01-04', end='2020-06-30', freq='D').strftime('%Y-%m-%d')
# 绘制 Topic i 的核密度估计图
sns.kdeplot(heatmap_data[heatmap_data['time'].isin(heatmap_data1['time'])]['Topic {}'.format(i)],
shade=True, cmap='OrRd', ax=ax)
# 计算时间在 '2020-01-04' 到 '2020-06-30' 之间的每个主题出现的次数
topic_counts_month1 = topic_counts * data1.groupby('topic').size() / len(data1)
```
其中,isin 函数可以判断一个 Series 是否包含在另一个 Series 中,这里用来筛选时间在 '2020-01-04' 到 '2020-06-30' 之间的数据。另外,groupby 函数可以按照指定的列对数据进行分组,并返回每组数据的大小。
阅读全文