IQ Botでテーブル項目にPythonスクリプトを書くとき、最初と最後に必ず入れるコードがあります。
こちらの記事にも書きましたが、以下のコードです。
#表の操作をするときに必ず入れるコード(最初)
import pandas as pd
df = pd.DataFrame(table_values)
# この間の部分に、処理したいコードを入れていく
#表の操作をするときに必ず入れるコード(最後)
table_values = df.to_dict()
社内でIQ Botを使っているかわいい後輩ちゃんに
「このコードって何をやっているんですか?」 と質問されたので、
がんばって答えてみました。
#ライブラリ(pandas)をインポート!
まずプログラミング言語には「ライブラリ」といって、
ある分野の処理を行いやすくするための命令や関数をまとめてくれたパッケージみたいなものがあります。
Pythonにはpandasというライブラリがあって、
このpandasというのは、表やデータの配列を扱いやすくするためのライブラリです。
ライブラリを使うためには、まず該当のライブラリをインポートする必要があります。
1行目のimport pandas as pd
がそのための処理です。
import pandas as pd
#意味:pandasを importしてね。
# そしてそのpandasの中身を、これから書くコードの中ではpdという名前で使えるようにしてね。
#DataFrameに変換!
IQ Bot が帳票から読み取ったテーブルの情報は、table_values
という変数にまるっと入っているのでした。
(この話が分からない人はこちらを参照)
そのtable_values
の中身は、そのままだと扱いづらいので、
pandasで扱うのに適したDataFrameという形式に変換します。
そして、その変換後のデータをdf
という名前の変数に格納します。
df = pd.DataFrame(table_values)
#意味:table_valuesの中身を、pandasのDataFrame形式に変換してdfという変数に入れてね。
ここでpd.DataFrame
におけるpd.
はpandasの意味です。
これをpandas.
と書かずにpd.
と省略して書けるのは、
おまじないコードの1行目でimport pandas
にas pd
をつけておいたからです。
#DataFrameに変換すると、どうなる?
この1~2行目までの処理をやっておくことで、ここから先は、
table_valuesに入っていた中身の全体をdf
、
その中の特定の列の値をdf['列名']
という形で扱えるようになります。
#DataFrame形式をもとの形式に戻す!
最後の処理で、これまでdf
という変数にDataFrame形式で入れていたデータを、
IQ Botがもともとtable_value
を保持していた形式に戻します。
table_value
のもともとの形式はdictionary型なので、この形式に戻してあげます。
table_values = df.to_dict()
#意味:dfの中身をdict型に変換して、table_valuesに入れてね。
このようにして、加工した結果をIQ Botに引き渡しているわけですね。
#名前重要(名前についての補足)
Pandasをインポートするにあたってas pd
をつけたり、
DataFrameを格納する変数の名前をdf
にしたりするのは、
絶対的な決まりではありませんが、なるべくこうしておいた方がいいです。
なぜなら、そうやってコードを書く人が圧倒的に多いからです。
Pythonやpandaに関する解説記事でもだいたいみんなこのネーミング前提でコードを書いています。
なので、IQ Botを作るときのコードもそれに合わせておいた方が、
何かでつまづいたときなどに、解説を探しやすくなります。
以下のように書いても、コードが動くかどうかだけで言えば動きますが、
あまりおすすめはしません。
#表の操作をするときに必ず入れるコード(最初)
import pandas as hoge1
hoge2 = hoge1.DataFrame(table_values)
#表の操作をするときに必ず入れるコード(最後)
table_values = hoge2.to_dict()
#まとめ
- 最初にpandasというライブラリをインポートするよ
- IQ Botが持っているtable_valuesを、pandasで扱いやすいDataFrame形式にして変数に入れるよ
- 最後にDataFrame形式をtable_valuesのもとの形式(dictionary型)に戻してIQ Botに渡すよ
- 変数の名前はおまじないの通りじゃなくても動くけど、おまじないの通りにしておいた方が何かと都合がいいよ