前回の記事でコメントをいただいたので、Jupyterからスクリプトを実行する方法を紹介します。
あなたのシェル芸がJupyterを使うことで、さらに輝きます。
セルマジック %%script
を用いると、引数に渡したスクリプトを実行します。例えば、 %%script python3.7
であれば、Python3.7を実行し、 %%script bash
であればbashを実行します。スクリプトの内容はセルに直接記入します。
試しにbashを実行してみます。
%%script bash
for i in 1 2 3 ; do
echo $i
done
1
2
3
Jupyterのセルに書いたbashが実行できました。Jupyterで実行する利点として、結果を加工したり可視化できる点が挙げられます。
例として、プロセス数を取得するスクリプトを実行して、結果をpandasで可視化してみます。
%%script bash --out bash_out
echo "date,procs"
for i in `seq 10` ; do
echo "`date +%Y-%m-%d-%H:%M:%S`,`ps -ef | grep -cv grep`"
sleep 5
done
--out
オプションに渡した名前で、Pythonのオブジェクトに格納できます。
print(bash_out)
date,procs
2019-12-06-10:49:21,337
2019-12-06-10:49:26,340
2019-12-06-10:49:31,340
2019-12-06-10:49:36,342
2019-12-06-10:49:41,340
2019-12-06-10:49:46,341
2019-12-06-10:49:51,344
2019-12-06-10:49:56,343
2019-12-06-10:50:01,342
2019-12-06-10:50:06,341
これをpandasのDataFrameに読み込んでみます。
from io import StringIO
import pandas as pd
df = pd.read_csv(StringIO(bash_out), index_col=["date"], parse_dates=["date"])
print(df)
procs
date
2019-12-06 10:49:21 337
2019-12-06 10:49:26 340
2019-12-06 10:49:31 340
2019-12-06 10:49:36 342
2019-12-06 10:49:41 340
2019-12-06 10:49:46 341
2019-12-06 10:49:51 344
2019-12-06 10:49:56 343
2019-12-06 10:50:01 342
2019-12-06 10:50:06 341
plot
メソッドでさくっと可視化します。
%matplotlib inline
df.plot()
このように、Jupyterでは任意のスクリプトを実行でき、結果をPythonのオブジェクトで処理できます。よいJupyterライフを!