Histograms in IronPython QuickStart Sample

Illustrates how to create histograms using the Histogram class in the Extreme.DataAnalysis namespace in IronPython.

View this sample in: C# Visual Basic F#

import numerics

from System import Array

from Extreme.Mathematics import *
from Extreme.Statistics import *

# Illustrates the use of the Histogram class. 

# Histograms are used to summarize the distribution of data.
# This QuickStart sample creates a histogram from data 
# in a variety of ways.

# We use the test scores of students on a hypothetical national test.
# First we create a NumericalVariable that holds the test scores.
group1Data = Vector([ \
	62, 77, 61, 94, 75, 82, 86, 83, 64, 84, \
    68, 82, 72, 71, 85, 66, 61, 79, 81, 73 ])
group1Results = NumericalVariable("Class 1", group1Data)

# We can create a histogram with evenly spaced bins by specifying the lower bound, # the upper bound, and the number of bins:
histogram1 = Histogram(50, 100, 5)
# We can also provide the bounds explicitly:
bounds = Array[float]([50, 62, 74, 88, 100])
histogram2 = Histogram(bounds)

# Or we can first create a NumericalScale object
scale = NumericalScale(50, 100, 5)
histogram3 = Histogram(scale)

# To tally the results, we simply call the Tabulate method.
# The data can be supplied as a NumericalVariable:
# or simply as a Double array:

# You can add multiple data sets to the same histogram:
histogram2.Tabulate(Vector([74, 68, 89 ]))
# Or you can add individual data points using the Increment method.
# This will increment the count of the bin that contains 
# the specified value:

# The Clear method clears all the data:

# The Bins property returns a collection of HistogramBin objects:
bins = histogram1.Bins
# It has a Count property that returns the total number of bins:
print "# bins:", bins.Count
# and an indexer property that returns a HistogramBin object:
bin = bins[2]
# HistogramBin objects have a lower bound, an upper bound, and a value:
print "Bin 2 has lower bound", bin.LowerBound
print "Bin 2 has upper bound", bin.UpperBound
print "Bin 2 has value", bin.Value

# The histogram's FindBin method returns the Histogram bin
# that contains a specified value:
bin = histogram1.FindBin(83)
print "83 is in bin", bin.Index

# You can use the Bins property to iterate through all the bins
# in a foreach loop:
for bin2 in histogram1.Bins:
	print "Bin {0}: {1}".format(bin2.Index, bin2.Value)

# The histogram's GetTotals method returns a double array 
# that contains the total for each bin in the histogram:
totals = histogram1.GetTotals()