gpt4 book ai didi

python - 计算范围内的出现次数

转载 作者:行者123 更新时间:2023-12-02 02:06:03 25 4
gpt4 key购买 nike

我有一个数据集,例如:

ID Amt   TYPE
1 1000 A
2 200 NA
3 1100 S

我需要计算每种类型在特定范围内的出现次数:

Range     A_Count NA_Count S_Count
0-1000 1 1 0
1001-2000 0 0 1

我很努力得到这个,以便我可以使用这个数据框绘制一个图,其中范围作为 x 轴,计数作为 y 轴。我如何实现这一目标?

最佳答案

制表

第一cut()将金额放入范围,然后 crosstab()对比类型:

df['Range'] = pd.cut(df.Amt, bins=[0, 1000, 2000])
tab = pd.crosstab(df.Range, df.TYPE).add_suffix('_Count')

# TYPE A_Count NA_Count S_Count
# Range
# (0, 1000] 1 1 0
# (1000, 2000] 0 0 1
  • 请注意,如果此处的 NA 表示 NaN,则 replace()制表时将它们作为字符串:

    tab = pd.crosstab(df.Range, df.TYPE.replace(np.nan, 'NA')).add_suffix('_Count')
  • 默认情况下,制表将删除空箱。如果您想保留所有垃圾箱,请使用 dropna=False:

    tab = pd.crosstab(df.Range, df.TYPE, dropna=False).add_suffix('_Count')

绘图

使用 DataFrame.plot.bar() 绘制交叉表:

tab.plot.bar()

或者seaborn.barplot() :

sns.barplot(
data=tab.reset_index().melt('Range', value_name='Count'),
x='Range',
y='Count',
hue='TYPE',
)

crosstab figure

关于python - 计算范围内的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68436277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com