Calculating Column Averages from a CSV File



I am trying to calculate column averages (excluding 0's) for all the
columns in a CSV file except the first column. My input CSV file is
as follows:

pickcpua.dat

IMAGINGNY,1.45,0.42,1.54,1.49,1.47,1.36,1.81,0.47,1.8,0.55,0.38
JBSQLTST,1.29,1.09,1.13,1.88,1.11,1.44,1.25,1.23,1.05,1.39,1.61
SNYCSQL,4.58,4.24,3.87,3.9,4.13,2.04,3.34,7.6,3.58,1.26,7.45
Snynetsrv,
26,26.34,24.59,26.46,26.24,26.14,32.35,31.77,31.77,29.92,26.59
W32SPLMCOR01,8.27,13.23,7.73,8.85,9.15,13.95,0,0,0,0,0
W32SDAPSCT01,3.07,3.14,2.97,3.28,21.65,54.23,3.16,3.02,3.26,2.77,3.40
W32SDASALM01,1.22,1.3,1.11,0.92,1.57,1.06,1.01,0.87,0.93,2.26,0.91
W32SMSCSD02,15.38,12,22.32,23.3,19.74,46.42,2.06,1.7,2.17,2.85,1.74
W32SPLMCOR02,13.24,13.23,7.73,8.85,9.15,13.95,0,0,0,0,0

I have been able to calculate a column average for a particular column
(excluding 0's) using the following perl code:

#!/usr/bin/perl

use strict;
use warnings;

my $file = $ARGV[0] || 'pickcpua.dat';
my $col = $ARGV[1];

open(my $CPUFILE, "<", $file) || die "Unable to open sorted file !";

my @values;
while (<$CPUFILE>) {
chomp;
my @col = split /,/; # Assume basic comma delimited

if ($col[$ARGV[1]] > 0) {
push @values, $col[$ARGV[1]]; # Column 2 is what we want
}
}
my $total = 0;
$total += $_ for @values;
my $average = $total /@values;

print "Average CPU Time for all servers in cpuatest.dat file is
$average";

When trying to have perl calculate the column average(excluding 0's)
for all columns excluding the first column, using the following
perl code, perl is calculating the 2nd column's average 9 times rather
than computing the column average for the 2nd through 10th
column. The code is as follows:

#!/usr/bin/perl

use strict;
use warnings;

my $file = $ARGV[0] || 'pickcpua.dat';

open(my $CPUFILE, "<", $file) || die "Unable to open sorted file !";

my @values;
my @colval;

for($index=1; $index<10; $index++) {

while (<$CPUFILE>) {
chomp;
my @col = split /,/; # Assume basic comma delimited

if ($col[$index] > 0) {
push @values, $col[$index]; # Column 2 is what we want
push @colval, $col[$index]; # Column 2 is what we want
}
} ## End while loop

my $total = 0;
$total += $_ for @colval;

print "Pass $index through data \n";
print "colval is @colval \n";
print "values is @values \n";

my $average = $total /@colval;

print "Average CPU Time for Column for all servers in cpuatest.dat
file is $average \n";
} ## End of initial $index for loop

close $CPUFILE or die;

I would appreciate it if someone could tell me what I am doing wrong
in going from the calculation of one column's average to
caalculating the column average for all columns other than the first
column. I do not think I am using the for loop properly in this case

.



Relevant Pages

  • Re: Dataset not Clearing
    ... t> I am trying to clear my dataset each time I read a new csv file but ... t> foreach (string strFile in strFiles) ... t> It should be what is in the first row, first column of the table, ...
    (microsoft.public.dotnet.framework.aspnet)
  • Re: Import CSV file
    ... When I try to import a CSV file (downloaded from Etrade), ... in the first column with the commas intact. ... I tried saving it as an Excel CSV file and re-importing. ...
    (microsoft.public.mac.office.excel)
  • Re: When I open a *.CSV file, text appear in the first column? What c.
    ... When I open in Excel 2003 a CSV file, the text appear in the first column. ... Prev by Date: ...
    (microsoft.public.excel.setup)
  • Missing commas in csv save
    ... I have some code which copies a table from an Excel workbook, ... first column has no header at all. ... Normally this gets saved into a csv file as: ... favour by dropping it like it also drops empty rows etc. ...
    (microsoft.public.excel)
  • Re: How to remove trailing commas and points from a CSV file ?
    ... Yiur script is working flawlessly ... portion of your code as an external file? ... Should I substitue the for the name of the CSV file in the perl code? ...
    (perl.beginners)

Loading