這是我的df:
df=pd.DataFrame(
{
'Color': ['red','blue','red','red','green','red','yellow'],
'Type': ['Oil', 'Aluminium', 'Oil', 'Oil', 'Cement Paint', 'Synthetic Rubber', 'Emulsion'],
'Finish' : ['Satin', 'Matte', 'Matte', 'Satin', 'Semi-gloss', 'Satin', 'Satin'],
'Use' : ['Interior', 'Exterior', 'Interior', 'Interior', 'Exterior', 'Exterior', 'Exterior'],
'Price' : [55, 75, 60, 60, 55, 75, 50]
}
)
我想創建一個資料透視表,它將輸出“顏色”、“顏色計數”、百分比或重量或每種顏色計數,最后是一個總行,輸出接近 100% 的總顏色計數。此外,我想以以下格式(02 - 11 月)添加帶有今天日期的標題。
這是我當前使用近似輸入的支點
today=datetime.date.today()
today_format=today.strftime("%d-m%")
pivot_table=pd.pivot_table(
data=df,
index='Color',
aggfunc={'Color':'count'}
)
df['Color'].value_counts(
normalize=True
).mul(100).round(1).astype(str) '%'
有沒有辦法將更多資訊作為標題、總計和額外列添加到資料透視表?或者我只是嘗試將樞軸轉換回 DF 并從那里編輯它?
我發現的主要困難是,因為我正在處理字串資料,所以當我 'aggfunc='sum' 它實際上添加了字串。如果我嘗試添加 'margins=True, margins_name='Total count' 我會收到以下錯誤:
if isinstance(aggfunc[k], str):
KeyError: 'Type'
所需的表輸出如下所示:

謝謝你的幫助!
uj5u.com熱心網友回復:
更新的答案
感謝Rabinzel的一個很好的建議,我們也可以將今天的日期作為列標題:
df = (df['Color'].value_counts().reset_index().pivot_table(index = ['index'], aggfunc = np.sum, margins=True, margins_name='Total')
.assign(perc = lambda x: x['Color']/x.iloc[:-1]['Color'].sum() * 100)
.rename(columns = {'Color' : 'Color Count',
'perc' : '%'}))
new_cols = pd.MultiIndex.from_product([[datetime.today().strftime('%#d-%b')], df.columns])
df.columns = new_cols
df
2-Nov
Color Count %
index
blue 1 14.285714
green 1 14.285714
red 4 57.142857
yellow 1 14.285714
Total 7 100.000000
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/526154.html
下一篇:分析和過濾資料框中的調查回應
