通过对数据框列中的值进行分组来绘制多个图?
Posted
技术标签:
【中文标题】通过对数据框列中的值进行分组来绘制多个图?【英文标题】:Plotting multiple graphs by grouping values from a data frame column? 【发布时间】:2021-09-14 07:36:17 【问题描述】:我对可视化比较陌生,我很感激任何事情和帮助! 我正在研究如何制作多个图,将数据框按一列分组,然后为每个唯一值制作一个图。例如。对于下面的数据集,我想要三个不同的图,每个位置一个,并且我希望能够单独标记它们。我不太确定该怎么做。示例数据框:
data =
"location": ["USA", "USA", "USA", "UK", "UK",
"UK", "World", "World", "World"],
"date": ["21-06-2021", "22-06-2021", "23-06-2021",
"21-06-2021", "22-06-2021", "23-06-2021",
"21-06-2021", "22-06-2021", "23-06-2021"],
"number": [456, 543, 675, 543, 765, 345, 9543, 9543, 9234]
import pandas as pd
df = pd.DataFrame (data, columns = ['location','date','number'])
df["date"] = pd.to_datetime(df["date"])
我试过这样做。它给了我三个图,但我不知道如何单独标记和更改图的描述。
df.groupby("location").plot(x="date", y="number", subplots=True)
一般来说,如果情节看起来更好一点会很好,如下图(我指的是线和点):
import seaborn as sns
p = sns.catplot(data=df, x='date', y="number", hue='location', kind='point');
p.fig.set_figwidth(16)
p.fig.set_figheight(6)
【问题讨论】:
你会用 seaborn 分别绘制 3 个数字,对吧? 嗨!你的问题解决了吗?如果是这样,请尝试考虑accepting 向其他人发出问题已解决的信号。如果没有,您可以提供反馈,以便改进(或删除)答案 【参考方案1】:import matplotlib.pyplot as plt
试试:
labels=[]
for k,v in df.groupby("location"):
plt.plot(v["date"],v["number"],marker='o')
labels.append(k)
plt.legend(labels,title='location')
plt.xticks(v["date"].unique())
注意:如果要删除顶部和右侧边框,请在 for 循环内的末尾添加此行:
plt.gca().spines[['top','right']].set_visible(False)
【讨论】:
以上是关于通过对数据框列中的值进行分组来绘制多个图?的主要内容,如果未能解决你的问题,请参考以下文章
Pyspark 通过使用另一列中的值替换 Spark 数据框列中的字符串
如何将 pyspark 数据框列中的值与 pyspark 中的另一个数据框进行比较