python数据按照分组进行频率分布_如何以自适应间隔对大 Pandas 中的偏斜数据进行分组 - python...

假设我的数据框中的一列包含以下频率的数据:

>>> vals = list(range(11000,12000)) + list(range(5600,6120)) + list(range(0,40,4)) + \

list(range(0,10000,300)) + list(range(1200,1400,3)) + list(range(0,10000,1100))

>>> df = pd.DataFrame({'freq' : vals})

我想看看它们的频率分布。我现在正在做的很简单,

>>> df.freq.value_counts(bins=20).sort_index()

(-12.0, 599.95] 13

(599.95, 1199.9] 3

(1199.9, 1799.85] 69

(1799.85, 2399.8] 3

(2399.8, 2999.75] 2

(2999.75, 3599.7] 3

(3599.7, 4199.65] 2

(4199.65, 4799.6] 3

(4799.6, 5399.55] 2

(5399.55, 5999.5] 403

(5999.5, 6599.45] 122

(6599.45, 7199.4] 3

(7199.4, 7799.35] 3

(7799.35, 8399.3] 2

(8399.3, 8999.25] 3

(8999.25, 9599.2] 2

(9599.2, 10199.15] 3

(10199.15, 10799.1] 0

(10799.1, 11399.05] 400

(11399.05, 11999.0] 600

Name: freq, dtype: int64

但是正如您所看到的,它没有什么聪明的。有很多带有很少频率的箱。如果它们处于特定阈值(例如5)以下,我希望将它们合并。所以我想拥有的是:

(-12.0, 599.95] 13

(599.95, 1199.9] 3

(1199.9, 1799.85] 69

(1799.85, 5399.55] 15

(5399.55, 5999.5] 403

(5999.5, 6599.45] 122

(6599.45, 10799.1] 16

(10799.1, 11399.05] 400

(11399.05, 11999.0] 600

我想不出任何合适的方法,因为我对间隔不太满意。同样,如果可以提出一种更好的方法来获得具有智能间隔的频率分布,那也将是很好的。

注意:我不是要在箱数中进行操作,因为那一定是手动操作,我想避免这种情况。

参考方案

您可以尝试qcut:

pd.qcut(df.freq, q=20).value_counts()

输出:

(-0.001, 1395.0] 83

(11835.0, 11917.0] 82

(1395.0, 5662.0] 82

(5662.0, 5743.0] 82

(5743.0, 5825.0] 82

(5825.0, 5907.0] 82

(5907.0, 5989.0] 82

(5989.0, 6070.0] 82

(6070.0, 11015.0] 82

(11015.0, 11097.0] 82

(11917.0, 11999.0] 82

(11179.0, 11261.0] 82

(11261.0, 11343.0] 82

(11343.0, 11425.0] 82

(11425.0, 11507.0] 82

(11507.0, 11589.0] 82

(11589.0, 11671.0] 82

(11671.0, 11753.0] 82

(11753.0, 11835.0] 82

(11097.0, 11179.0] 82

Name: freq, dtype: int64

python :安装 python 后,如何导入 Pandas - python

我已经安装了 python 。现在,当我尝试跑步时import pandas as pd 我收到以下错误Traceback (most recent call last): File "", line 1, in import pandasFile ImportError: …Python Pandas检查数据框是否不为空 - python

我有一个if语句,它在其中检查数据框是否为空。我的操作方式如下:if dataframe.empty: pass else: #do something 但实际上我需要:if dataframe is not empty: #do something 我的问题是-是否有一种.not_empty()方法可以实现这一目标?我还想问一下第二个版本在性能方面是否更好…Python Pandas:按分组分组,平均? - python

我有一个像这样的数据框:cluster org time 1 a 8 1 a 6 2 h 34 1 c 23 2 d 74 3 w 6 我想计算每个集群每个组织的平均时间。预期结果:cluster mean(time) 1 15 ((8+6)/2+23)/2 2 54 (74+34)/2 3 6 我不知道如何在熊猫中做到这一点,有人可以帮忙吗? 参考方案 如…重命名默认ID python - python

我想连接两个dataFrames,但是两个数据具有不同的ID,所以结果是错误的这是我的代码data=pd.DataFrame(df.columns) data1=data.drop(axis=1,index=[0,1,2,3]).transpose() data1 这是dataframe1另一个数据框:y=sma_algo(df.loc['H+L&…Python Pandas:在多列上建立布尔索引 - python

尽管至少有关于如何在Python的pandas库中为DataFrame编制索引的two good教程,但我仍然无法在一个以上的列上找到一种优雅的SELECT编码方式。>>> d = pd.DataFrame({'x':[1, 2, 3, 4, 5], 'y':[4, 5, 6, 7, 8]}) &gt…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值