2020年8月31日月曜日

MoviePyとscikit-imageで動画画面のノイズを除去する

MoviePyとscikit-imageで動画画面のノイズを除去するには、fl_imageメソッドとdenoise_bilateral関数などを使用します。

サンプルコード

以下のサンプルコードでは、scikit-imageのdenoise_bilateral関数を使用してノイズを除去し、動画を出力しています。
from moviepy.editor import *
from skimage.util import *
from skimage.restoration import *

def process_denoise_bilateral(image):
    dw = denoise_bilateral(img_as_float(image), sigma_color=0.05, sigma_spatial=5, multichannel=True)
    return img_as_ubyte(dw)

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(lambda clip1: process_denoise_bilateral(clip1))
clip1t.write_videofile("denoise_bilateral.mp4")


〇元動画の画面

 

〇出力動画の画面

 

〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。

pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月30日日曜日

MoviePyとscikit-imageで動画画面にノイズをつける

MoviePyとscikit-imageで動画画面にノイズをつけるには、fl_imageメソッドとrandom_noise関数を使用します。

サンプルコード

以下のサンプルコードでは、scikit-imageのsobel/roberts輪郭抽出し、動画を出力しています。
from moviepy.editor import *
from skimage.util import *
import numpy as np

def process_random_noise(image, *, mode='gaussian', seed=None, clip=True, **kwargs):
    rn = random_noise(img_as_float(image), mode, seed, clip, **kwargs)
    return img_as_ubyte(rn)

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(lambda clip1: process_random_noise(clip1, var=0.03))
clip1t.write_videofile("random_noise_gaussian.mp4")

clip1t = clip1.fl_image(lambda clip1: process_random_noise(clip1, mode='pepper', amount=0.3))
clip1t.write_videofile("random_noise_pepper.mp4")

〇元動画の画面

〇出力動画の画面(gaussian)

〇出力動画の画面(pepper)

〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。
pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月29日土曜日

MoviePyとscikit-imageで動画画面の輪郭抽出をする

MoviePyとscikit-imageで動画画面の輪郭抽出をするには、fl_imageメソッドとsobel/robertsなどのフィルターを使用します。

サンプルコード

以下のサンプルコードでは、scikit-imageのsobel/roberts輪郭抽出し、動画を出力しています。
from moviepy.editor import *
from skimage.filters import sobel
from skimage.filters import roberts
from skimage.color import *

def process_sobel(image):
    gray = rgb2gray(image.astype(float))
    return gray2rgb(sobel(gray))

def process_roberts(image):
    gray = rgb2gray(image.astype(float))
    return gray2rgb(roberts(gray))

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(process_sobel)
clip1t.write_videofile("sobel.mp4")

clip1t = clip1.fl_image(process_roberts)
clip1t.write_videofile("roberts.mp4")

〇元動画の画面

〇出力動画の画面(sobel)

〇出力動画の画面(roberts)

〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。
pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月28日金曜日

MoviePyとscikit-imageで動画画面を二値化する

MoviePyとscikit-imageで動画画面を二値化するには、fl_imageメソッドとthreshold_otsuやthrehold_isodataなどのフィルターを使用します。

サンプルコード

以下のサンプルコードでは、scikit-imageのthreshold_otsu/threshold_isodataでしきい値を求め、それぞれのアルゴリズムで2値化のRGB版と白黒版の動画を出力しています。
from moviepy.editor import *
from skimage.filters import *
from skimage.color import *

def process_threshold_otsu(image):
    threshold = threshold_otsu(image)
    return (image > threshold)*255

def process_threshold_otsu_gray(image):
    gray = rgb2gray(image)
    threshold = threshold_otsu(gray)
    return gray2rgb((gray > threshold)*255)

def process_threshold_iso(image):
    threshold = threshold_isodata(image)
    return (image > threshold)*255

def process_threshold_iso_gray(image):
    gray = rgb2gray(image)
    threshold = threshold_isodata(gray)
    return gray2rgb((gray > threshold)*255)

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(process_threshold_otsu)
clip1t.write_videofile("process_threshold_otsu.mp4")

clip1t = clip1.fl_image(process_threshold_otsu_gray)
clip1t.write_videofile("process_threshold_otsu_gray.mp4")

clip1t = clip1.fl_image(process_threshold_iso)
clip1t.write_videofile("process_threshold_iso.mp4")

clip1t = clip1.fl_image(process_threshold_iso_gray)
clip1t.write_videofile("process_threshold_iso_gray.mp4")

〇元動画の画面

〇出力動画の画面(threshold_otsu)

〇出力動画の画面(rgb2grayとthreshold_otsu)

〇出力動画の画面(threshold_isodata)

〇出力動画の画面(rgb2grayとthreshold_isodata)

〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。
pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月27日木曜日

MoviePyとscikit-imageで動画画面の明度を変更する

MoviePyとscikit-imageで動画画面の明度を変更するには、fl_imageメソッドとrgb2hsv関数、hsv2rgb関数を使用します。

〇サンプルコード
以下のサンプルコードでは、scikit-imageのrgb2hsv関数でHSVに変換し、彩度を指定の値に設定後RGBに戻しています。
from moviepy.editor import *
from skimage.color import *

def process_brightness(image, brightness):
    hsv = rgb2hsv(image.astype(float))
    hsv[:, :, 2] = brightness
    return hsv2rgb(hsv)

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(lambda clip1: process_brightness(clip1, 255))

clip1t.write_videofile("brightness.mp4")

〇元動画の画面

〇出力動画の画面

〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。
pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月26日水曜日

MoviePyとscikit-imageで動画画面の彩度を変更する

