を展開する場合は
1 |
sympy.expand(2*b*(x + 2)*(x - 4)) |
Out:
1 |
2*b*x**2 - 4*b*x - 16*b |
を展開する場合は
1 |
sympy.expand(2*b*(x + 2)*(x - 4)) |
Out:
1 |
2*b*x**2 - 4*b*x - 16*b |
因数分解一問目
1 2 3 4 5 |
import sympy x,y,z,a,b = sympy.symbols('x,y,z,a,b') A4 = 2*b*x**2-4*b*x-16*b sympy.factor(A4) |
OUT:
1 |
2*b*(x - 4)*(x + 2) |
因数分解二問目
1 2 |
A5 = 5*a*x**2-45*a sympy.factor(A5) |
OUT:
1 |
5*a*(x - 3)*(x + 3) |
.npzフォーマットをcsvに変換
1 2 3 4 5 |
import numpy as np data = np.load('test.npz') for key, value in data.items(): np.savetxt("somepath" + key + ".csv", value) |
HoloViews.orgにて学んだ内容をまとめていきます。
HoloViewsとはオープンソースpythonライブラリーで
データ分析、ビジュアライゼーションを簡単に素早く行う事が可能
HoloViews.orgに掲載されているサンプル
コードは驚くほどシンプルな構造
更にGalleryページにはBoken,Matplotlib,Plotlyを使用した
サンプルグラフがある
各グラフのコードのサンプルもHoloViews.orgにて紹介している
condaがお勧め
1 |
conda install -c ioam holoviews bokeh |
上記で紹介したサンプルのグラフも含まれている
1 2 |
holoviews --install-examples cd holoviews-examples |
pandas,numpyを使用する
hv.extension(“bokeh”)でBokehのエクステンションをロードし
Bokehを使った可視化ができるようになる
他のプロットライブラリーも組み合わせ可能(matplotlib等)
1 2 3 4 |
import pandas as pd import numpy as np import holoviews as hv hv.extension('bokeh') |
次にニューヨークの地下鉄の駅名やその他情報を
含むデータセットを読み込む
csvファイルはこちら
1 2 |
station_info = pd.read_csv('/station_info.csv') station_info.head() |
hv.Scatterオブジェクトを使用して
駅の数と利用者数(百万単位)の2つをスキャッタープロット表示
1 2 |
scatter = hv.Scatter(station_info, 'services', 'ridership') scatter |
※画像のリンク先でグラフをドラッグで動かせる
csvのデータ(station_info)をhv.Scatterに渡し、scatterオブジェクトを作成
これ以外のエレメントはReference Galleryにて紹介
hv.Histogramオブジェクトを使用して地下鉄の駅開設日を
ヒストグラムにする
1 2 |
layout = hv.Histogram(np.histogram(station_info['opened'], bins=24), kdims=['opened']) layout |
スキャッタープロットとヒストグラムなど複数のオブジェクトを
使用したグラフを横並びに表示する
1 2 |
layout = scatter + hv.Histogram(np.histogram(station_info['opened'], bins=24), kdims=['opened']) layout |
以下ここまでのコードまとめ
1 2 3 4 5 6 7 8 9 10 |
import pandas as pd import numpy as np import holoviews as hv hv.extension('bokeh') station_info = pd.read_csv('holoviews-master/examples/assets/station_info.csv') scatter = hv.Scatter(station_info, 'services', 'ridership') layout = scatter + hv.Histogram(np.histogram(station_info['opened'], bins=24), kdims=['opened']) layout |
脳のニューロン発火現象を記録したデータセットを用いて
発火時間(milliseconds)
神経細胞が発火する頻度をヘルツ(Hertz)
の2つのデータセットを可視化
csvファイル(spike_train.csv.gz)はこちら
pandasとholoviewsをインポートし、spike_trainにcsvを読み込ませる
1 2 3 |
import pandas as pd import holoviews as hv spike_train = pd.read_csv('/spike_train.csv.gz') |
データフレームを表示
1 |
spike_train |
可視化のオブジェクトにhv.Curveを使用
先ほど使用したhv.Scatter やhv.Histogramの仲間
hv.Curveの引数を左からcsv格納変数、インデックス名2つ、group=でグラフタイトル
1 |
curve = hv.Curve(spike_train, 'milliseconds', 'Hertz', group='Firing Rate') |
bokehとmatplotlibをロード
1 2 |
hv.extension('bokeh', 'matplotlib') curve |
1 2 |
spikes = hv.Spikes(spike_train.sample(300), kdims='milliseconds', vdims=[], group='Spike Train') spikes |
2つのグラフを並べる
1 |
curve + spikes |
更にカスタマイズして見やすいグラフ作成
グラフ上にカーソルを合わせると各データをインタラクティブに表示
1 2 3 4 5 6 7 8 9 10 11 |
%%output size=150 %%opts Curve [height=100 width=600 xaxis=None tools=['hover']] %%opts Curve (color='red' line_width=1.5) %%opts Spikes [height=100 width=600 yaxis=None] (color='grey' line_width=0.25) curve = hv.Curve( spike_train, 'milliseconds', 'Hertz') spikes = hv.Spikes(spike_train, 'milliseconds', []) (curve + spikes).cols(1) |
%%output size=150で全体のサイズ
%%opts Curve でcurveグラフ個別の詳細設定
以下のグラフは画像ですのでインタラクティブ操作できません
実際に動かすにはこちらのグラフをご覧ください。
Bokeh と Holoviewsで月食グラフをhtmlに変換
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import pandas as pd import holoviews as hv from bokeh.io import output_file, save, show hv.extension('bokeh', 'matplotlib') eclipses = pd.read_csv('../data/eclipses_21C.csv', parse_dates=['date']) eclipses.head() hv.Curve(eclipses) curve= hv.Curve(eclipses) renderer = hv.renderer('bokeh') # rendererで保存 renderer.save(curve, 'graph') # boken形式に変換 plot = renderer.get_plot(curve).state # graph.htmlの名でhtmlファイルを出力 output_file('graph.html') # プロット show(plot) |
パスにファイルかフォルダーが存在すればTrue
無ければFalse
1 2 3 |
import os if not os.path.exists('./assets/nyc_taxi.csv'): print('Taxi dataset not found.') |
パスにファイルかフォルダーが存在し、かつ
ファイルであればTrueそうでなければFalse
1 2 3 |
import os if not os.path.isfile('./assets/nyc_taxi.csv'): print('Taxi dataset not found.') |