如何以多列的形式来绘制python数据框分组

时间:2020-06-20 18:42:11

标签: python pandas matplotlib bar-chart

我已将数据框分为3列:月,客户和数量。 我想分别绘制按月和按客户分组的数据框,以了解它们在过去几个月的交易量。

有人可以帮我吗?我已经尝试了很多方法,但是无法接近……

预期的地块: Expected Plot

原始数据框(仅前10行)

public  void ScanButton(View view){
    IntentIntegrator intentIntegrator = new IntentIntegrator(this);
    intentIntegrator.initiateScan();

}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data){
    IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);

    if(intentResult !=null){
        //kama imeshindwa kuscan then cancel
        if(intentResult.getContents() == null){
            Toast toast = Toast.makeText(getApplicationContext(),
                    "TUnable to Scan, Please Make sure UnaScan QR Code",
                    Toast.LENGTH_SHORT);

            toast.show();
     //    textView.setText("Unable to Scan, Please Make sure UnaScan QR Code!");

        }
        else{
           textView.setText(intentResult.getContents());
        }
    }
  super.onActivityResult(requestCode, resultCode, data);
}

用于旋转数据框的代码:

Mes,Clientes,Mercadorias,Quantidade Janeiro,Cliente A,DOL,834984 Janeiro,Cliente A,WDO,622107 Janeiro,Cliente A,IND,576051 Janeiro,Cliente A,WIN,326315 Janeiro,Cliente A,DI1,762236 Janeiro,Cliente B,DOL,696233 Janeiro,Cliente B,WDO,635564 Janeiro,Cliente B,IND,265720 Janeiro,Cliente B,WIN,550040 Janeiro,Cliente B,DI1,354343

枢轴数据框:

df_2 = pd.pivot_table(df, index='Mes', columns='Clientes', aggfunc=sum)

3 个答案:

答案 0 :(得分:1)

好像您使用了df.pivot(),所以您基本上可以进行df.plot(kind='bar')

答案 1 :(得分:1)

您需要对数据帧进行切片,以消除MultiIndex列标题的顶层,使用:

df_2['Quantidade'].plot.bar()

输出:

enter image description here

另一种选择是在数据透视表中使用values参数,从而避免创建MultiIndex列标题:

df_2 = pd.pivot_table(df, index='Mes', columns='Clientes', values='Quantidade', aggfunc=sum)

输出:

Clientes  Cliente A  Cliente B
Mes                           
Janeiro     3121693    2501900

答案 2 :(得分:0)

这将是一个两步过程。

  1. 拆开数据框-按照此示例-Reshape wide to long in pandas

  2. 使用matplotlib绘制分组的条形图-遵循此示例-https://chrisalbon.com/python/data_visualization/matplotlib_grouped_bar_plot/

Seaborn绘图库example中有一个简单的方法-您可以将第二列提到为色相,这应该可以为您完成工作。