要解决“按元数据将子集STM:主题随时间的比例(STM)”的问题,您可以使用以下代码示例:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 创建示例数据集
data = {
'date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05'],
'topic': ['A', 'B', 'A', 'C', 'B'],
'count': [10, 5, 8, 3, 6]
}
df = pd.DataFrame(data)
# 将日期列转换为日期类型
df['date'] = pd.to_datetime(df['date'])
# 计算每个主题在每个日期的总数
df_grouped = df.groupby(['date', 'topic']).sum().reset_index()
# 使用透视表计算每个主题在每个日期的比例
df_pivot = df_grouped.pivot(index='date', columns='topic', values='count')
df_pivot = df_pivot.div(df_pivot.sum(axis=1), axis=0)
# 绘制堆叠条形图
df_pivot.plot(kind='bar', stacked=True)
# 添加标题和标签
plt.title('Topic Proportion Over Time (STM)')
plt.xlabel('Date')
plt.ylabel('Proportion')
# 显示图形
plt.show()
这段代码首先创建了一个示例数据集,其中包含日期、主题和计数列。然后,它将日期列转换为日期类型,并使用groupby()
函数计算每个主题在每个日期的总数。接下来,使用pivot()
函数将数据透视为主题为列,日期为索引的形式,并计算每个主题在每个日期的比例。最后,使用plot()
函数绘制了堆叠条形图,并添加了标题和标签。运行代码后,将显示堆叠条形图,其中x轴表示日期,y轴表示比例。每个主题在每个日期的比例由不同颜色的堆叠条表示。