MoviePyとscikit-imageで動画画面の彩度を変更するには、fl_imageメソッドとrgb2hsv関数、hsv2rgb関数を使用します。

〇サンプルコード
以下のサンプルコードでは、scikit-imageのrgb2hsv関数でHSVに変換し、彩度を指定の値に設定後RGBに戻しています。
from moviepy.editor import *
from skimage.color import *

def process_saturation(image, saturation):
    hsv = rgb2hsv(image.astype(float))
    hsv[:, :, 1] = saturation
    return hsv2rgb(hsv)

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(lambda clip1: process_saturation(clip1, 0.3))

clip1t.write_videofile("saturation.mp4")

〇元動画の画面

〇出力動画の画面

〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。
pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月25日火曜日

MoviePyとscikit-imageで動画画面を着色する

MoviePyとscikit-imageで動画画面を着色するには、fl_imageメソッドとrgb2hsv関数、hsv2rgb関数を使用します。

サンプルコード

以下のサンプルコードでは、scikit-imageのrgb2hsv関数でHSVに変換し、色相・彩度を指定の値に設定後RGBに戻しています。
from moviepy.editor import *
from skimage.color import *

def process_colorize(image, hue, saturation):
    hsv = rgb2hsv(image.astype(float))
    hsv[:, :, 0] = hue
    hsv[:, :, 1] = saturation
    return hsv2rgb(hsv)

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(lambda clip1: process_colorize(clip1, 0.6, 0.8))

clip1t.write_videofile("colorize.mp4")

〇元動画の画面

〇出力動画の画面

scikit-imageインストール

MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。
pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月24日月曜日

MoviePyとscikit-imageで動画を渦巻き状に変形する

MoviePyとscikit-imageで動画を渦巻き状に変形するには、fl_imageメソッドとswirl関数を使用します。

サンプルコード

以下のサンプルコードでは、scikit-imageのswirl関数を使用して動画を変形しています。
from moviepy.editor import *
from skimage.transform import swirl

def process_swirl(image):
    return swirl(image.astype(float), rotation=3, strength=10, radius=500)

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(process_swirl)

clip1t.write_videofile("swirl.mp4")

〇出力動画の画面

scikit-imageインストール

MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。
pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月23日日曜日

MoviePyで元動画とグレースケール動画の市松模様風に加工する

MoviePyで元動画とグレースケール動画の市松模様風に加工するには、resizeとclips_array、blackwhiteを使用します。

サンプルコード

以下のサンプルコードでは、1/3に動画を縮小して、グレースケール画像を作成し、市松模様風に配置しています。
from moviepy.editor import *
from moviepy.video.fx.resize import resize
from moviepy.video.fx.blackwhite import blackwhite

clip1 = VideoFileClip("hydrangea.mp4")
clip1 = resize(clip1, (clip1.w/3, clip1.h/3))
clip1g = blackwhite(clip1)
clip = clips_array([[clip1, clip1g, clip1], [clip1g, clip1, clip1g], [clip1, clip1g, clip1]])

clip.write_videofile("checker.mp4")

〇出力動画の画面

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月22日土曜日

ipysheetのまとめ

Jupyter上でスプレッドシートのインターフェイスを提供できるipysheetについての記事をカテゴリごとに纏めました。

インストール

ipysheetのインストールについての記事です。
JupyterLabにipysheetをインストールして、スプレッドシートを表示する

データの設定・取得

スプレッドシートにデータを設定・取得・変換する方法は以下を参照してください。

ipysheetでシートの行ヘッダー・列ヘッダーに任意の文字列を設定する

ipysheetでセル内改行の文字列を表示する

ipysheetでシートの複数列の行データをまとめて設定する

ipysheetでシートの複数行の列データをまとめて設定する

ipysheetでシートの複数行列データをまとめて設定する

ipysheetのセルに計算値を設定する

ipysheetのセルの値を取得する

ipysheetのsheetとpandasのDataFrmaeを相互変換する

表示設定

セルの表示設定についての記事です。

ipysheetでセルの背景色・文字色を設定する

ipysheetでセルのフォントのサイズや修飾・アライメントの設定をする

ipysheetでシートの行ヘッダー・列ヘッダーを非表示にする

ipysheetでシートのサイズを設定する

セル内にコントロールを設定する

セルには様々なコントロールを設定する事ができます。

ipysheetで日付選択ダイアログを表示する

ipysheetでセル内にイメージを表示する

ipysheetでセルにドロップダウンリストを配置する

ipysheetでセルにチェックボックスを配置する

ipysheetでセルに浮動小数点値スピンボックスを配置する

ipysheetでセルに整数値スピンボックスを配置する

ipysheetでセルに整数値プログレスバーを配置する

ipysheetでセルに浮動小数点値範囲スライダーを配置する

ipysheetでセルに整数値範囲スライダーを配置する

ipysheetでセルに対数スライダーを配置する

ipysheetでセルに浮動小数点スライダーを配置する

ipysheetでセルに整数値スライダーを配置する

ipysheetでセルの値をチェックボックスとして表示する

その他

その他の記事です。

ipysheetでセルを変更不可に設定する

Jupyter・wbdata・ipysheetで世界銀行の人口データを取得して一覧表示する

Jupyter・wbdata・ipysheetで世界銀行の人口データを取得して一覧表示する

取得したデータはDataFrameとして返されるので、表の形を調整してipysheetのsheetに変換し、スプレッドシートで一覧表示します。

サンプルコード

以下のサンプルコードをノートブックに張り付けて実行します。
import wbdata
import ipysheet

countries = ["JP","US", "VN"]
df = wbdata.api.get_dataframe({"SP.POP.TOTL":"Population"}, country=countries, convert_date=False)
df = df.unstack(level=0)

