【问题标题】:Plotting with pandas groupby in python, multiple plots在 python 中使用 pandas groupby 绘图,多个绘图
【发布时间】:2021-09-11 17:56:34
【问题描述】:

我想用类似于我在下面创建的 df 的数据制作三个不同的图(按位置)。在 x 轴上,我需要 y 轴上的日期和数字。最好是条形图,每个日期都有一个条形图。 是否可以使用例如几行简单的行来做到这一点?该位置的 groupby 功能? 谢谢!

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, 654, 345, 654]}

import pandas as pd
df = pd.DataFrame (data, columns = ['location','date','number'])
df["date"] = pd.to_datetime(df["date"])
df

【问题讨论】:

  • 希望答案是有帮助的。彻底回答问题很费时间。如果您的问题已解决,请接受解决方案 位于答案左上角的 ▲/▼ 箭头下方。如果出现更好的解决方案,则可以接受新的解决方案。如果您的声望超过 15,您还可以使用 ▲/▼ 箭头对答案的有用性进行投票。 如果解决方案无法回答问题,请发表评论。 What should I do when someone answers my question?。谢谢。

标签: python pandas matplotlib pandas-groupby seaborn


【解决方案1】:

您不是在这里进行分组,您只想为每个位置设置不同的线路。

样本数据

# using data from OP
df = pd.DataFrame (data, columns = ['location','date','number'])

# using .dt.date will remove the time component for nicer x-axis labels
df["date"] = pd.to_datetime(df["date"]).dt.date

线图

Plotly

import plotly.express as px

px.line(df, x='date', y="number", color="location")

Seaborn

import seaborn as sns

p = sns.catplot(data=df, x='date', y="number", hue='location', kind='point', height=4, aspect=1.5)

熊猫

如果您只喜欢使用 pandas,可以关注此answer

pv = df.pivot(index="date", columns='location', values='number')

ax = pv.plot(figsize=(16, 6))

我的建议是尽量使用 plotly。你可以有很好的交互式绘图,而且语法很简单。

条形图

情节

px.bar(df, x='date', y="number", color="location", barmode='group')

Seaborn

p = sns.catplot(data=df, x='date', y="number", hue='location', kind='bar', height=4, aspect=1.5)

熊猫

ax = pv.plot(kind='bar', figsize=(8, 5), rot=0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2019-02-13
    • 2019-02-02
    • 2017-08-10
    • 2017-03-07
    相关资源
    最近更新 更多