7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

jupyter notebookAdvent Calendar 2019

Day 5

Jupyterからスクリプトを実行して加工する

Last updated at Posted at 2019-12-06

前回の記事でコメントをいただいたので、Jupyterからスクリプトを実行する方法を紹介します。
あなたのシェル芸がJupyterを使うことで、さらに輝きます。 :star2:

セルマジック %%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()

image.png

このように、Jupyterでは任意のスクリプトを実行でき、結果をPythonのオブジェクトで処理できます。よいJupyterライフを!

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?