# DataFrameからsheetに変換
sheet = ipysheet.from_dataframe(df)

# ヘッダと書式を整える
sheet.column_headers = countries
for ind in range(sheet.columns):
  sheet.cells[ind].numeric_format = "###,##0"

sheet

〇サンプルコードの実行結果画面

使用指標

SP.POP.TOTL
人口 - Population, total

関連情報

ipysheetのまとめ

・ipysheetのインストールは、以下の記事を参照してください。
JupyterLabにipysheetをインストールして、スプレッドシートを表示する

・wbdataのインストールは、以下の記事を参考にしてください。
Raspberry Pi上のJupyterに、世界銀行のデータを取得できるwbdataパッケージ、データ分析を行うpandasパッケージ、グラフを描画するmatplotlibをインストールする

・ipysheetのgithubリポジトリ
https://github.com/QuantStack/ipysheet

MoviePyで動画を縮小してタイル状に配置する

MoviePyで動画を縮小してタイル状に配置するには、resizeとclips_arrayを使用します。
clips_arrayには、配置したい動画の二次元配列を渡します。

サンプルコード

以下のサンプルコードでは、1/3に動画を縮小して3x3にタイル配置しています。
from moviepy.editor import *
from moviepy.video.fx.resize import resize

clip1 = VideoFileClip("hydrangea.mp4")
clip1 = resize(clip1, (clip1.w/3, clip1.h/3))
clip = clips_array([[clip1, clip1, clip1], [clip1, clip1, clip1], [clip1, clip1, clip1]])

clip.write_videofile("tile.mp4")

〇タイル配置した画像

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

Jupyter上でChartifyを使用して縦方向ロリポップチャートを表示する

Jupyter上でChartifyを使用して縦方向ロリポップチャートを表示するには、以下のサンプルのようにlollipopを使用します。

サンプルコード

import chartify

data = chartify.examples.example_data()
bar_data = data.groupby('country')[['quantity']].sum().reset_index()
print(bar_data)

ch = chartify.Chart(blank_labels=True, x_axis_type='categorical')
ch.set_title("縦方向ロリポップチャート")
ch.plot.lollipop(data_frame=bar_data, categorical_columns='country', numeric_column='quantity', color_column='country')
ch.show()


〇出力画像


インストール方法

Jupyterの仮想環境で以下のコマンドを実行します。
pipenv install chartify

関連情報

・Chartifyのgithubリポジトリ
https://github.com/spotify/chartify

2020年8月21日金曜日

Jupyter上でChartifyを使用して縦方向積上げ棒グラフを表示する

Jupyter上でChartifyを使用して縦方向積上げ棒グラフを表示するには、以下のサンプルのようにbar_stackedを使用します。

サンプルコード

import chartify

data = chartify.examples.example_data()
bar_data = data.groupby(['country', 'fruit'])[['quantity']].sum().reset_index()
print(bar_data)

ch = chartify.Chart(blank_labels=True, x_axis_type='categorical')
ch.set_title("縦方向積上棒グラフ")
ch.plot.bar_stacked(data_frame=bar_data, categorical_columns='country', numeric_column='quantity',stack_column='fruit')
ch.show()


〇出力画像


インストール方法

Jupyterの仮想環境で以下のコマンドを実行します。
pipenv install chartify

関連情報

・Chartifyのgithubリポジトリ
https://github.com/spotify/chartify

ipysheetのセルに計算値を設定する

ipysheetでセルに計算値を設定するには、calcurationデコレータを定義します。

サンプルコード

以下のサンプルコードをノートブックに張り付けて実行します。
import ipysheet
sheet = ipysheet.sheet(rows=2)
cell1 = ipysheet.cell(0, 0, 100)
cell2 = ipysheet.cell(0, 1, 200)
cell3 = ipysheet.cell(0, 2)

@ipysheet.calculation(inputs=[cell1, cell2], output=cell3)
def calculate(a, b):
    return a + b

sheet

〇サンプルコードの実行結果画面

関連情報

・ipysheetのインストールは、以下の記事を参照してください。
JupyterLabにipysheetをインストールして、スプレッドシートを表示する

・ipysheetのgithubリポジトリ
https://github.com/QuantStack/ipysheet

ipysheetのまとめ

Ubuntu 20.04にJupyter Labをインストールする(pipenv版)

Raspberry Pi(Raspbian Buster)にJupyter Labをインストールする

MoviePyで動画に別の動画を重ねる

MoviePyで動画に別の動画を重ねるには、CompositeVideoClipを使用します。
配列として複数の重ねたいクリップを渡します。

サンプルコード

以下のサンプルコードでは、2つの動画の内の1つを縮小して、もう一つの画像に重ねています。
from moviepy.editor import *
from moviepy.video.fx.resize import resize

clip1 = VideoFileClip("hydrangea.mp4").subclip(0, 30)
clip2 = VideoFileClip("riceplant.mp4").subclip(0, 30)

clip2b = resize(clip2, (clip2.w/4, clip2.h/4))
clip = CompositeVideoClip([clip1, clip2b.set_position((clip1.w*7/10,clip1.h*7/10))])

clip.write_videofile("compositeclip.mp4")


〇重ねた画像

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

Jupyter上でChartifyを使用して副題の文字列を設定する

Jupyter上でChartifyを使用して副題の文字列を設定するには、set_subtitleメソッドを使用します。

サンプルコード

import chartify

data = chartify.examples.example_data()
bar_data = data.groupby('country')[['quantity']].sum().reset_index()
print(bar_data)

