official リケダンブログ

pythonによる大量のtxtデータのグラフ化[1]~データ読み込み編~

こんにちは、ぽたです。僕は、研究でこれから大量のtxtデータをグラフ化する必要が出てきます。そうなる前に先にpythonでグラフ化できるようにしてやろうと思っています。まだ全くの未完成ですが、パートが増えるごとに進化させていこうと思っています。

やりたいことの成果をつづるだけになると思います。一緒に勉強したい方はぜひ一読してみてください。本当にこれであっているのかどうかに関しては保証しかねます。

※プログラムは未完成で続きをいつ書くかはわかりません。pythonの勉強が進み次第です。 気長にお待ちいただけると幸いです。

スポンサーリンク

やりたいこと

今回、pythonでやりたいこととしては、

①大量のtxtデータの読み込み

②読み込んだデータの分別

③分別したデータを選択してグラフ化

④発表に利用できるようなきれいなグラフの作成

⑤グラフのpng化もしくはJPEG化

です。一つずつ書けるだけ書いていこうかなと思います。

スポンサーリンク

⓪下準備

まずはpythonを使える環境を作りましょう。僕はできているのですが、できていない方は、

Pythonの開発環境を用意しよう!(Windows)
Progateはオンラインでプログラミングを学べるサービスです。プログラミングを学んでWEBアプリケーションを作ろう。

このブログがすごく参考になります。ぜひ始めてみたい方は読んでみてください。

また、今回作成するにあたって、numpy、pandas あたりは、ダウンロードしておく必要があると思います(素人目)。pip install numpy などを行ってダウンロードしておいてください。

スポンサーリンク

①大量のtxtデータの読み込み

まずは、大量のtxtデータの読み込みの部分を作っていきたいと思います。

最初に作らなくてはいけない部分は、利用したいtxtファイルの選別が出来て、かつ大量に読み込むことができるような形になります。ちなみにデータの中身は、

Field (T)	Jc (A/cm2)	Ic (A)	n	Asym	Asym std	time	T (K)
5	884658.560199	1.415454	6.284203	0.360739	0.673948	6.046154	59.824
4.8	911774.869391	1.45884	6.326102	-0.72955	2.800656	148.062713	60.023
4.6	932977.054544	1.492763	6.354103	0.939281	2.622679	286.56043	59.995
4.4	961848.198978	1.538957	6.592953	0.356191	1.627668	462.902835	59.995
4.2	990275.699471	1.584441	6.540723	0.007883	0.965712	639.034378	60.16
4	1017904.454727	1.628647	6.676352	0.477575	1.344501	816.299228	60.06
3.8	1049911.133999	1.679858	6.686209	0.603918	2.150363	991.4244	60.134
3.6	1095470.378984	1.752753	6.865936	1.197525	1.243565	1168.478371	59.709
3.4	1135360.168179	1.816576	7.016391	1.264411	0.948168	1344.438034	60.092
3.2	1173990.355658	1.878385	7.094166	1.062323	0.66416	1524.692	60.094
3	1224744.677192	1.959591	7.253589	1.945244	1.666822	1705.304801	60.029

このような形になっています。下にもっと続いています。僕の実験では、磁場、電流、時間、温度などのパラメータが8個ありますね。このデータを読み込みます。ファイルの名前は、

60K Asym-B.txt

となっています。今回はこの温度、60Kの部分が61などの別の数字が入っているファイルがたくさんあるので、そのファイルを扱いたいといった形です。

このようなファイルを読み込むためにglobというものを利用しようと今回は考えました。

globに関しては、また後程別の記事にて書こうと思います。

概要を説明すると、大量のファイルを一気にいじることができるものです。それではプログラムを書いていきます。

globでファイルを読み込むには、pathを指定しなくてはいけません。pathというのは、どこにそのファイルが存在しているかというものです。これを実装するとこのような形になりました。

import glob
path="C:\\Users\\user_99\\OneDrive\\デスクトップ\\SPX001"
allfiles = glob.glob(path+"\\??K Asym-B.txt")

上から順番に説明していくと、1行目は、globをimportしています。

2行目は、pathを指定しなくてはいけないので、ファイルが入っているところまでを指定しています。今回はデスクトップのSPX001というファイルに僕が扱いたいファイルがまとめてあるということです。

3行目は、pathに加えて、ファイル名を指定しています。?は文字数一致の、文字はなんでも選択可能ということで、今回は数字の部分だけ「??」とすることによって今回選択したいすべてのファイルまでのpathをglobの関数にいれています。

これですべてのファイルを選択できました。

スポンサーリンク

②読み込んだデータの分別

これでファイルを選択できたので、次は、ファイルの中にある8種類のデータを分別したいです。これは今回はnumpyを利用して作ってみようかなと思います。今回利用するのがすべて数字ということで、

Field,Jc,Ic,n,Asym,std,time,T = np.loadtxt(item,skiprows=1, unpack=True)

このような感じで作りました。

itemは読み込むものを指定しています。skiprowは読み飛ばす数です。間にスペースが入っているのでこうしています。unpackは転置するかしないかです。縦のものを横にしたりすることができます。別々の変数を代入したい場合はこのようなものを使うらしいです。

あとはこのitemに先ほど持ってきたファイルのデータを入れるだけでよさそうですね。繰り返しの部分も作っておきましょう。

for item in allfiles:

こうですね。

スポンサーリンク

①②のまとめ

いったんこれ以上作ると長くなりそうなのでまとめです。

今回のものをまとめるとこんな感じになります。

import glob
path="C:\\Users\\user_99\\OneDrive\\デスクトップ\\SPX001"
allfiles = glob.glob(path+"\\??K Asym-B.txt")
for item in allfiles:
  Field,Jc,Ic,n,Asym,std,time,T = np.loadtxt(item,skiprows=1, unpack=True)

読み込んでから様々な値を代入するところまでできました。

次は、③のデータをグラフ化するところからスタートします!

それではまた、ぽたでした。

モバイルバージョンを終了