假設我有這樣的資料:
Length Width Height
100 140 100
120 150 110
140 160 120
160 170 130
170 190 140
200 200 150
210 210 160
220 220 170
現在,我想知道每列中的資料以一定的增量分布例如:如果我想查看 Length 列中的資料分布,從 100 到 160,增量為 30,并且我想看到類似的輸出
Min Max count Percentage Remaining values(out the range which we have given)
100 130 1 12.5 7
130 160 2 25 5
以及如何從中繪制條形圖?請幫忙
uj5u.com熱心網友回復:
您可以使用pd.cut來實作您的目標:
out = df.groupby(pd.cut(df['Length'], np.arange(100, 160 1, 30)))['Length'] \
.agg(**{'Min': 'min', 'Max': 'max', 'Count': 'count',
'Percentage': lambda x: 100 * x.size / len(df),
'Remaining': lambda x: len(df) - x.size})
print(out)
# Output
Min Max Count Percentage Remaining
Length
(100, 130] 120 120 1 12.5 7
(130, 160] 140 160 2 25.0 6
uj5u.com熱心網友回復:
IIUC,您可以使用pandas.cut:
(df.groupby(pd.cut(df['Length'], bins=[100,130,160]))
['Length'].agg(count='count')
.assign(**{'Remaining value': lambda d: len(df)-d['count'],
'Percentage': lambda d: d['count']/len(df)*100,
})
)
輸出:
count Remaining value Percentage
Length
(100, 130] 1 7 12.5
(130, 160] 2 6 25.0
對于繪圖,您可以使用許多庫自動完成。
以seaborn為例:
import seaborn as sns
sns.histplot(df, bins=[100,130,160,190,220])
輸出:

要么
sns.displot(df.melt(), x='value', col='variable',
kind='hist', bins=[100,130,160,190,220])
輸出:

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/440743.html
標籤:Python 熊猫 数据框 matplotlib 数据分析
下一篇:不同大小的Python圖