ch = chartify.Chart(blank_labels=True, y_axis_type='categorical')
ch.set_title("横方向棒グラフ")
ch.set_subtitle("サンプル副題")
ch.plot.bar(data_frame=bar_data, categorical_columns='country', numeric_column='quantity', color_column='country')
ch.show()


〇出力画像


インストール方法

Jupyterの仮想環境で以下のコマンドを実行します。
pipenv install chartify

関連情報

・Chartifyのgithubリポジトリ
https://github.com/spotify/chartify

2020年8月20日木曜日

Jupyter上でChartifyを使用して凡例を非表示にする

Jupyter上でChartifyを使用して凡例を非表示にするには、set_legend_locationメソッドにNoneを渡します。

サンプルコード

import chartify

data = chartify.examples.example_data()
bar_data = data.groupby('country')[['quantity']].sum().reset_index()
print(bar_data)

ch = chartify.Chart(blank_labels=True, y_axis_type='categorical')
ch.set_title("横方向棒グラフ")
ch.plot.bar(data_frame=bar_data, categorical_columns='country', numeric_column='quantity', color_column='country')
ch.set_legend_location(None)
ch.show()


〇出力画像


インストール方法

Jupyterの仮想環境で以下のコマンドを実行します。
pipenv install chartify

関連情報

・Chartifyのgithubリポジトリ
https://github.com/spotify/chartify

ipysheetのセルの値を取得する

ipysheetでセルの値を取得するには、セル作成時のオブジェクトから取得する以外に、ipysheetのcellsから取得する事も出来ます。

サンプルコード

以下のサンプルコードをノートブックに張り付けて実行します。
sheet = ipysheet.sheet(row_headers=["店舗名", "売上"])
ipysheet.cell_range([["A店", "B店", "C店"], [1230, 20010, 5620]])

# cellsから設定値を取得できる
print(sheet.cells[0].value[1][1]) # -> return 20010

sheet

〇サンプルコードの実行結果画面

関連情報

ipysheetのまとめ

・ipysheetのインストールは、以下の記事を参照してください。
JupyterLabにipysheetをインストールして、スプレッドシートを表示する

・ipysheetのgithubリポジトリ
https://github.com/QuantStack/ipysheet

Ubuntu 20.04にJupyter Labをインストールする(pipenv版)

Raspberry Pi(Raspbian Buster)にJupyter Labをインストールする

MoviePyで動画に題名を追加する

MoviePyで動画に題名を追加するには、TextClipを使用します。引数の一部は以下になります。
・txt : 表示する文字列
・color : 文字列の色
・bg_color : 背景色
・font : 使用するフォント
・size : 画面サイズ。他のクリップと合わせておきます。

〇追加インストールと設定
TextClipで文字入れするには、ImageMagickが必要になります。合わせて日本語フォントもインストールします。
sudo apt-get -y install imagemagick fonts-vlgothic

また、ImageMagickの設定ファイルを変更して、以下のpolicyをコメントアウトする必要があります。
sudo vi /etc/ImageMagick-6/policy.xml
  <!--
  <policy domain="path" pattern="@*" rights="none">
  -->

〇サンプルコード
以下のサンプルコードでは、「サンプル動画」という題名を10秒間表示し、続いて元動画を再生します。
from moviepy.editor import *

clip1 = VideoFileClip("hydrangea.mp4")
clip0 = TextClip(txt='サンプル動画', color='white', font='VL-Gothic-Regular', bg_color='#303030', method='label', size=(clip1.w, clip1.h)).set_duration(10).set_fps(30)
clip = concatenate_videoclips([clip0, clip1])

clip.write_videofile("textclip.mp4")


〇題名の画像

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

Jupyter上でChartifyを使用して垂直方向の棒グラフを表示する

Jupyter上でChartifyを使用して垂直方向の棒グラフを表示するには、以下のコードを実行します。

サンプルコード

import chartify

data = chartify.examples.example_data()
bar_data = data.groupby('country')[['quantity']].sum().reset_index()
print(bar_data)

ch = chartify.Chart(blank_labels=True, x_axis_type='categorical')
ch.set_title("縦方向棒グラフ")
ch.plot.bar(data_frame=bar_data, categorical_columns='country', numeric_column='quantity', color_column='country')
ch.show()


〇出力画像


インストール方法

Jupyterの仮想環境で以下のコマンドを実行します。
pipenv install chartify

関連情報

・Chartifyのgithubリポジトリ https://github.com/spotify/chartify

2020年8月19日水曜日

ipysheetのsheetとpandasのDataFrmaeを相互変換する

ipysheetでsheetからpandasのDataFrameへ変換、または、その逆変換を行うことができます。

サンプルコード

以下のサンプルコードをノートブックに張り付けて実行します。
・DataFrameからsheetへ変換はfrom_dataframeを使用します。
import datetime as datetime
import pandas as pd
from ipysheet import from_dataframe, to_dataframe

df_sales = pd.DataFrame(data=[
  [datetime.datetime(2020,8,11), 12340, 1.05],
  [datetime.datetime(2020,8,12), 13221, 1.04],
  [datetime.datetime(2020,8,13), 13855, 1.05],
  [datetime.datetime(2020,8,14), 12883, 1.06],
  [datetime.datetime(2020,8,15), 14223, 1.07]
], columns=['売上日', '売上金額', '前年比'])

sheet = from_dataframe(df_sales)

sheet

・sheetからDataFrameへ変換はto_dataframeを使用します。
df_sales2 = to_dataframe(sheet)
print(df_sales2)

〇サンプルコードの実行結果画面

関連情報

ipysheetのまとめ

・ipysheetのインストールは、以下の記事を参照してください。
JupyterLabにipysheetをインストールして、スプレッドシートを表示する

