如何根据 Python 中的日期列绘制分类变量
How to plot categorical variable against a date column in Python
我有这样的数据
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 轴为日期,每个日期的苹果数和橙子数?
你可以这样做。
# 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
,看起来像这样。
>>> print(df.unstack())
Fruit Apple Orange
Date
2019-01-01 1.0 1.0
2019-01-02 NaN 1.0
2019-01-03 3.0 1.0
2019-01-04 NaN 2.0
然后绘制未堆叠的数据。
df.unstack().plot(kind='bar')
plt.show()
(但您必须对日期格式进行一些处理)。
构建数据集:
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']])
利用unstack和group by条形图可以画出:
(df
.groupby(['Date', 'Fruit'])
.size()
.unstack()
.plot.bar()
)
我有这样的数据
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 轴为日期,每个日期的苹果数和橙子数?
你可以这样做。
# 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
,看起来像这样。
>>> print(df.unstack())
Fruit Apple Orange
Date
2019-01-01 1.0 1.0
2019-01-02 NaN 1.0
2019-01-03 3.0 1.0
2019-01-04 NaN 2.0
然后绘制未堆叠的数据。
df.unstack().plot(kind='bar')
plt.show()
(但您必须对日期格式进行一些处理)。
构建数据集:
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']])
利用unstack和group by条形图可以画出:
(df
.groupby(['Date', 'Fruit'])
.size()
.unstack()
.plot.bar()
)