簡體   English   中英

Pandas計算每個范圍之間的值的數量

[英]Pandas calculate number of values between each range

我想在某些自定義范圍之間找到我的數據計數。

說我有一些數據:

import random

my_randoms = random.sample(xrange(100), 10)        
test = pd.DataFrame(my_randoms,columns = ["x"])

如何生成顯示不同范圍之間的值數的數據框? 例如,假設我想看看在0-19,20-39,40-59,60-79,80-100之間出現了多少個值。 輸出數據框將有一列包含這些范圍,另一列包含計數。

我可以想到一些丑陋的方法,包括使用.apply獲取一個新的列列表,說明它們之間的值(然后做一個groupby),但我懷疑pandas有一種更清潔的方式潛伏着。

Per Jarad與其他問題的鏈接:

test.groupby(pd.cut(test['x'], np.arange(0,100,20))).count()

可能有更好的方法。 我自己只是熊貓新手,但目前這個怎么樣:

test.query(test.x.isin(range(20)))

pandas和numpy允許布爾索引 ,這是一個丑陋的方法嗎?

ranges = [ (0,19), (20, 39), (40, 69) ...]
cnt = []
for range in ranges:
    tmp = ranges[(ranges['x'] > range[0]) & (range['x'] <= range[1]) ]
    cnt.append( len(tmp) )

您可以使用numpy.histrogram函數。

import numpy as np
series = [0, 20, 40, ...]
count, bin_edge = np.histogram( bins = series )

根據numpy.histogram ,如果bins是一個序列,它定義bin邊緣,包括最右邊緣,允許不均勻的bin寬度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM