如何在Python中针对日期列绘制分类变量

时间:2019-05-08 22:51:00

标签: python-3.x date plot against

我有类似这样的数据

Date         Fruit
2017-01-01   Orange
2017-01-01   Apple
2017-01-08   Orange
2017-01-09   Orange
2017-01-09   Apple

我想在单个绘图中绘制橘子数,按日期划分的苹果数。 我该怎么办?

我按日期将它们分组,然后看到结果。

df.groupby(['Date','Fruit']).size()
Date         Fruit
2017-01-01   Orange  1
             Apple   1
2017-01-08   Orange  1
2017-01-09   Orange  1
             Apple   1

我尝试过此方法,但是它给出了具有两个类别的条形图,但没有针对日期的条形图。

sns.catplot(x="Fruit", hue="Fruit", kind="count",
            palette="pastel", edgecolor=".6",
            data=df);

如何绘制在x轴上具有日期,每个日期的苹果数量和橘子数量的图形?

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作。

ctrl+cmd+R

ctrl+option+cmd+R,然后是# dummy data date_range = pd.date_range('2019-01-01', '2019-01-06', freq='D') df = pd.DataFrame(['Orange', 'Apple', 'Orange', 'Orange', 'Apple', 'Apple', 'Apple', 'Orange', 'Orange'], index=[date_range[0], date_range[0], date_range[1], date_range[2], date_range[2], date_range[2], date_range[2], date_range[3], date_range[3]], columns=['Fruit']) df.index.name = 'Date' ,如下所示。

groupby

然后绘制未堆积的数据。

unstack

enter image description here

(不过,您必须对日期格式进行某些操作)。

答案 1 :(得分:0)

构建数据集:

df = pd.DataFrame(columns=["Date", "Fruit"], data=[['2017-01-01','Orange'], ['2017-01-01','Orange'], ['2017-01-01','Apple'], ['2017-01-08','Orange'], ['2017-01-09','Orange'], ['2017-01-09','Apple']])

The data looks like this

通过使用unstack和按条形图分组可以绘制:

(df
 .groupby(['Date', 'Fruit'])
 .size()
 .unstack()
 .plot.bar()
)

Here is the plot by date