数据分布 python
Distribution of data with python
假设我有这样的数据:
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
以及如何从中绘制条形图?
请帮忙
您可以使用 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
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])
输出:
假设我有这样的数据:
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
以及如何从中绘制条形图? 请帮忙
您可以使用 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
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])
输出: