通过对数据框列中的值进行分组来绘制多个图?

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 中的另一个数据框进行比较

比较熊猫数据框列中的值时出现类型错误

数据框列中的嵌套列表,提取数据框列中列表的值 Pyspark Spark

Python pandas 通过对现有列进行分组来创建其他数据框列