我有以下数据框:
df = [1.2, 0.2, 1.5, 2.49, 2.5, 25.5, 25.49, 14.1, 15.5, 8, 9, 9.6, 5.8, 4.7]
我想计算df的舍入值。
例如:
= 0.5 <= 1.49应该为1
= 1.5 <= 2.49应该为2
Expected output = [1, 0, 2, 2, 3, 26, 25, 14, 16, 8, 9, 10, 6, 5]
那之后我该如何计算频率表?在这种情况下,输出如下:
Bin = [0, 1, 2, 3, 5, 6, 8, 9, 10, 14, 16, 25, 26]
freq = [1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
但是我也想填补bin值之间的空白。
例如,没有频率。可用于4,7,11,12,13,15,17,18,19,20,21,22,23,24然后应变为0。
最终输出应为:
Bin = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,18, 19, 20, 21, 22, 23, 24, 25, 26]
freq = [1, 1, 2, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1]
答案 0 :(得分:1)
import math
df = [1.2, 0.2, 1.5, 2.49, 2.5, 25.5, 25.49, 14.1, 15.5, 8, 9, 9.6, 5.8, 4.7]
df = [math.floor(x) if x%1 < .5 else math.ceil(x) for x in df]
freq = {x:0 for x in range(0, max(df)+1)}
for x in df:
freq[x] += 1
print(freq)
哪个输出如下:
{0:1、1:1、2:2、3:1、4:0、5:1、6:1、7:0、8:1、9:1、10:1、11: 0、12:0、13:0、14:1、15:0、16:1、17:0、18:0、19:0、20:0、21:0、22:0、23:0, 24:0,25:1,26:1}
如果绝对必须在列表中,则
bins = []
counts = []
for k, v in freq.items():
bins.append(k)
counts.append(v)