gpt4 book ai didi

Python:对定义的间隔内的值进行计数

转载 作者:行者123 更新时间:2023-12-01 05:01:53 25 4
gpt4 key购买 nike

我从 CSV 导入数据,如下所示:

3.13
3.51
3.51
4.01
2.13
1.13
1.13
1.13
1.63
1.88

我现在想做的是COUNT这些间隔内的值:0-1、1-2、2-3、>3

所以结果是

0-1: 0
1-2: 5
2-3: 1
>3: 4

除了这个主要任务之外,我还想将结果计算为总数的百分比(例如 0-1:0%、1-2:50%,...)

我对 Python 很陌生,所以我在解决这个问题的尝试中陷入了困境。也许有一个预定义的函数可以解决我不知道的问题?

非常感谢您的帮助!!!

+++ 更新:+++

谢谢大家的回复。我有很多睾丸,但我猜我在读取 CSV 文件时有点不对劲。引用使用 a、b、c、d 表示不同间隔的代码片段,这些变量对我来说始终保持“0”。

这是我的实际代码:

import csv

a=b=c=0
with open('winter.csv', 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
for row in spamreader:
if row in range(0,1):
a += 1
elif row in range (1,2):
b += 1

print a,b

我还将 CSV 中的所有值转换为整数,但没有成功。在 CSV 中只有一列。有什么想法我做错了吗???

最佳答案

以下是如何使用 numpy 以非常简洁的方式完成此操作:

import sys
import csv
import numpy as np

with open('winter.csv') as csvfile:
field = 0 # (zero-based) field/column number containing the required values
float_list = [float(row[field]) for row in csv.reader(csvfile)]

#float_list = [3.13, 3.51, 3.51, 4.01, 2.13, 1.13, 1.13, 1.13, 1.63, 1.88]

hist, bins = np.histogram(float_list, bins=[0,1,2,3,sys.maxint])
bin_counts = zip(bins, bins[1:], hist) # [(bin_start, bin_end, count), ... ]

for bin_start, bin_end, count in bin_counts[:-1]:
print '{}-{}: {}'.format(bin_start, bin_end, count)

# different output required for last bin
bin_start, bin_end, count = bin_counts[-1]
print '>{}: {}'.format(bin_start, count)

哪些输出:

0-1: 0
1-2: 5
2-3: 1
>3: 4

大部分工作都是为了输出而调整数据。

它也非常灵活,因为通过将 bins 参数更改为 np.histogram() 可以轻松使用不同的间隔,例如通过更改 bins 添加另一个间隔:

hist, bins = np.histogram(float_list, bins=[0,1,2,3,4,sys.maxint])

输出:

0-1: 0
1-2: 5
2-3: 1
3-4: 3
>4: 1

关于Python:对定义的间隔内的值进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25930195/

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