Pythonで複数のCSVデータを1つのファイルにまとめてみた
Pythonを使って、複数のCSVファイルを1つにまとめてみました。
目次
やりたいこと
実験のログデータなどで、測定値が1つずつ改行されて記録される下記のようなデータがあるとします。
sin
0
0.001
0.001999999
0.002999996
0.003999989
0.004999979
0.005999964
0.006999943
0.007999915
0.008999879
0.009999833
0.010999778
0.011999712
0.012999634
0.013999543
0.014999438
0.015999317
0.016999181
以降省略
こういうデータを沢山とって、それをExcelで1つのグラフにまとめて表示したいことはよくあります。
これらのデータを1つずつExcelで開いて1つのシートにコピーするというのは、ファイルの数が少なければ問題ありませんが、数十ファイルを超えてくると苦痛になります。
ということで、Pythonに1つのCSVファイルにまとめてもらいます。
作ったプログラム
import csv
import sys
fn = sys.argv[1:]
data_array = []
for read_file in fn:
with open(read_file, mode='r', newline='', encoding='utf-8') as fi:
csv_reader = csv.reader(fi)
read_data = [row for row in csv_reader]
if len(data_array) < 1:
data_array = read_data
else:
for i in range(len(read_data)):
data_array[i].extend(read_data[i])
with open('result.csv', mode='w', newline='', encoding='utf-8') as fo:
csv_writer = csv.writer(fo)
csv_writer.writerows(data_array)
結合するCSVファイルを、スクリプトの引数に指定します。
csvモジュールを使ってCSVファイルを読み込み、1つめの場合はそれを基準のリストにして、2つめ以降のファイルの場合は基準のリストに要素をextendしていきます。
結合するCSVファイルの要素数(行数)が違っていたりすると、エラーになります。
結合したデータをresult.csvという名前のファイルに出力します。
試してみた
CSVデータを3つ用意して、結合してみました。 正弦(sin.csv)、余弦(cos.csv)、正接(tan.csv)です。
それぞれが、冒頭のようなCSVファイルになっています。
上記のスクリプトをtest.pyという名前にして、実行します。
$ python test.py sin.csv cos.csv tan.csv
出力されたファイルは下記のようになりました。
sin,cos,tan
0,1,0
0.001,0.9999995,0.001
0.001999999,0.999998,0.002000003
0.002999996,0.9999955,0.003000009
0.003999989,0.999992,0.004000021
0.004999979,0.9999875,0.005000042
0.005999964,0.999982,0.006000072
0.006999943,0.9999755,0.007000114
0.007999915,0.999968,0.008000171
0.008999879,0.9999595,0.009000243
0.009999833,0.99995,0.010000333
0.010999778,0.999939501,0.011000444
0.011999712,0.999928001,0.012000576
0.012999634,0.999915501,0.013000732
0.013999543,0.999902002,0.014000915
0.014999438,0.999887502,0.015001125
0.015999317,0.999872003,0.016001365
0.016999181,0.999855503,0.017001638
以降省略
このファイルをExcelで開いて、グラフを描いてみると、こうなります。
公開日
広告
作ってみたカテゴリの投稿
- PythonでFizzBuzz問題をやってみた
- PythonでPDFファイルのサムネイル画像を作る
- Pythonでオブジェクトを選択してクロップするツールを作ってみた
- Pythonでデータロガーのログから瞬断を抽出してみる
- Pythonで写真の中の線を抽出してみた
- Pythonで動画から静止部分を抜き出してみた
- Pythonで測定データのピーク値を検出してみる
- Pythonで複数のCSVデータを1つのファイルにまとめてみた
- PythonとExcelでフォルダの使用量を調べてみた
- Sphinx(ablog)の後処理をする
- WordPressのブログを静的サイトに書き換えてみました
- シェルスクリプトでSphinxのビルドの前処理をする
- 数式を中置記法から後置記法(逆ポーランド記法)に変換してみた