Translate

python でcsvファイルを読んで動くループ回路を作る際の方法【超絶初心者注意】


ずいぶんと長い間ブログを放置してしまいましたが、これからは役立つプログラミング(ほぼpython)、や役立つガジェット、アプリについて紹介したいと思います。

今回は、pythonのループ回路についてです。


※この記事は、文系で駆け出しでプログラミングを勉強し始めた甘味が試行錯誤して作ったものです。他にもっとスマートな方法があるかと思いますが、ご了承ください

pythonでループ回路を作れると生産性が爆上がり


pythonをつかったプログラミングを勉強するのにあたって、動機となる理由の一つには楽してExcelなどの表計算データを処理したいという願望が挙げられます。

pythonでももちろんループ回路使うことによって、複数のcsvファイルを一気に処理することが可能になるので、マスターしてしまえば間違えなく、生産性が向上します。


pythonのコードを書く前にAnacondaで環境設定を

pythonをつかって今後データ分析系を行うに当たっては、Anacondaというソフトをダウンロードしておくのが良いでしょう。

Anacondaを導入しておくことによって、色々なパッケージ(機械学習など)が簡単に使えるようになるので、拡張性が上がります。

ループ回路を書くエディターもspyderというのがAnacondaに入っているので、特に何もpythonの環境設定をしていないのであれば、Anacondaを導入しておくと間違いないです。



pythonでcsvファイル処理をループ化させるには、csvファイル名のリストを取得する必要あり

ではいったいどのような処理をすることで、python でcsvファイルの処理をループ化させることができるのでしょうか?

そのカギとなるのが、csvファイル名のリストを自動で作成する点にあります。csvファイルの名前のリストがあると、そのリストを用いてforループに組み込むことによってうまく処理することができます。

その処理の使うモジュール(pythonの機能、コマンドとかそういう感じの意味)が、”glob”というモジュールになります。

globモジュールを使うとcsvのファイル名のリストを取得できる

pythonのglobモジュールを使うことによって、スクリプトと同じ場所にあるcsvファイル名を取得することができるようになります。

globモジュールを使うためにははじめに、globモジュールをインポートすることが必要になります。

インポートのコードは、スクリプトの最初に記載するのが一般的です。


import glob

とりあえず最初にこれを入れておくことでこのコード以降でglobのモジュールを使うことができます。

globモジュールでcsvファイルのリストを作る

globモジュールのインポートが完了したら、今度は実際にglobモジュールを使ってcsvファイルのリストを作りましょう。

実際のコードはこちらになります(あくまで一例です。多分スマートな書き方ではない)。


import glob
csv_file = glob.glob("*csv")

とりあえずこんな感じで書くと、同じディレクトリ(pyrhonのスクリプトがあるフォルダ内)のcsvファイルのリストが、csv_fileという名前で定義されたリストとして取得できます。

そしてこのcsv_fileを使ってループ回路を作る場合の例としてはこんな感じです。



import glob
import numpy as np
csv_file = glob.glob("*csv")
for f in csv_file:
    data = np. genfromtxt(f,delimiter",", dtype = "float")


今回は、csvファイルの読み込みにnumpyを使ったので、numpyのモジュールもインポートしています。

なんとなく概要を説明すると、
あらかじめ用意されたcsv_file のリスト(例として"a.csv", "b.csv"が入っているリスト)がまずあります。

その後forループ内ではcsv_fileのf番目のcsvファイル名がnp.genfromtxt内に入っていきます(f番目から始まって、1ループされるごとに2番目、三番目という風にずれていきます)。


あとはこれに実際の計算処理を加えることによって、csvファイルごとに順番に処理がループしていきます。

得られた結果の保存に関しては、ループ外の場所に保存しておかなければループが終わった時に消えてしまいますので注意。これに関してはまた別の記事で話そうと思います。