CSVファイルを縦横変換する

いつも勉強させて頂いているcozeさんの日記を見て僕もやってみました。

cozeのPython日記 : No.0067

コンマ(,)で区切られた文字列のリストが与えられたとき、行と列を入れ替えて表示するプログラムです。

以下のファイルturncsv.pyは、実行時に引数として与えられたcsvファイルを読み込み、縦横変換を行って、ファイル名_turned.csvというファイルを作成する。

turncsv.py

import sys
if __name__ == '__main__':
filename = sys.argv[1]
csvlist = [line[:-1] for line in file(filename).readlines()]
newlist = zip(*(s.split(",") for s in csvlist))
#write file
savefile = open(filename[:-4] + '_turned.csv', 'w')
for xs in newlist:
str = ",".join(xs) + '\n'
savefile.write(str)
savefile.close()

読み込むファイルは以下。
data.csv

COLUMN1,COLUMN2,COLUMN3,COLUMN4,COLUMN5
TOKYO,5000,1,10,100
OSAKA,6000,2,20,100
NAGOYA,7000,3,30,100
SAPPORO,8000,4,40,100
HIROSHIMA,9000,5,50,100
FUKUOKA,10000,6,60,100
KYOTO,11000,7,70,100
AKITA,12000,8,80,100

実行。

C:\Python24>python.exe turncsv.py data.csv

実行結果(data_turned.csv)。

COLUMN1,TOKYO,OSAKA,NAGOYA,SAPPORO,HIROSHIMA,FUKUOKA,KYOTO,AKITA
COLUMN2,5000,6000,7000,8000,9000,10000,11000,12000
COLUMN3,1,2,3,4,5,6,7,8
COLUMN4,10,20,30,40,50,60,70,80
COLUMN5,100,100,100,100,100,100,100,100

本当はCSVファイルの扱いにはもっと色々とやることありますが、とりあえずはこんなもんで。