ダブルクリックで実行できるPythonプログラムの作成方法 その2:計算とグラフ表示・保存、CSVファイル保存

スポンサーリンク

ダブルクリックで実行できるPythonプログラムに向けて

前回から簡単に実行できるPythonプログラムを作成する方法の解説を行なっています。

ダブルクリックで実行できるPythonプログラムの作成方法 その1:データを読み込み、リストに格納
より簡単に実行できるPythonプログラムを作りたい前回、Pythonプログラムをダブルクリックだけで実行できるようPythonをインストールしました。しかしそれだけではこれまでAnacondaで作成したPytho...

といいつつもまだまだ準備段階。

今回は前回から続いて、格納したデータを使って計算し、グラフ表示・保存、そしてCSVファイルとして保存をしていきます。

とりあえず前回のおさらいから。

インポートしたものはこの二つ。

from matplotlib import pyplot as plt
import csv

そしてメインのプログラムはこんな感じ。

filename = "testdata.csv"
output_fig = "out_fig.png"
output_data = "test_out.csv"

f = open(filename, "r")
reader = csv.reader(f)

x = []; y1 = []; y2 = []

for row in reader:
    x.append(int(row[0]))
    y1.append(int(row[1]))
    y2.append(int(row[2]))
    
print(x)
print(y1)
print(y2)
    
f.close()

実行結果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

ここからまずはy1とy2の値を掛け算していきます。

スポンサーリンク

y1とy2を掛け算する

y1とy2を掛け算するには、それぞれの値を一つずつ取り出し、掛け算して、新しいリストに格納すると言うことが必要になります。

その部分のプログラムだけ書き出してみるとこんな感じです。

y1y2 = []
    
for y1_each, y2_each in zip(y1, y2):
    y1y2.append(y1_each*y2_each)

「y1y2 = []」で掛け算した値を格納する空のリストを作ります。

そして「for y1_each, y2_each in zip(y1, y2):」 でリストy1とy2から一つずつ取り出し、変数y1_each、y2_eachに格納します。

最後に「y1y2.append(y1_each*y2_each)」で二つの値を掛け算し、リストy1y2に格納するという流れです。

確認のため最後に「print(y1y2)」を足して、どうなるか見てみましょう。

filename = "testdata.csv"
output_fig = "out_fig.png"
output_data = "test_out.csv"

f = open(filename, "r")
reader = csv.reader(f)

x = []; y1 = []; y2 = []

for row in reader:
    x.append(int(row[0]))
    y1.append(int(row[1]))
    y2.append(int(row[2]))
    
f.close()

y1y2 = []
    
for y1_each, y2_each in zip(y1, y2):
    y1y2.append(y1_each*y2_each)
    
print(y1y2)

実行結果
[20, 80, 240, 640, 1600, 3840, 8960, 20480, 46080, 102400]

ちゃんと掛け算した値が表示されました。

スポンサーリンク

グラフの作成と保存

次にx値とy1とy2を掛け算した値をグラフにしていきます。

グラフのプロットの基本操作に関してはこちらの記事をご覧ください。

Pythonでグラフ表示 matplotlib 〜折れ線グラフ、マジックコマンド、表示範囲の制限〜
グラフ描写ライブラリmatplotlibとは?これまで文字や数字をどうやって扱うかを解説してきました。そろそろ文字や数字だけの出力は飽きてきたのではないでしょうか?やっぱり数字を扱い始めたら、やりたくなるのが、グラ...

そのグラフ作成の部分を一番単純な形でプログラムしてみるとこうなります。

fig = plt.figure()

plt.plot(x, y1y2)

plt.savefig(output_fig)

plt.show()

「fig = plt.figure()」でグラフエリアを作成し、「plt.plot(x, y1y2)」でデータをプロット、「plt.savefig(output_fig)」でグラフを保存、「plt.show()」でグラフ表示するという流れです。

全体のプログラムを書いてみるとこうなります。

filename = "testdata.csv"
output_fig = "out_fig.png"
output_data = "test_out.csv"

f = open(filename, "r")
reader = csv.reader(f)

x = []; y1 = []; y2 = []

for row in reader:
    x.append(int(row[0]))
    y1.append(int(row[1]))
    y2.append(int(row[2]))

f.close()

y1y2 = []
    
for y1_each, y2_each in zip(y1, y2):
    y1y2.append(y1_each*y2_each)
    
fig = plt.figure()

plt.plot(x, y1y2)

plt.savefig(output_fig)

plt.show()

実行結果

「out_fig.png」という名前で上のようなグラフが保存されていれば成功です。

スポンサーリンク

CSVファイルとして保存

最後にCSVファイルとして保存していきます。

このCSVファイルとして保存する部分のプログラムはこんな感じです。

f = open(output_data, "w")

for x_each, y1y2_each in zip(x, y1y2):
    f.write(str(x_each) + ",")
    f.write(str(y1y2_each) + "\n")
    
f.close()

まず「f = open(output_data, “w”)」で変数output_dataに書いた名前で新しいファイルを作成し、開きます。

「for x_each, y1y2_each in zip(x, y1y2):」でリストxとy1y2から値を一つずつ取り出し、変数x_each、y1y2_eachに格納します。

そして「f.write(str(x_each) + “,”)」でx値を、「f.write(str(y1y2_each) + “\n”)」でy1y2値を書き出します。

ちなみに「+ “,”」があるのはCSVファイルとするため、「+ “\n”」としているのは改行するためです。

そして最後に「f.close()」で書き出したファイルを閉じます。

ということで全体を書いてみるとこんな感じです。

filename = "testdata.csv"
output_fig = "out_fig.png"
output_data = "test_out.csv"

f = open(filename, "r")
reader = csv.reader(f)

x = []; y1 = []; y2 = []

for row in reader:
    x.append(int(row[0]))
    y1.append(int(row[1]))
    y2.append(int(row[2]))
    
f.close()

y1y2 = []
    
for y1_each, y2_each in zip(y1, y2):
    y1y2.append(y1_each*y2_each)
    
fig = plt.figure()

plt.plot(x, y1y2)

plt.savefig(output_fig)

f = open(output_data, "w")

for x_each, y1y2_each in zip(x, y1y2):
    f.write(str(x_each) + ",")
    f.write(str(y1y2_each) + "\n")
    
f.close()

実行すると先ほどの「out_fig.png」ともう一つ「test_out.csv」というファイルが作成されます。

その「test_out.csv」の中身はこんな感じです。

これでとりあえず動くプログラムを作成することができました。

次回はこのプログラムをダブルクリックで実行できるように変えていきましょう。

ダブルクリックで実行できるPythonプログラムの作成方法 その3:ダブルクリックで実行できる形式に変更
簡単に実行できるPythonプログラム前々回から簡単に実行できるPythonプログラムを作成する方法の解説を行なっています。前回までは準備段階。今回からダブルクリックで実行できる形式に変更していきます。...

ということで今回はこんな感じで。

コメント

タイトルとURLをコピーしました