Web3時代のつよつよビジネスパーソンを目指すブログ

Web3という大きな波に会社員エンジニアはどう対峙すべきか。クリプト、NFT、DeFi、メタバース…多様な情報に触れ思考したことを発信します。どこにでもいる会社員だからこその、日々の気づき、ビジネスTipsも発信します。

使いまわしできるつよつよ分析プログラムを書くコツ4選

こんにちは。ヤスヤスオンファイヤーです。

 

今日は、python、もといpandasを使ったデータ分析において、

実務でつかんだノウハウを共有します。

 

「データが変わったり、試すモデルのパターンが増えても、

メンテに手間をかけることなく使いまわせるか?」という観点で、

押さえておくべきポイントを4つ導きました。

 

自分の備忘録半分です。pythonを使っておりますが、

汎用的に他の言語でも適用できると思います。

 

 

 

あらゆる「決め打ちの値」を排除する

まず、10日分のデータで前処理、クロスバリデーションをするのが

タスクだとします。

そうしたとき、データ数の「10日分」の10が、コードの中に

表れるのは、限界までなくしておく。

 

データ数が、20,30、・・・と変わることになった時に、

コードをメンテすることなく、回せるようにしておくという心掛けですね。

 

データ数については、lenだったりshapeを使って動的に取り出すようにしています。

 

もちろん、ハイパーパラメータの値だったり、どうやっても固定値からは

変わりえない、異常値の閾値、などもあると思います。

 

今後の分析で、変化しうるものは、動的な値として仕込んでおくのが

GOODですね。

 

 

複数リストで順番を維持するよりも、辞書形式(dic)を活用する

モデルのパラメタだったり、データの前処理のバリエーションを変えて、

パターン1、パターン2、に対応し、モデル1、モデル2、と

保持したいことがあります。

 

そんな時、[パターン1、パターン2]はリストで定義しつつ、

その他はdic形式を使い、パターン1、パターン2の文字列をキーにする、

というやり方がおすすめです。

 

まず、複数のリストで実現しようとすると、

片方のリストから、要素を削除したとき、

片一方は2個、片一方は3個というように、対応関係がずれてしまうんですね。

 

dic形式だと、キーに紐づいてvalueを保持できますから、

確実に、[パターン1、パターン2、・・・]というリストをよりどころにして、

モデルだったり、データフレームを保持することができるんですね。

 

このやり方を心掛けてから、コードの中で混乱が減りました^^

 

dicは順番を考慮しないという特性がありますが、キーだけは、リスト形式で

持っているので、[パターン1、パターン2、・・・]によって、

順番はいつでも担保して、for文で取り出して処理ができます。

 

辞書のキーに対して、さらに辞書オブジェクトを持たせると、

複数のキーパターンでデータを保持できるので、

込み入った組み合わせのときは、重宝しますね。

 

フラグを使って、処理を分岐する

プログラム上、大きく2通りのモデル生成を試したい時など、

コードの冒頭で、フラグ用の変数を定義してしまいます。

 

コードの所々で、フラグの有無で、処理を分岐していく。

 

こうしておくと、フラグの切り替えのみで、2通りのモデル生成が

行えることになります。

 

途中途中、2モデルを並行に作っていくやり方よりも、

コードがすっきりすることもあります。

 

pickleを使って、ロードしたDataFrameは保存しておく

大量のエクセルやcsvを読み込んだデータフレームだったりは、

pickle形式で保存してしまうと、次回の実行時はpickleの読み出しだけになり、

時間が削減できます。

 

フラグによる分岐と組み合わせ、

二回目以降の実行のときは、pickle生成までの処理はスキップし、

読み込む処理のみ行う、というようにしていることが多いです。

 

前処理のバリエーションによって、データフレームに変更を

加えていくわけですが、バリデーションごとの処理に分かれる前の、

共通で使える段階のデータフレームをpickleにするようにしています。

 

前処理のバリエーションごと、pickleから読みだしたデータフレームを

コピーし、前述の方法でdicに格納して、処理していきますね。

 

 

さいごに

実務で、これは今後も意識して実装に落としていこう、と

感じたポイントの共有でした。

 

時間がないときは、なかなか余裕がありませんが、

再利用性の高いプログラムを書いておくことで、

後々、急な変更やデータ追加が発生しても、

少ない工数で結果をだせたりします。

 

ここぞというときの、お客さんの信頼も得られると思います。

 

長期戦になるぞ、というデータ分析では、

再利用性、ぜひ意識するのがよさそうです。