・ipysheetのgithubリポジトリ
https://github.com/QuantStack/ipysheet

Ubuntu 20.04にJupyter Labをインストールする(pipenv版)

Raspberry Pi(Raspbian Buster)にJupyter Labをインストールする

MoviePyで単色のクリップを作成する

MoviePyで単色のクリップを作成するには、ColorClipを使用します。size引数で画像の大きさ、color引数で色を指定します。
set_durationでクリップの長さ、set_fpsで1秒当たりのフレーム数を指定します。

〇サンプルコード
以下のサンプルコードでは、2つの動画ファイルを読み込んで連結し、新たな動画ファイルとして保存しています。
from moviepy.editor import *

clip = ColorClip(size=(640, 480),color=(128,128,255)).set_duration(10).set_fps(30);
clip.write_videofile("colorclip.mp4")

〇単色画像

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月18日火曜日

ipysheetで日付選択ダイアログを表示する

ipysheetでJupyter WidgetsのDatePickerクラスを使用して、セル内の日付を選択する事ができます。

サンプルコード

以下のサンプルコードをノートブックに張り付けて実行します。 ・日付選択ダイアログをセルに追加
import ipysheet
from ipywidgets import DatePicker

sheet = ipysheet.sheet(rows=2)
control = DatePicker(
    description='日付選択:',
    disabled=False
)
cell0 = ipysheet.cell(0, 0, control, style={"min-width":"10em"})

sheet

・コントロールの値の表示
選択していない状態だとNoneが表示されます。
print(cell0.value.value)

〇サンプルコードの実行結果画面

関連情報

ipysheetのまとめ

・ipysheetのインストールは、以下の記事を参照してください。
JupyterLabにipysheetをインストールして、スプレッドシートを表示する

・ipysheetのgithubリポジトリ
https://github.com/QuantStack/ipysheet

Ubuntu 20.04にJupyter Labをインストールする(pipenv版)

Raspberry Pi(Raspbian Buster)にJupyter Labをインストールする

MoviePyで2つ以上の動画を連結する

MoviePyで2つ以上の動画を連結するには、concatenate_videoclips関数を使用します。

サンプルコード

以下のサンプルコードでは、2つの動画ファイルを読み込んで連結し、新たな動画ファイルとして保存しています。
from moviepy.editor import *

clip1 = VideoFileClip("hydrangea.mp4")
clip2 = VideoFileClip("riceplant.mp4")
# 2つ以上も連結できます
clip = concatenate_videoclips([clip1, clip2])
clip.write_videofile("concatenate.mp4")

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

JupyterLabにjupyterlab-quickopenをインストールして、ノートブックを検索して実行できるようにする

jupyterlab-quickopenで、ノートブックを検索して実行できるようになります。

〇jupyterlab-quickopenの画面
画面左の虫眼鏡のアイコンをクリックして、検索ボックスからノートブックを検索して実行します。

インストール手順

以下のコマンドを実行します。
1. nodejsのインストール
sudo apt-get -y install curl

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -

sudo apt-get install -y nodejs

2. jupyterの仮想環境フォルダに移動後、以下のコマンドを実行します。
pipenv shell

pipenv install jupyterlab-quickopen

jupyter labextension install @parente/jupyterlab-quickopen

sudo systemctl restart jupyter.service

関連情報

・jupyterlab-quickopenのgithubリポジトリ
https://github.com/parente/jupyterlab-quickopen

Ubuntu 20.04にJupyter Labをインストールする(pipenv版)

Raspberry Pi(Raspbian Buster)にJupyter Labをインストールする

2020年8月17日月曜日

ipysheetでセル内にイメージを表示する

ipysheetでセル内にJupyter WidgetsのImageクラスを使用してイメージを表示する事ができます。

サンプルコード

以下のサンプルコードをノートブックに張り付けて実行します。
import ipysheet
from ipywidgets import Image

sheet = ipysheet.sheet(rows=2)
# サイズを指定して表示
with open("./yellow_flower_small.png", "rb") as file:
    image = file.read()
control = Image(
    value=image,
    width=80,
    height=60
)
cell0 = ipysheet.cell(0, 0, control, style={"min-width":"10em"})
# 直接ロードして表示
cell1 = ipysheet.cell(0, 1, Image.from_file("./yellow_flower_small.png"), 
    style={"min-width":"10em"})

sheet

〇サンプルコードの実行結果画面

関連情報

ipysheetのまとめ

・ipysheetのインストールは、以下の記事を参照してください。
JupyterLabにipysheetをインストールして、スプレッドシートを表示する

・ipysheetのgithubリポジトリ
https://github.com/QuantStack/ipysheet

Ubuntu 20.04にJupyter Labをインストールする(pipenv版)

Raspberry Pi(Raspbian Buster)にJupyter Labをインストールする

MoviePyで動画の指定秒数のフレームを画像として保存する

MoviePyで動画の指定秒数のフレームを画像として保存するには、save_frame関数を使用します。
t引数で保存したいフレームの秒数を指定します。

サンプルコード

以下のサンプルコードで、動画の速度を半分にして、ファイルを保存しています。
from moviepy.editor import *

clip_orig = VideoFileClip("hydrangea.mp4")
clip_orig.save_frame(filename="./hydrangea_2_05.png", t=2.05)
・フレームを保存した画像の例

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

mplfinanceのチャートにマーカーを追加する

