對比Excel,學(xué)習(xí)pandas數(shù)據(jù)透視表

Excel中做數(shù)據(jù)透視表
① 選中整個數(shù)據(jù)源;
② 依次點擊“插入”—“數(shù)據(jù)透視表”
③ 選擇在Excel中的哪個位置,插入數(shù)據(jù)透視表
④ 然后根據(jù)實際需求,從不同維度展示結(jié)果
⑤ 結(jié)果如下
pandas用pivot_table()做數(shù)據(jù)透視表
1)語法格式
pd.pivot_table(data,index=None,columns=None,
values=None,aggfunc='mean',
margins=False,margins_name='All',
dropna=True,fill_value=None)
2)對比excel,說明上述參數(shù)的具體含義
參數(shù)說明:
data 相當于Excel中的"選中數(shù)據(jù)源";
index 相當于上述"數(shù)據(jù)透視表字段"中的行;
columns 相當于上述"數(shù)據(jù)透視表字段"中的列;
values 相當于上述"數(shù)據(jù)透視表字段"中的值;
aggfunc 相當于上述"結(jié)果"中的計算類型;
margins 相當于上述"結(jié)果"中的總計;
margins_name 相當于修改"總計"名,為其它名稱;
下面幾個參數(shù),用的較少,記住干嘛的,等以后需要就百度。
dropna 表示是否刪除缺失值,如果為True時,則把一整行全作為缺失值刪除;
fill_value 表示將缺失值,用某個指定值填充。
案例說明
1)求出不同品牌下,每個月份的銷售數(shù)量之和
① 在Excel中的操作結(jié)果如下
② 在pandas中的操作如下
df = pd.read_excel(r"C:\Users\黃偉\Desktop\pivot_table.xlsx")
display(df.sample(5))
df.insert(1,"月份",df["銷售日期"].apply(lambda x:x.month))
display(df.sample(5))
df1 = pd.pivot_table(df,index="品牌",columns="月份",
values="銷售數(shù)量",aggfunc=np.sum)
display(df1)結(jié)果如下:
2)求出不同品牌下,每個地區(qū)、每個月份的銷售數(shù)量之和
① 在Excel中的操作結(jié)果如下
② 在pandas中的操作如下
df = pd.read_excel(r"C:\Users\黃偉\Desktop\pivot_table.xlsx")
display(df.sample(5))
df.insert(1,"月份",df["銷售日期"].apply(lambda x:x.month))
display(df.sample(5))
df1 = pd.pivot_table(df,index="品牌",columns=["銷售區(qū)域","月份"],
values="銷售數(shù)量",aggfunc=np.sum)
display(df1)
結(jié)果如下:
3)求出不同品牌不同地區(qū)下,每個月份的銷售數(shù)量之和
① 在Excel中的操作結(jié)果如下
② 在pandas中的操作如下
df = pd.read_excel(r"C:\Users\黃偉\Desktop\pivot_table.xlsx")
display(df.sample(5))
df.insert(1,"月份",df["銷售日期"].apply(lambda x:x.month))
display(df.sample(5))
df1 = pd.pivot_table(df,index=["品牌","銷售區(qū)域"],columns="月份",
values="銷售數(shù)量",aggfunc=np.sum)
display(df1)
結(jié)果如下:
4)求出不同品牌下的“銷售數(shù)量之和”與“貨號計數(shù)”
① 在Excel中的操作結(jié)果如下
② 在pandas中的操作如下
df = pd.read_excel(r"C:\Users\黃偉\Desktop\pivot_table.xlsx")
display(df.sample(5))
df.insert(1,"月份",df["銷售日期"].apply(lambda x:x.month))
display(df.sample(5))
df1 = pd.pivot_table(df,index="品牌",columns="月份",
values=["銷售數(shù)量","貨號"],
aggfunc={"銷售數(shù)量":"sum","貨號":"count"},
margins=True,margins_name="總計")
display(df1)
結(jié)果如下:














