我想用python中的csv文件绘制一个堆积的条形图。我有三列数据
year word frequency
2018 xyz 12
2017 gfh 14
2018 sdd 10
2015 fdh 1
2014 sss 3
2014 gfh 12
2013 gfh 2
2012 gfh 4
2011 wer 5
2010 krj 4
2009 krj 4
2019 bfg 4
... 300+ rows of data.
我需要检查所有数据并绘制基于年份分类的堆叠条形图,因此x轴为单词,y轴为频率,图例颜色应按年份显示。我想看看每个单词的演变是如何逐年发生的。每年都会重复使用某些技术用语,因此堆栈条形图应在顶部和绘图上添加值,例如,单词gfh最初在2017年绘制14,然后在2014年我要绘制gfh单词(以其他颜色显示)在2017年Gfh之上的值为12。如何执行此操作?到目前为止,我在代码中调用了csv文件。但是我不明白它如何遍历所有行并适当地堆叠单词(因为有些单词会在全年重复出现)。非常感谢您的帮助。此外,年份在csv中以随机顺序排列,但我按年份对其进行了排序,以使其更容易。因为我有40年的数据和大约20个单词,所以我只是在学习python并试图理解这个绘图例程。因此,我认为堆积条形图是表示它们的最佳方法。也欢迎使用任何其他可视化方法。
这可以使用pandas
完成:
pandas
哪个输出:import pandas as pd
df = pd.read_csv("file.csv")
# Aggregate data
df = df.groupby(["word", "year"], as_index=False).agg({"frequency":"sum"})
# Plot bar chart
df.pivot(
index="word",
columns="year",
values="frequency",
).plot.bar(
stacked=True,
)