mplfinanceのチャートにマーカーを追加するには、plotメソッドでaddplot引数を使用します。
addplot引数には配列でmake_addplotメソッドで作成した辞書データを渡します。
make_addplotメソッドに以下の引数を渡します。
・1番目の引数 : マーカーを表示するためのデータ。df["列名"]で渡すことができます。
・type : "scatter"を指定します。
・color : マーカーの色
・markersize : マーカーのサイズ
・marker : マーカーのパターン。使用できるパターンはhttps://matplotlib.org/3.2.2/api/markers_api.htmlを参照してください。

サンプルコード

下記サンプルをノートブックに貼り付けて、実行します。
from datetime import datetime
import pandas as pd
import mplfinance as mpf

fx_data = [
    [datetime(2020, 7, 8), 107.475, 107.711, 107.202, 107.253, None, None, None],
    [datetime(2020, 7, 9), 107.231, 107.398, 107.097, 107.201, 107.201, None, None],
    [datetime(2020, 7, 10), 107.169, 107.264, 106.639, 106.93, None, None, None],
    [datetime(2020, 7, 13), 106.861, 107.319, 106.787, 107.283, None, None, None],
    [datetime(2020, 7, 14), 107.227, 107.427, 107.119, 107.236, 107.236, None, None],
    [datetime(2020, 7, 15), 107.205, 107.309, 106.666, 106.939, None, None, None],
    [datetime(2020, 7, 16), 106.895, 107.401, 106.833, 107.272, None, None, None],
    [datetime(2020, 7, 17), 107.250, 107.360, 106.938, 106.986, None, None, None],
    [datetime(2020, 7, 20), 107.011, 107.537, 106.970, 107.279, None, None, None],
    [datetime(2020, 7, 21), 107.193, 107.367, 106.681, 106.803, None, None, None],
    [datetime(2020, 7, 22), 106.789, 107.288, 106.705, 107.153, None, None, None],
    [datetime(2020, 7, 23), 107.124, 107.231, 106.711, 106.865, None, 107.231, None],
    [datetime(2020, 7, 24), 106.826, 106.872, 105.681, 106.052, None, None, 105.681]
]

df = pd.DataFrame(fx_data, columns=['date', 'open', 'high', 'low', 'close', 'signal1', 'signal2', 'signal3'])
df = df.set_index("date")

series = [
    mpf.make_addplot(df["signal1"],type='scatter',markersize=200,marker='o',color='#D93D4A'),
    mpf.make_addplot(df["signal2"],type='scatter',markersize=200,marker='v',color='orange'),
    mpf.make_addplot(df["signal3"],type='scatter',markersize=200,marker='*',color='#049DBF')
]
mpf.plot(df,type='candle', datetime_format='%Y/%m/%d', addplot=series)

・実行結果

関連情報

・mplfinanceのインストール方法は以下の記事を参照してください。
JupyterLabにmplfinance、pandas、matplotlibをインストールして、ロウソク足チャートを表示する

・mplfinanceのgithubリポジトリ
https://github.com/matplotlib/mplfinance
Ubuntu 20.04にJupyter Labをインストールする(pipenv版)

Raspberry Pi(Raspbian Buster)にJupyter Labをインストールする

JupyterLabでjupyterlab debugger extensionをインストールして、デバッガーを利用する

jupyterlab debugger extensionで変数の参照やブレークポイントなどデバッガーの機能が利用できるようになります。

〇デバッガーの画面

インストール手順

以下のコマンドを実行します。
1. nodejsのインストール
sudo apt-get -y install curl

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -

sudo apt-get install -y nodejs

2. jupyterの仮想環境フォルダに移動後、以下のコマンドを実行します。
pipenv shell

pipenv install xeus-python ptvsd 

jupyter labextension install @jupyterlab/debugger
※要ブラウザリフレッシュ

3. デバッガーを利用する場合はXPython(xeus-python)を使用します(もしくはカーネル切り替え)。

関連情報

・jupyterlab debugger extensionのgithubリポジトリ
https://github.com/jupyterlab/debugger

Ubuntu 20.04にJupyter Labをインストールする(pipenv版)

Raspberry Pi(Raspbian Buster)にJupyter Labをインストールする

2020年8月16日日曜日

ipysheetでセルにラジオボタンを配置する

ipysheetでセルにラジオボタンを配置する事ができます。

サンプルコード

以下のサンプルコードをノートブックに張り付けて実行します。 ・ラジオボタンの作成
import ipysheet
from ipywidgets import RadioButtons

sheet = ipysheet.sheet(rows=2)
control = RadioButtons(
    options=['いちご', 'りんご', 'ぶどう'],
    value='りんご',
    description='好きな果物:'
)
cell0 = ipysheet.cell(0, 0, control, style={"min-width":"10em"})

sheet

・チェックボックスの値を取得
print(cell0.value.value)

〇サンプルコードの実行結果画面

関連情報

・ipysheetのインストールは、以下の記事を参照してください。
JupyterLabにipysheetをインストールして、スプレッドシートを表示する

・ipysheetのgithubリポジトリ
https://github.com/QuantStack/ipysheet

Ubuntu 20.04にJupyter Labをインストールする(pipenv版)

Raspberry Pi(Raspbian Buster)にJupyter Labをインストールする

MoviePyで動画の速度を変更する

MoviePyで動画の速度を変更するには、speedx関数を使用します。
factorで元の動画に対する比率を指定します。0.5で1/2倍、2で倍速になります。

〇サンプルコード
以下のサンプルコードで、動画の速度を半分にして、ファイルを保存しています。
from moviepy.editor import *
from moviepy.video.fx.speedx import speedx

clip_orig = VideoFileClip("hydrangea.mp4")
clip = speedx(clip_orig, factor=0.5)
clip.write_videofile("hydrangea_speedx.mp4")

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

mplfinanceのチャートに折れ線グラフを追加する

