我已将数据框分为3列:月,客户和数量。 我想分别绘制按月和按客户分组的数据框,以了解它们在过去几个月的交易量。
有人可以帮我吗?我已经尝试了很多方法,但是无法接近……
预期的地块:
原始数据框(仅前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)
答案 0 :(得分:1)
好像您使用了df.pivot(),所以您基本上可以进行df.plot(kind='bar')
答案 1 :(得分:1)
您需要对数据帧进行切片,以消除MultiIndex列标题的顶层,使用:
df_2['Quantidade'].plot.bar()
输出:
另一种选择是在数据透视表中使用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)
这将是一个两步过程。
拆开数据框-按照此示例-Reshape wide to long in pandas
使用matplotlib绘制分组的条形图-遵循此示例-https://chrisalbon.com/python/data_visualization/matplotlib_grouped_bar_plot/
Seaborn绘图库example中有一个简单的方法-您可以将第二列提到为色相,这应该可以为您完成工作。