CSVで特定の項目をカウント、ソートして出力
タイトルの通り。こんな形式のデータがあって、
ジャスコ,みかん,30 ダイエー,みかん,34 ニチイ,リンゴ,50 ユニー,みかん,30 ヨーカドー,リンゴ,45
2カラム目のデータをカウントして、ソートして出力して欲しいとか。
pythonでやってみました。できたそーすがこんな。
#! /usr/bin/python # -*- coding: utf-8 -*- import sys import string import fileinput ship_count={} for line in fileinput.input(): data=string.split(line,",") name = data[2] if name in count: count[name] += 1 else: count[name] = 1 for i_name,i_count in sorted(count.items(),key=lambda x:x[1]): print i_name,icount
入力をなめて、仮想配列に突っ込む(pythonじゃハッシュって言うらしい)。でもって、forでソートしながら出力。
fileinput.input()がなかなか優秀で、入力ファイルを引数にしても、パイプにしても読んでくれる。
$ ./mm.py data.csv
と、
$ cat data.csv | mm.py
が同じ扱い。