mplfinanceのチャートに折れ線グラフを追加するには、plotメソッドでaddplot引数を使用します。
addplot引数には配列でmake_addplotメソッドで作成した辞書データを渡します。
make_addplotメソッドに以下の引数を渡します。
・1番目の引数 : グラフを表示するためのデータ。df["列名"]で渡すことができます。
・color : グラフの色
・width : グラフの線
・linestyle : デフォルトは実線ですが、dashedで破線、dottedで点線にすることができます。

サンプルコード

下記サンプルでは本数3のボリンジャーバンドを追加しています。
from datetime import datetime
import pandas as pd
import mplfinance as mpf

fx_data = [
    [datetime(2020, 7, 8), 107.475, 107.711, 107.202, 107.253],
    [datetime(2020, 7, 9), 107.231, 107.398, 107.097, 107.201],
    [datetime(2020, 7, 10), 107.169, 107.264, 106.639, 106.93],
    [datetime(2020, 7, 13), 106.861, 107.319, 106.787, 107.283],
    [datetime(2020, 7, 14), 107.227, 107.427, 107.119, 107.236],
    [datetime(2020, 7, 15), 107.205, 107.309, 106.666, 106.939],
    [datetime(2020, 7, 16), 106.895, 107.401, 106.833, 107.272],
    [datetime(2020, 7, 17), 107.250, 107.360, 106.938, 106.986],
    [datetime(2020, 7, 20), 107.011, 107.537, 106.970, 107.279],
    [datetime(2020, 7, 21), 107.193, 107.367, 106.681, 106.803],
    [datetime(2020, 7, 22), 106.789, 107.288, 106.705, 107.153],
    [datetime(2020, 7, 23), 107.124, 107.231, 106.711, 106.865],
    [datetime(2020, 7, 24), 106.826, 106.872, 105.681, 106.052]
]

df = pd.DataFrame(fx_data, columns=['date', 'open', 'high', 'low', 'close'])
df = df.set_index("date")

# 実際は20本くらいが良いがデータが少ないので3本に設定
df["ma3"] = df["close"].rolling(3).mean()
df["std3"] = df["close"].rolling(3).std()
df["s1u"] = df['ma3'] + df['std3']
df["s1L"] = df['ma3'] - df['std3']
df["s2u"] = df['ma3'] + df['std3'] * 2
df["s2L"] = df['ma3'] - df['std3'] * 2

series = [
    mpf.make_addplot(df["s1u"], color="#F27649", width=1, linestyle="dashed"),
    mpf.make_addplot(df["s1L"], color="#F27649", width=1, linestyle="dashed"),
    mpf.make_addplot(df["s2u"], color="#D94E41", width=1, linestyle="dotted"),
    mpf.make_addplot(df["s2L"], color="#D94E41", width=1, linestyle="dotted")
]
mpf.plot(df,type='candle', datetime_format='%Y/%m/%d', addplot=series)

・実行結果


関連情報

・mplfinanceのインストール方法は以下の記事を参照してください。
JupyterLabにmplfinance、pandas、matplotlibをインストールして、ロウソク足チャートを表示する

・mplfinanceのgithubリポジトリ
https://github.com/matplotlib/mplfinance
Ubuntu 20.04にJupyter Labをインストールする(pipenv版)

Raspberry Pi(Raspbian Buster)にJupyter Labをインストールする

JupyterLabでPythonコードを自動整形してくれるnb_blackをインストールする

nb_blackでノートブックに入力したPythonコードを自動整形する事ができます。

〇nb_blackの画面

インストール手順

1.jupyterの仮想環境フォルダに移動後、以下のコマンドを実行します。
pipenv shell

pipenv install nb_black

2. コードを整形したいノートブックの初めのセルに以下を記入します。
%load_ext lab_black

関連情報

・nb_blackのgithubリポジトリ
https://github.com/dnanhkhoa/nb_black

Ubuntu 20.04にJupyter Labをインストールする(pipenv版)

Raspberry Pi(Raspbian Buster)にJupyter Labをインストールする

2020年8月15日土曜日

Dockerでpython3.8とnewspaper3kをインストールしたコンテナ(Alpine3.12ベース)を作成する

newspaper3kでウェブページを読み込んで解析する事ができます。

イメージの作成と実行

以下のコマンドとDockerfileを使用してpython3.8とnewspaper3kがインストールされたイメージを作成する事ができます。

docker build -t dk-newspaper3k .

Dockerfile
FROM python:3.8-alpine3.12
RUN apk --no-cache add libstdc++ \
    libxml2 \
    libxslt \
    libjpeg-turbo \
  && apk --no-cache --virtual pydeps add gcc \
    g++ \
    python3-dev \
    musl-dev \
    cython \
    libxml2-dev \
    libxslt-dev \
    jpeg-dev \
    zlib-dev \
    libpng-dev \
  && pip install newspaper3k \
  && apk del --purge pydeps
CMD ["/bin/sh"]

以下のコマンドでサンプルコードを実行して、ウェブページから題名、本文を表示します。
docker run -v `pwd`:/tmp --rm -it dk-newspaper3k /usr/local/bin/python3 /tmp/test.py

test.py
from newspaper import Article
a = Article('https://www.python.org/', language='en')

a.download()
a.parse()
# print title/text of the page.
print(a.title)
print(a.text)

関連情報

・プロジェクトgithubリポジトリ https://github.com/codelucas/newspaper

ipysheetでセルにドロップダウンリストを配置する

ipysheetでセルにドロップダウンリストを配置する事ができます。

サンプルコード

以下のサンプルコードをノートブックに張り付けて実行します。
・ドロップダウンリストの作成(文字列選択版)
選択した文字列をそのまま値として取得できます
import ipysheet
from ipywidgets import Dropdown

