簡體   English   中英

如何使用python和pandas對多列進行分組

[英]how to groupby multiple columns using python and pandas

我有一個包含 4 列的數據框,我的問題是:如何分組 3 列並繪制條形圖?

如何繪制groupby的結果?

代碼:

import pandas as pd
import plotly.offline
import plotly.express as px
import plotly.graph_objs as go

df =pd.DataFrame({"source_number":[11199,11328,11287,32345,12342,1232,13456,123244,1235],
       "location":["loc1","loc2","loc3","loc1","loc2","loc2","loc3","loc2","loc1"],
       "category":["cat1","cat3","cat1","cat3","cat3","cat2","cat2","cat3","cat1"],
       "date":["2021/04","2021/05","2021/04","2021/05","2021/05","2021/04","2021/03","2021/05","2021/04"]
                 }) 
# group by date with category and location  AND COUNT THE VALUES 
df_group = df.groupby(["date","category","location"]).size().reset_index(name="count")
df_group

使用:

df_group = (
    df.groupby(["date", "category", "location"])
        .size()
        .reset_index(name='count')
)
      date category location  count
0  2021/03     cat2     loc3      1
1  2021/04     cat1     loc1      2
2  2021/04     cat1     loc3      1
3  2021/04     cat2     loc2      1
4  2021/05     cat3     loc1      1
5  2021/05     cat3     loc2      3

嘗試使用categorylocation 、 plot 和 drop 創建顏色指示器:

import plotly.express as px

df_group['cat_location'] = df_group['category'] + '_' + df_group['location']
fig = px.bar(df_group, x="date", y="count", color='cat_location')
df_group = df_group.drop('cat_location', axis=1)
fig.show()

或者不向df_group添加列:

fig = px.bar(df_group,
             x="date",
             y="count",
             color=df_group['category'] + '_' + df_group['location'])
fig.show()

情節情節

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM