J'ai un ensemble de valeurs dans float (toujours inférieur à 0). Ce que je veux bin dans l'histogramme, je, e. chaque barre histogramme contient plage de valeurs [0,0.150)Comment archiver des séries de valeurs flottantes dans l'histogramme en Python?
Les données que j'ai ressemble à ceci:
0.000
0.005
0.124
0.000
0.004
0.000
0.111
0.112
Whith mon code ci-dessous je me attends à obtenir un résultat qui ressemble à
[0, 0.005) 5
[0.005, 0.011) 0
...etc..
J'ai essayé de faire un tel binning avec ce code à moi. Mais cela ne semble pas fonctionner. Quelle est la bonne façon de le faire?
#! /usr/bin/env python
import fileinput, math
log2 = math.log(2)
def getBin(x):
return int(math.log(x+1)/log2)
diffCounts = [0] * 5
for line in fileinput.input():
words = line.split()
diff = float(words[0]) * 1000;
diffCounts[ str(getBin(diff)) ] += 1
maxdiff = [i for i, c in enumerate(diffCounts) if c > 0][-1]
print maxdiff
maxBin = max(maxdiff)
for i in range(maxBin+1):
lo = 2**i - 1
hi = 2**(i+1) - 1
binStr = '[' + str(lo) + ',' + str(hi) + ')'
print binStr + '\t' + '\t'.join(map(str, (diffCounts[i])))
~
Eh bien, dans l'exemple « ce que vous attendez ... », si vous avez des plages définies comme [0, 0,005) (droit ouvert) et [0,005, 0,011) (fermé à gauche) puis la sortie doit être: [0, 0.005) 4 [0.005, 0.011) 1 etc ... – Gacek
"Ne semble pas fonctionner?" Une plainte spécifique? Ou pensez-vous que tout le monde doit l'exécuter et essayer de deviner ce que vous n'aimez pas dans la sortie? –
Pour éviter de réinventer la roue, en particulier si l'étape suivante consiste à tracer votre histogramme: vous devriez envisager d'utiliser le framework Matplotlib qui gère tout cela. – RedGlyph