sheet = ipysheet.sheet()
control = Dropdown(
    options=['いちご', 'りんご', 'ぶどう'],
    value='りんご',
    description='好きな果物'
)
cell0 = ipysheet.cell(0, 0, control, style={"min-width":"16em"})

sheet

・チェックボックスの値を取得
print(cell0.value.value)

・サンプルコードの実行結果画面(文字列選択版)

・ドロップダウンリストの作成(文字列表示数値選択版)
選択した文字列に対応する数値を取得できます
import ipysheet
from ipywidgets import Dropdown

sheet = ipysheet.sheet()
control = Dropdown(
    options=[('いちご',1), ('りんご',2), ('ぶどう',3)],
    value=3,
    description='好きな果物'
)
cell0 = ipysheet.cell(0, 0, control, style={"min-width":"16em"})

sheet

・チェックボックスの値を取得
print(cell0.value.value)

・サンプルコードの実行結果画面(文字列表示数値選択版)

関連情報

ipysheetのまとめ

・ipysheetのインストールは、以下の記事を参照してください。
JupyterLabにipysheetをインストールして、スプレッドシートを表示する

・ipysheetのgithubリポジトリ
https://github.com/QuantStack/ipysheet

Ubuntu 20.04にJupyter Labをインストールする(pipenv版)

Raspberry Pi(Raspbian Buster)にJupyter Labをインストールする

MoviePyで動画を回転する

MoviePyで動画を回転するには、rotate関数を使用します。
angle引数で角度を指定します。expandは回転した画像が収まるように画像サイズを拡張するかどうか指定します。

サンプルコード

以下のサンプルコードで、コントラスト・輪郭を強調した感じに加工して動画を保存しています。
from moviepy.editor import *
from moviepy.video.fx.rotate import rotate

clip_orig = VideoFileClip("hydrangea.mp4")
clip = rotate(clip_orig, angle=30, resample='bilinear', expand=False)
clip.write_videofile("hydrangea_rotate.mp4")

・変換前動画

・変換後動画

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

mplfinanceのチャートのY軸表示範囲を設定する

mplfinanceのチャートのY軸表示範囲を設定するには、plotメソッドでylim引数を使用します。
ylim引数にはタプルで(下限値, 上限値)の形式で指定します。

サンプルコード

以下のコードをノートブックに張り付けて実行します。
from datetime import datetime
import pandas as pd
import mplfinance as mpf

fx_data = [
    [datetime(2020, 7, 8), 107.475, 107.711, 107.202, 107.253],
    [datetime(2020, 7, 9), 107.231, 107.398, 107.097, 107.201],
    [datetime(2020, 7, 10), 107.169, 107.264, 106.639, 106.93],
    [datetime(2020, 7, 13), 106.861, 107.319, 106.787, 107.283],
    [datetime(2020, 7, 14), 107.227, 107.427, 107.119, 107.236],
    [datetime(2020, 7, 15), 107.205, 107.309, 106.666, 106.939],
    [datetime(2020, 7, 16), 106.895, 107.401, 106.833, 107.272],
    [datetime(2020, 7, 17), 107.250, 107.360, 106.938, 106.986],
    [datetime(2020, 7, 20), 107.011, 107.537, 106.970, 107.279],
    [datetime(2020, 7, 21), 107.193, 107.367, 106.681, 106.803],
    [datetime(2020, 7, 22), 106.789, 107.288, 106.705, 107.153],
    [datetime(2020, 7, 23), 107.124, 107.231, 106.711, 106.865],
    [datetime(2020, 7, 24), 106.826, 106.872, 105.681, 106.052]
]

df = pd.DataFrame(fx_data, columns=['date', 'open', 'high', 'low', 'close'])
df = df.set_index("date")
mpf.plot(df,type='candle', datetime_format='%Y/%m/%d', ylim=((105, 110)))

・実行結果

関連情報

・mplfinanceのインストール方法は以下の記事を参照してください。
JupyterLabにmplfinance、pandas、matplotlibをインストールして、ロウソク足チャートを表示する

・mplfinanceのgithubリポジトリ
https://github.com/matplotlib/mplfinance
Ubuntu 20.04にJupyter Labをインストールする(pipenv版)

Raspberry Pi(Raspbian Buster)にJupyter Labをインストールする

JupyterLabにCPU使用率・メモリ使用量をモニタリングできるJupyterLab System Monitorをインストールする

JupyterLab System Monitorで、CPU使用率・メモリ使用量をヘッダー部分に表示する事ができます。

〇JupyterLab System Monitorの画面
グラフをクリックすると時系列グラフ表示と現在値の表示を切り替えることができます。

インストール手順

以下のコマンドを実行します。
1. nodejsのインストール
sudo apt-get -y install curl

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -

sudo apt-get install -y nodejs

2. JupyterLab System Monitorのインストール
pipenv shell

pipenv install nbresuse

jupyter labextension install jupyterlab-topbar-extension jupyterlab-system-monitor

3. 初期設定
cat << EOF >> ~/.jupyter/jupyter_notebook_config.py
# JupyterLab System Monitor
c.NotebookApp.ResourceUseDisplay.mem_limit = 4294967296
c.NotebookApp.ResourceUseDisplay.track_cpu_percent = True
c.NotebookApp.ResourceUseDisplay.cpu_limit = 4
EOF

関連情報

・JupyterLab System Monitorのgithubリポジトリ
https://github.com/jtpio/jupyterlab-system-monitor

Ubuntu 20.04にJupyter Labをインストールする(pipenv版)

Raspberry Pi(Raspbian Buster)にJupyter Labをインストールする