Changeset 14915 for branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/StatisticsView.cs
- Timestamp:
- 05/03/17 14:33:09 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/StatisticsView.cs
r14546 r14915 21 21 22 22 using System; 23 using System.Collections; 23 24 using System.Collections.Generic; 25 using System.Linq; 24 26 using System.Windows.Forms; 25 27 using HeuristicLab.Core.Views; 26 28 using HeuristicLab.Data; 27 29 using HeuristicLab.MainForm; 30 using HeuristicLab.MainForm.WindowsForms; 28 31 29 32 namespace HeuristicLab.DataPreprocessing.Views { … … 33 36 public partial class StatisticsView : ItemView { 34 37 38 private bool horizontal = true; 39 35 40 private StringMatrix statisticsMatrix; 36 41 37 private static readonly string[] RowNames = new[] {42 private static readonly string[] StatisticsNames = new[] { 38 43 "Type", 39 44 "Missing Values", … … 42 47 "Median", 43 48 "Average", 44 " std. Deviation",49 "Std. Deviation", 45 50 "Variance", 46 51 "25th Percentile", … … 62 67 base.OnContentChanged(); 63 68 if (Content == null) { 64 txtRows.Text = ""; 65 txtColumns.Text = ""; 66 txtNumericColumns.Text = ""; 67 txtNominalColumns.Text = ""; 68 txtMissingValuesTotal.Text = ""; 69 rowsTextBox.Text = string.Empty; 70 columnsTextBox.Text = string.Empty; 71 numericColumnsTextBox.Text = string.Empty; 72 nominalColumnsTextBox5.Text = string.Empty; 73 missingValuesTextBox.Text = string.Empty; 74 totalValuesTextBox.Text = string.Empty; 69 75 stringMatrixView.Content = null; 70 76 statisticsMatrix = null; … … 84 90 } 85 91 86 private void UpdateData() { 87 var logic = Content.StatisticsLogic; 88 var rowCount = logic.GetRowCount(); 89 txtRows.Text = logic.GetColumnCount().ToString(); 90 txtColumns.Text = rowCount.ToString(); 91 txtNumericColumns.Text = logic.GetNumericColumnCount().ToString(); 92 txtNominalColumns.Text = logic.GetNominalColumnCount().ToString(); 93 txtMissingValuesTotal.Text = logic.GetMissingValueCount().ToString(); 94 95 statisticsMatrix = new StringMatrix(RowNames.Length, Content.PreprocessingData.Columns) { 96 RowNames = StatisticsView.RowNames, 97 ColumnNames = Content.PreprocessingData.VariableNames 98 }; 99 100 if (rowCount > 0) { 101 for (int i = 0; i < logic.GetColumnCount(); ++i) { 102 var data = GetList(i); 103 for (int j = 0; j < data.Count; j++) { 92 private void UpdateData(Dictionary<string, bool> oldVisibility = null) { 93 var logic = Content.StatisticsLogic; 94 rowsTextBox.Text = logic.GetColumnCount().ToString(); 95 columnsTextBox.Text = logic.GetRowCount().ToString(); 96 numericColumnsTextBox.Text = logic.GetNumericColumnCount().ToString(); 97 nominalColumnsTextBox5.Text = logic.GetNominalColumnCount().ToString(); 98 missingValuesTextBox.Text = logic.GetMissingValueCount().ToString(); 99 totalValuesTextBox.Text = (logic.GetColumnCount() * logic.GetRowCount() - logic.GetMissingValueCount()).ToString(); 100 101 var variableNames = Content.PreprocessingData.VariableNames.ToList(); 102 if (horizontal) 103 statisticsMatrix = new StringMatrix(StatisticsNames.Length, Content.PreprocessingData.Columns) { 104 RowNames = StatisticsView.StatisticsNames, 105 ColumnNames = variableNames 106 }; 107 else 108 statisticsMatrix = new StringMatrix(Content.PreprocessingData.Columns, StatisticsNames.Length) { 109 RowNames = variableNames, 110 ColumnNames = StatisticsView.StatisticsNames 111 }; 112 113 for (int i = 0; i < logic.GetColumnCount(); i++) { 114 var data = GetStatistics(i); 115 for (int j = 0; j < data.Count; j++) { 116 if (horizontal) 104 117 statisticsMatrix[j, i] = data[j]; 105 } 106 } 107 } 118 else 119 statisticsMatrix[i, j] = data[j]; 120 } 121 } 122 123 stringMatrixView.Parent.SuspendRepaint(); 108 124 stringMatrixView.Content = statisticsMatrix; 109 125 110 foreach (DataGridViewColumn column in stringMatrixView.DataGridView.Columns) { 111 var variable = column.HeaderText; 112 bool isInputTarget = Content.PreprocessingData.InputVariables.Contains(variable) 113 || Content.PreprocessingData.TargetVariable == variable; 114 column.Visible = isInputTarget; 115 } 126 var grid = stringMatrixView.DataGridView; 127 int idx = 0; 128 var list = horizontal ? grid.Columns : grid.Rows as IList; 129 foreach (DataGridViewBand band in list) { 130 var variable = variableNames[idx++]; 131 if (oldVisibility != null) { 132 band.Visible = !oldVisibility.ContainsKey(variable) || oldVisibility[variable]; 133 } 134 } 135 if (horizontal) 136 stringMatrixView.UpdateColumnHeaders(); 137 else 138 stringMatrixView.UpdateRowHeaders(); 139 116 140 stringMatrixView.DataGridView.AutoResizeColumns(); 117 118 //foreach (DataGridViewRow row in stringMatrixView.DataGridView.Rows) { 119 // var variable = (string)row.HeaderCell.Value; 120 // bool isInputTarget = Content.PreprocessingData.InputVariables.Contains(variable) 121 // || Content.PreprocessingData.TargetVariable == variable; 122 // row.Visible = isInputTarget; 123 //} 124 } 125 126 private List<string> GetList(int i) { 141 stringMatrixView.Parent.ResumeRepaint(true); 142 } 143 144 private List<string> GetStatistics(int varIdx) { 127 145 List<string> list; 128 146 var logic = Content.StatisticsLogic; 129 if (logic.VariableHasType<double>( i)) {130 list = GetDoubleColumns( i);131 } else if (logic.VariableHasType<string>( i)) {132 list = GetStringColumns( i);133 } else if (logic.VariableHasType<DateTime>( i)) {134 list = GetDateTimeColumns( i);147 if (logic.VariableHasType<double>(varIdx)) { 148 list = GetDoubleColumns(varIdx); 149 } else if (logic.VariableHasType<string>(varIdx)) { 150 list = GetStringColumns(varIdx); 151 } else if (logic.VariableHasType<DateTime>(varIdx)) { 152 list = GetDateTimeColumns(varIdx); 135 153 } else { 136 154 list = new List<string>(); 137 for (int j = 0; j < RowNames.Length; ++j) {155 for (int j = 0; j < StatisticsNames.Length; ++j) { 138 156 list.Add("unknown column type"); 139 157 } … … 142 160 } 143 161 144 private List<string> GetDoubleColumns(int columnIndex) {162 private List<string> GetDoubleColumns(int statIdx) { 145 163 var logic = Content.StatisticsLogic; 146 164 return new List<string> { 147 logic.GetColumnTypeAsString( columnIndex),148 logic.GetMissingValueCount( columnIndex).ToString(),149 logic.GetMin<double>( columnIndex,double.NaN).ToString(),150 logic.GetMax<double>( columnIndex,double.NaN).ToString(),151 logic.GetMedian( columnIndex).ToString(),152 logic.GetAverage( columnIndex).ToString(),153 logic.GetStandardDeviation( columnIndex).ToString(),154 logic.GetVariance( columnIndex).ToString(),155 logic.GetOneQuarterPercentile( columnIndex).ToString(),156 logic.GetThreeQuarterPercentile( columnIndex).ToString(),157 logic.GetMostCommonValue<double>( columnIndex,double.NaN).ToString(),158 logic.GetDifferentValuesCount<double>( columnIndex).ToString()165 logic.GetColumnTypeAsString(statIdx), 166 logic.GetMissingValueCount(statIdx).ToString(), 167 logic.GetMin<double>(statIdx, double.NaN).ToString(), 168 logic.GetMax<double>(statIdx, double.NaN).ToString(), 169 logic.GetMedian(statIdx).ToString(), 170 logic.GetAverage(statIdx).ToString(), 171 logic.GetStandardDeviation(statIdx).ToString(), 172 logic.GetVariance(statIdx).ToString(), 173 logic.GetOneQuarterPercentile(statIdx).ToString(), 174 logic.GetThreeQuarterPercentile(statIdx).ToString(), 175 logic.GetMostCommonValue<double>(statIdx, double.NaN).ToString(), 176 logic.GetDifferentValuesCount<double>(statIdx).ToString() 159 177 }; 160 178 } 161 179 162 private List<string> GetStringColumns(int columnIndex) {180 private List<string> GetStringColumns(int statIdx) { 163 181 var logic = Content.StatisticsLogic; 164 182 return new List<string> { 165 logic.GetColumnTypeAsString( columnIndex),166 logic.GetMissingValueCount( columnIndex).ToString(),183 logic.GetColumnTypeAsString(statIdx), 184 logic.GetMissingValueCount(statIdx).ToString(), 167 185 "", //min 168 186 "", //max … … 173 191 "", //quarter percentile 174 192 "", //three quarter percentile 175 logic.GetMostCommonValue<string>( columnIndex,string.Empty) ?? "",176 logic.GetDifferentValuesCount<string>( columnIndex).ToString()193 logic.GetMostCommonValue<string>(statIdx,string.Empty) ?? "", 194 logic.GetDifferentValuesCount<string>(statIdx).ToString() 177 195 }; 178 196 } 179 197 180 private List<string> GetDateTimeColumns(int columnIndex) {198 private List<string> GetDateTimeColumns(int statIdx) { 181 199 var logic = Content.StatisticsLogic; 182 200 return new List<string> { 183 logic.GetColumnTypeAsString( columnIndex),184 logic.GetMissingValueCount( columnIndex).ToString(),185 logic.GetMin<DateTime>( columnIndex,DateTime.MinValue).ToString(),186 logic.GetMax<DateTime>( columnIndex,DateTime.MinValue).ToString(),187 logic.GetMedianDateTime( columnIndex).ToString(),188 logic.GetAverageDateTime( columnIndex).ToString(),189 logic.GetStandardDeviation( columnIndex).ToString(),190 logic.GetVariance( columnIndex).ToString(), //variance191 logic.GetOneQuarterPercentile( columnIndex).ToString(),192 logic.GetThreeQuarterPercentile( columnIndex).ToString(),193 logic.GetMostCommonValue<DateTime>( columnIndex,DateTime.MinValue).ToString(),194 logic.GetDifferentValuesCount<DateTime>( columnIndex).ToString()201 logic.GetColumnTypeAsString(statIdx), 202 logic.GetMissingValueCount(statIdx).ToString(), 203 logic.GetMin<DateTime>(statIdx, DateTime.MinValue).ToString(), 204 logic.GetMax<DateTime>(statIdx, DateTime.MinValue).ToString(), 205 logic.GetMedianDateTime(statIdx).ToString(), 206 logic.GetAverageDateTime(statIdx).ToString(), 207 logic.GetStandardDeviation(statIdx).ToString(), 208 logic.GetVariance(statIdx).ToString(), 209 logic.GetOneQuarterPercentile(statIdx).ToString(), 210 logic.GetThreeQuarterPercentile(statIdx).ToString(), 211 logic.GetMostCommonValue<DateTime>(statIdx, DateTime.MinValue).ToString(), 212 logic.GetDifferentValuesCount<DateTime>(statIdx).ToString() 195 213 }; 196 214 } … … 200 218 } 201 219 220 #region Show/Hide Variables 202 221 private void checkInputsTargetButton_Click(object sender, EventArgs e) { 203 foreach (DataGridViewColumn column in stringMatrixView.DataGridView.Columns) { 204 var variable = column.HeaderText; 222 var grid = stringMatrixView.DataGridView; 223 var list = horizontal ? grid.Columns : grid.Rows as IList; 224 var variableNames = Content.PreprocessingData.VariableNames.ToList(); 225 int idx = 0; 226 foreach (DataGridViewBand band in list) { 227 var variable = variableNames[idx++]; 205 228 bool isInputTarget = Content.PreprocessingData.InputVariables.Contains(variable) 206 229 || Content.PreprocessingData.TargetVariable == variable; 207 column.Visible = isInputTarget; 208 } 209 } 210 230 band.Visible = isInputTarget; 231 if (horizontal) 232 stringMatrixView.UpdateColumnHeaders(); 233 else 234 stringMatrixView.UpdateRowHeaders(); 235 } 236 237 } 211 238 private void checkAllButton_Click(object sender, EventArgs e) { 212 foreach (DataGridViewColumn column in stringMatrixView.DataGridView.Columns) { 213 column.Visible = true; 214 } 215 } 216 239 var grid = stringMatrixView.DataGridView; 240 var list = horizontal ? grid.Columns : grid.Rows as IList; 241 foreach (DataGridViewBand band in list) { 242 band.Visible = true; 243 } 244 if (horizontal) 245 stringMatrixView.UpdateColumnHeaders(); 246 else 247 stringMatrixView.UpdateRowHeaders(); 248 } 217 249 private void uncheckAllButton_Click(object sender, EventArgs e) { 218 foreach (DataGridViewColumn column in stringMatrixView.DataGridView.Columns) { 219 column.Visible = false; 220 } 221 } 250 var grid = stringMatrixView.DataGridView; 251 var list = horizontal ? grid.Columns : grid.Rows as IList; 252 foreach (DataGridViewBand band in list) { 253 band.Visible = false; 254 } 255 } 256 #endregion 257 258 #region Orientation 259 private void horizontalRadioButton_CheckedChanged(object sender, EventArgs e) { 260 var grid = stringMatrixView.DataGridView; 261 var oldVisibility = new Dictionary<string, bool>(); 262 var variableNames = Content.PreprocessingData.VariableNames.ToList(); 263 if (stringMatrixView.Content != null) { 264 var list = horizontal ? grid.Columns : grid.Rows as IList; 265 int idx = 0; 266 foreach (DataGridViewBand band in list) { 267 var variable = variableNames[idx++]; 268 oldVisibility.Add(variable, band.Visible); 269 } 270 } 271 horizontal = horizontalRadioButton.Checked; 272 UpdateData(oldVisibility); 273 } 274 private void verticalRadioButton_CheckedChanged(object sender, EventArgs e) { 275 // everything is handled in horizontalRadioButton_CheckedChanged 276 } 277 #endregion 222 278 } 223 279 }
Note: See TracChangeset
for help on using the changeset viewer.