如何在熊猫中创建具有相同值的多列

问题描述 投票:0回答:2

我有一个像这样的DataFrame:

  Type Week Value
0  A    1    11
1  A    2     1
2  A    3     7
3  B    1    13
4  B    2    20
5  B    3    30

我想绘制类似df.plot.bar()的图这样看起来像https://i.stack.imgur.com/X4gSM.png

我该怎么做?

python pandas dataframe matplotlib
2个回答
0
投票

我曾用Seaborn进行过剧情:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

data=[['A',1,11],['A',2,1],['A',3,7],['B',1,13],['B',2,20],['B',3,30]]
df=pd.DataFrame(data,columns=['Type','Week','Value'])

sns.barplot(x='Type',y='Value',data=df,hue='Week')

使用Seaborn,您可以正确选择X和Y进行绘制,并使用色相参数显示每周的值。Seaborn基于matplotlib,因此您在plt中使用的功能也将在Seaborn中应用(例如plt.legend(),plt.xlabel()等)。


0
投票

要详细说明@QuangHoang的评论,请执行以下两个步骤。

首先,旋转数据。

pivoted = df.pivot('Type', 'Week', 'Value') 
pivoted
# Week   1   2   3
# Type            
# A     11   1   7
# B     13  20  30

DataFrame.plot.bar的文档中概述了其原因(强调是我的)。

x:标签或位置,可选。允许绘制一列与另一个。 如果未指定,则使用DataFrame的索引。

y:标签或位置,可选。允许绘制一列与另一个。 如果未指定,则使用所有数字列。

如果未指定任何参数,它将使用Type索引作为x,每个数字列(现在是每周一次)使用以获得许多柱的y值。这正是您想要的。

pivoted.plot.bar()
© www.soinside.com 2019 - 2024. All rights reserved.