using System; using System.IO; using CenterSpace.NMath.Core; namespace CenterSpace.NMath.Examples.CSharp { /// <summary> /// A .NET example in C# showing how to manipulate data that has missing values. /// </summary> class MissingValuesExample { static void Main( string[] args ) { // In the data, missing values are denoted by -1. Set the defaults // accordingly. StatsSettings.IntegerMissingValue = -1; // Read in data from a tab-delimited file. Data has fields for name, manufacturer, // type, calories, protein, fat, sodium, fiber, carbohydrates, sugars, potassium, // vitamins, shelf weight, cups, rating, age, gender and grade. DataFrame data = DataFrame.Load( "MissingValuesExample.dat" ); // Print out initial data. Console.WriteLine(); Console.WriteLine( data ); Console.WriteLine(); // Check how many missing values are in each numeric column for ( int c = 0; c < data.Cols; c++ ) { if ( data[c].IsNumeric ) { Console.WriteLine( data[c].Label + ": " + ( StatsFunctions.Count( data[c] ) - StatsFunctions.NaNCount( data[c] ) ) ); } } Console.WriteLine(); // The columns "carbo", "sugars" and "potass" contain missing values. // We can still perform descriptive statistics on them. Console.WriteLine( "Average sugar content: " + StatsFunctions.NaNMean( data["sugars"] ).ToString( "G5" ) ); // Sorting routines give ambiguous results when columns contain NaN values. // We can strip the missing values first. DFIntColumn stripped = (DFIntColumn) StatsFunctions.NaNRemove( data["sugars"] ); Console.WriteLine( "Median sugar content: " + StatsFunctions.Median( stripped ).ToString( "G5" ) ); Console.WriteLine( "90th percentile sugar content: " + StatsFunctions.Percentile( stripped, 0.9 ).ToString( "G5" ) ); Console.WriteLine(); // Create a sub-frame that contains only rows without missing values. DataFrame cleanData = data.CleanRows(); Console.WriteLine( "Stripped " + ( data.Rows - cleanData.Rows ) + " rows containing missing values." ); Console.WriteLine(); Console.WriteLine( "Press Enter Key" ); Console.Read(); } } }← All NMath Code Examples