title: Howto bin series of float values into histogram in Python?
body: <p>I have set of value in float (always less than 0). Which I want to bin into histogram,
  i,e. each bar in histogram contain range of value [0,0.150)</p>
  
  <p>The data I have looks like this:</p>
  
  <pre><code>0.000
  0.005
  0.124
  0.000
  0.004
  0.000
  0.111
  0.112
  </code></pre>
  
  <p>Whith my code below I expect to get result that looks like</p>
  
  <pre><code>[0, 0.005) 5
  [0.005, 0.011) 0
  ...etc.. 
  </code></pre>
  
  <p>I tried to do do such binning with this code of mine.
  But it doesn't seem to work. What's the right way to do it?</p>
  
  <pre><code>#! /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 &gt; 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])))
  </code></pre>
  
  <p>~                                                                   </p>