iPhoneでJupyter Notebookを使ってPythonしてみた!

Pocket

厳密には

Juno Connectというアプリなんですが、ほぼ Jupyter Notebookそのままに使えます。

Juno Connect 1.5.10
分類: 開発ツール,教育
価格: ¥1,220 (Rational Matter)

iPhoneでPythonプログラミングと言えば、Pythonista3が有名だと思います。

Pythonista 3 3.3
分類: 仕事効率化,教育
価格: ¥1,220 (omz:software)

私も以前「[Pythonista3] Youtubeダウンロードライブラリ「Pytube」がまたエラーを出すようになったので「youtube-dl」に変更してみた!」や「よく使う駅名をリスト化して、簡単にYahoo!乗換案内検索ができるpythonスクリプトを作ってみた!」など多数のスクリプトを公開してます。

でもPythonista3は凄いアプリなんですが、データ解析等でよく使うpandas等が使えなかったりするんですよ。(T_T)

会社ではJupyter Notebookの開発環境でPythonのコーディングをしてるので、出来ればiPhoneでもJupyter Notebookが使えないかと思ってました。
そしたら、Juno Connectというアプリがあることを知ってダウンロードした訳です。

Juno Connectとは

iOS上で動作するJupyterクライアントアプリで、iPhoneにインストールしたJuno ConnectからリモートJupyterサーバーにアクセスしてデータ分析を行います。
Jupyterサーバーとして以下の4つが使えますが、これ以外にも独自のサーバーもOKなようです。

  • Juno社のリモートサーバー(Try Jupyter!)
  • Azure Notebooks
  • COCALC
  • binder

私はMicrosoftのアカウントを持ってるのでAzure Notebooksにしてましたが、2020年9月に使えなくなるらしいので、COCALCに変更しました。

ちなみにリモートサーバーを使わずにローカルでJupyter Notebookが使えるJunoというアプリもあります。こちらの方が更に高いですが、お好きな方で。

Juno 1.2.8
分類: 開発ツール,教育
価格: ¥1,840 (Rational Matter)
n次近似

前回、iPhoneのMatlabで行列を使ってn次近似する方法を紹介しました。

今回も同じように行列を使って近似式を求めてもいいんですが、折角Pythonなのでライブラリを使って近似してみます。

・ExcelData.xlsx取得部

import numpy as np
import pandas as pd
df=pd.read_excel('ExcelData.xlsx',index_col=0)
B=df.values
Bnp=np.matrix(B)
print(Bnp)

・n次近似指定部

print('n次近似(n>=1) n=?')
N=int(input())

・n次近似演算、グラフ化部

import numpy as np
import matplotlib.pyplot as plt
x=Bnp[:,0].T.tolist()[0]
y=Bnp[:,1].T.tolist()[0]

\#近似式の係数
res=np.polyfit(x,y,N)

xMax=Bnp[:,0].max()
RANGE=10
xMax=int(np.ceil(xMax/RANGE)*RANGE)

\#近似式の計算
yy = np.poly1d(res)(x)

\#グラフ化
plt.plot(x,yy)
plt.plot(Bnp[:,0],Bnp[:,1],marker='*',linestyle='None')
plt.xlim(0,xMax)

\#グラフタイトルに近似式
title=''
for i in reversed(range(N+1)):
    if i==N:
        if res[N-i]!=0:
            title=title+'{:.5f}'.format(res[N-i])+'x^'+str(i)
    elif i>1:
        if res[N-i]>0:
            title=title+'+{:.5f}'.format(res[N-i])+'x^'+str(i)
        elif res[N-i]<0:
            title=title+'{:.5f}'.format(res[N-i])+'x^'+str(i)
    elif i==1:
        if res[N-i]>0:
            title=title+'+{:.5f}'.format(res[N-i])+'x'
        elif res[N-i]<0:
            title=title+'{:.5f}'.format(res[N-i])+'x'
    else:
        if res[N-i]>0:
            title=title+'+{:.5f}'.format(res[N-i])
        elif res[N-i]<0:
            title=title+'{:.5f}'.format(res[N-i])
title='y='+title
plt.title(title,fontsize=20)
plt.savefig(str(N)+'次近似.png')
plt.show()

プログラムを見て頂ければわかりますが、近似してる部分はライブラリNumpyを使った以下の2行だけです。

res=np.polyfit(x,y,N)
yy = np.poly1d(res)(x)

Pythonは簡単でいいですね。(^^)

▼プログラムを実行すれば、近似したグラフが表示され
カレントディレクトリに「n次近似.png」として保存されます。

Juno Connectのコマンドモード

Jupyter Notebookにはコマンドモード(ショートカット)があって、例えばセルを削除するにはDD、新規セルを下に追加するにはB等いろいろありますが、Juno Connectにもあります。
▼雷ボタンを押せば、色々選べるようになってます。

最後に

iPhoneでJupyter Notebookが使えるようになったので、電車通勤の無駄な時間も有効に使えて良かったです。
これから機械学習等もやっていこうと思います。(^^)

紹介したアプリ
Juno Connect 1.5.10
分類: 開発ツール,教育
価格: ¥1,220 (Rational Matter)
Juno 1.2.8
分類: 開発ツール,教育
価格: ¥1,840 (Rational Matter)
Pythonista 3 3.3
分類: 仕事効率化,教育
価格: ¥1,220 (omz:software)

happyChappy(@happyChappy1115)でした。

Sponsored Link

Posted from するぷろ for iOS.

Pocket

コメントを残す