Free cookie consent management tool by TermsFeed Policy Generator

source: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/StatisticsView.cs @ 10534

Last change on this file since 10534 was 10534, checked in by rstoll, 11 years ago
  • StatisticsView column specific information added
File size: 5.5 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Windows.Forms;
4using HeuristicLab.Core.Views;
5using HeuristicLab.MainForm;
6using HeuristicLab.MainForm.WindowsForms;
7
8namespace HeuristicLab.DataPreprocessing {
9
10  [View("Statistics View")]
11  [Content(typeof(StatisticsContent), false)]
12  public partial class StatisticsView : ItemView {
13
14    private List<List<string>> columnsRowsMatrix;
15    private readonly int COLUMNS = 10;
16
17    public new StatisticsContent Content {
18      get { return (StatisticsContent)base.Content; }
19      set { base.Content = value; }
20    }
21
22    public StatisticsView() {
23      InitializeComponent();
24    }
25
26    protected override void OnContentChanged() {
27      base.OnContentChanged();
28      if (Content == null) {
29        txtRows.Text = "";
30        txtColumns.Text = "";
31        txtNumericColumns.Text = "";
32        txtNominalColumns.Text = "";
33        txtMissingValuesTotal.Text = "";
34        dataGridView.Columns.Clear();
35      } else {
36        UpdateData();
37      }
38    }
39    private void UpdateData() {
40      var logic = Content.StatisticsLogic;
41      txtRows.Text = logic.GetRowCount().ToString();
42      txtColumns.Text = logic.GetColumnCount().ToString();
43      txtNumericColumns.Text = logic.GetNumericColumnCount().ToString();
44      txtNominalColumns.Text = logic.GetNominalColumnCount().ToString();
45      txtMissingValuesTotal.Text = logic.GetMissingValueCount().ToString();
46
47      columnsRowsMatrix = new List<List<string>>();
48      DataGridViewColumn[] columns = new DataGridViewColumn[10];
49      for (int i = 0; i < COLUMNS; ++i) {
50        var column = new DataGridViewTextBoxColumn();
51        column.FillWeight = 1;
52        columns[i] = column;
53      }
54
55      columns[0].HeaderCell.Value = "Type";
56      columns[1].HeaderCell.Value = "Missing Values";
57      columns[2].HeaderCell.Value = "Min";
58      columns[3].HeaderCell.Value = "Max";
59      columns[4].HeaderCell.Value = "Median";
60      columns[5].HeaderCell.Value = "Average";
61      columns[6].HeaderCell.Value = "std. Deviation";
62      columns[7].HeaderCell.Value = "Variance";
63      columns[8].HeaderCell.Value = "Most Common Value";
64      columns[9].HeaderCell.Value = "Num. diff. Values";
65
66      for (int i = 0; i < logic.GetColumnCount(); ++i) {
67        List<string> list;
68        if (logic.IsType<double>(i)) {
69          list = GetDoubleColumns(i);
70        } else if (logic.IsType<string>(i)) {
71          list = GetStringColumns(i);
72        } else if (logic.IsType<DateTime>(i)) {
73          list = GetDateTimeColumns(i);
74        } else {
75          list = new List<string>();
76          for (int j = 0; j < COLUMNS; ++j) {
77            list.Add("unknown column type");
78          }
79        }
80        columnsRowsMatrix.Add(list);
81      }
82
83      dataGridView.Columns.Clear();
84      dataGridView.Columns.AddRange(columns);
85      dataGridView.RowCount = columnsRowsMatrix.Count;
86
87      for (int i = 0; i < columnsRowsMatrix.Count; ++i) {
88        dataGridView.Rows[i].HeaderCell.Value = logic.GetVariableName(i);
89      }
90      dataGridView.AllowUserToResizeColumns = true;
91    }
92
93    private List<string> GetDoubleColumns(int columnIndex) {
94      var logic = Content.StatisticsLogic;
95      return new List<string> {
96        logic.GetColumnTypeAsString(columnIndex),
97        logic.GetMissingValueCount(columnIndex).ToString(),
98        logic.GetMin<double>(columnIndex).ToString(),
99        logic.GetMax<double>(columnIndex).ToString(),
100        logic.GetMedian(columnIndex).ToString(),
101        logic.GetAverage(columnIndex).ToString(),
102        logic.GetStandardDeviation(columnIndex).ToString(),
103        logic.GetVariance(columnIndex).ToString(),
104        logic.GetMostCommonValue<double>(columnIndex).ToString(),
105        logic.GetDifferentValuesCount<double>(columnIndex).ToString()
106      };
107    }
108
109    private List<string> GetStringColumns(int columnIndex) {
110      var logic = Content.StatisticsLogic;
111      return new List<string> {
112        logic.GetColumnTypeAsString(columnIndex),
113        logic.GetMissingValueCount(columnIndex).ToString(),
114        "", //min
115        "", //max
116        "", //median
117        "", //average
118        "", //standard deviation
119        "", //variance
120        logic.GetMostCommonValue<string>(columnIndex).ToString(),
121        logic.GetDifferentValuesCount<string>(columnIndex).ToString()
122      };
123    }
124
125    private List<string> GetDateTimeColumns(int columnIndex) {
126      var logic = Content.StatisticsLogic;
127      return new List<string> {
128        logic.GetColumnTypeAsString(columnIndex),
129        logic.GetMissingValueCount(columnIndex).ToString(),
130        logic.GetMin<DateTime>(columnIndex).ToString(),
131        logic.GetMax<DateTime>(columnIndex).ToString(),
132        logic.GetMedianDateTime(columnIndex).ToString(),
133        logic.GetAverageDateTime(columnIndex).ToString(),
134        logic.GetStandardDeviation(columnIndex).ToString(),
135        logic.GetVariance(columnIndex).ToString(), //variance
136        logic.GetMostCommonValue<DateTime>(columnIndex).ToString(),
137        logic.GetDifferentValuesCount<DateTime>(columnIndex).ToString()
138      };
139    }
140
141    private List<string> GetDoubleColums(int i) {
142      throw new NotImplementedException();
143    }
144
145    private void dataGridView_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e) {
146      if (Content != null && e.RowIndex < columnsRowsMatrix.Count && e.ColumnIndex < columnsRowsMatrix[0].Count) {
147        e.Value = columnsRowsMatrix[e.RowIndex][e.ColumnIndex];
148      }
149    }
150  }
151}
Note: See TracBrowser for help on using the repository browser.