Perlテキスト処理・正規表現入門

非常に大きなファイルの処理 part.3 - 数字を集計しよう -

CSVが見やすくなったところで、数字を集計しましょう。

以下のデータを使います。

year,month,sales,profit
2019,1,1000,800
2019,2,2000,900
2019,3,3000,1000

このデータを使って、2019年の売上げ(sales)はいくらなのか出しましょう。こんな感じですね。

year,sales
2019,6000


まず、コードをこう書きます。

データ処理コード(proc_data.pl)

#! /usr/bin/env perl
use strict;
use warnings;

while (my $line = <>) {
  chomp $line;
  my @row = split /,/, $line;

  print "@row\n";
}

実行結果

year month sales profit
2019 1 1000 800
2019 2 2000 900
2019 3 3000 1000

いや、何も変わってないじゃん!と思われますが、カンマが無くなってますね。

ここでコードを書き換えてみます(左端に-を付けたのが消した箇所、+を付けたのが書き換えた箇所です)。

データ処理コード(proc_data.pl)

#! /usr/bin/env perl
use strict;
use warnings;

while (my $line = <>) {
  chomp $line;
  my @row = split /,/, $line;

-  print "@row\n";
+  print "$row[0]\n";
}

実行結果

year
2019
2019
2019

yearの列しか出なくなりましたね!

データを集計するときには、このように、列の単位でデータを扱えたほうが便利です。次回は、列の単位で数字を集計してみましょう。

目次