NO IMAGE

【Python】for文で回した計算結果をDataFrameに格納する

for文である変数を変化させたときの計算を結果をDataFrameに落とすコードを紹介します。

サンプルコード

以下のサンプルコードでは、ある配管径における流速の変化を計算してみます。

import numpy as np
import pandas as pd

#流速の算出式
def velocity(r,qm):
    v = qm/(np.pi*(r/2)**2) #m/s = m3/s・1/m2)
    return v

#配管内径
r = 0.20 #m
#空のデータフレーム
df = pd.DataFrame()

#計算(流量qmを1~9 m3/sで変化)
for qm in range(1,10):
    v = velocity(r,qm)
    list_=[[qm,v,r]]
    df_new = pd.DataFrame(list_,columns = ['q m3/s', 'v m/s','r m'])
    df = pd.concat([df,df_new])
    
#計算結果の出力
print(df)
>>>
   q m3/s       v m/s  r m
0       1   31.830989  0.2
0       2   63.661977  0.2
0       3   95.492966  0.2
0       4  127.323954  0.2
0       5  159.154943  0.2
0       6  190.985932  0.2
0       7  222.816920  0.2
0       8  254.647909  0.2
0       9  286.478898  0.2

解説

計算結果を多次元のリストに格納する

DataFrameに格納していく場合、計算に使った数字は1列に入れておきたいので、以下のように多次元にします。

list_=[[qm,v,r]]

仮に以下のように多次元にしないと行だけがひたすら増えて、縦長になります。

list_=[qm,v,r]
df_new = pd.DataFrame(list_)
df = pd.concat([df,df_new])

print(df)
>>>
0
0	1.000000
1	31.830989
2	0.200000
0	2.000000
1	63.661977
2	0.200000
#以下省略

リストをDataFrameに変換

以下のようにリストをデータフレームに変換します。

df_new = pd.DataFrame(list_,columns = ['q m3/s', 'v m/s','r m'])

空のデータフレームで用意しておく

concatでデータフレームを繋げていきますが、一番最初だけdfが定義されていない状態になるので、空のデータフレームを用意しておきます。

#空のデータフレーム
df = pd.DataFrame()

まとめ

非常に簡単ですが、意外とリストや辞書の取り扱いは注意しないイメージ通りのDataFrameにならないので、注意しましょう。

プログラミングの勉強に悩んだら、、

icon

プログラミングの勉強に悩んだら、『Udemy』をオススメします。
私自身は、基本的なことは『Udemy』で学びました。具体的な、オススメのポイントは以下の4つです。

オススメのポイント
1.全ての講座がオンライン
  スマホでもパソコンでどこからでも受講できます。
2.リーズナブルな価格で、実用的なスキル
  セール時に購入すれば、2000~3000円程度で受講できる講座もあります。
  また、プロに講師による講座になるため、体系的、かつ実用的に学べます。
3.購入した講座を何度でも見直せる
  プログラミングに暗記は必要ありません。見返せば良いです。
4.プログラミングの講座が豊富
  特にPython流行りであることもあり、非常に豊富です

プログラミング言語の人気オンラインコース 開発の人気オンラインコース

NO IMAGE
最新情報をチェックしよう!