Our great sponsors
-
daany
Daany - .NET DAta ANalYtics .NET library with the implementation of DataFrame, Time series decompositions and Linear Algebra routines BLASS and LAPACK.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
/// /// Adds a total_score column to the DataFrame by calculating the cumulative sum /// /// DataFrame to which new column is added public void AddTotalScorePerBallDaany(Daany.DataFrame df) { // https://github.com/bhrnjica/daany // calculate total_score per ball df.AddCalculatedColumn(CSV_COLUMN_TOTAL_SCORE, (r, i) => { var response = Convert.ToSingle(r[CSV_COLUMN_SCORE]); return 0; }); int previousMatchId = -1; int previousInning = -1; float previousScore = -1; int rowIndex = 0; foreach (var dfRow in df.GetRowEnumerator()) { var matchId = (int)dfRow[0]; var inning = (int)dfRow[4]; var score = Convert.ToSingle(dfRow[df.Columns.Count - 2]); // Score if (previousMatchId == -1) // First time { // Reset previousMatchId = matchId; previousInning = inning; if (previousScore == -1) { previousScore = score; } } if (matchId == previousMatchId && inning == previousInning) { float newScore = previousScore + score; // Total Score dfRow[df.Columns.Count - 1] = newScore; df[rowIndex, df.Columns.Count - 1] = newScore; previousScore = newScore; } else { // Total Score dfRow[df.Columns.Count - 1] = score; df[rowIndex, df.Columns.Count - 1] = score; // Reset previousMatchId = -1; previousInning = -1; previousScore = score; } rowIndex++; } }
Notebook: https://github.com/praveenraghuvanshi/tech-sessions/blob/master/08022022-Developer-Week-2022/CricketAnalysis.ipynb