無粋な日々に

頭の中のメモ。分からないことを整理する

Python

APIキー、OAuthクライアントID、サービスアカウントキーの違い:Google APIs

GoogleのサービスをAPI経由で利用する際、大きく3つの認証情報が登場します。「APIキー」、「OAuth2.0クライアントID」、「サービスアカウントキー」です。本投稿ではこれらの用途をざっくりと整理し、取得方法、Pythonでの使い方の違いを説明します。 まと…

YouTube API: 再生時間が条件に合う動画を選んで再生リストを作成(2/2)

前回はB-lifeのYouTubeチャンネルを題材に、チャンネル中にある動画情報一覧および再生時間を取得し、再生時間が10分以上15分以下の条件に収まる動画のみに絞り込みを行いました。本投稿では、これら動画を使って再生リストを作成します。 前回掲載した全ス…

YouTube API: 再生時間が条件に合う動画を選んで再生リストを作成(1/2)

YouTubeで再生時間の条件で動画の再生リストを作りたくなることありませんか?今回YouTube Data APIを使って再生時間が10分以上、15分以下の動画のみを含む再生リスト作成するPythonコードを書いたので共有します。長くなりそうなので、2回に分けて投稿しま…

Pythonでmode(最頻値)を算出する最良の方法

Pythonでたまにmode(最頻値)を算出したくなるのですが、いつもどう算出するか迷います。算出方法を整理して、処理時間も計測してみました。 5つの方法 最良の方法(結論) 1. 最頻値が複数ある場合の挙動の差 2. 関数一発かの差 3. 処理速度の差 求め方 設…

Python:venv + pyenvでの環境構築

一つのOS上で複数バージョンのPythonを切り替えるためのツール、venv +pyenvのメモです。2020年の今、Pythonバージョン3.3以上しか使うことないだろうということで、個人的に venv +pyenvの組み合わせがシンプルで良いかと思います。本投稿では venv +pyenv…

時系列分析:ARモデルの性質と定常性(1/2)

ARモデルはシンプルな時系列モデルですが、自己共分散や自己相関はMAモデルほど簡素な表現はなく、Yule-Walker方程式のような連立方程式を解いていくのが一般的のようです。本投稿では2回に分けてARモデルの期待値、自己相関および定常性などの性質を整理し…

はてなブログで日々数式を含んだ記事を書く

はてなブログを復活して2週間。はてなブログでTeXを使って数式を書くのが大変で当初ずっとイライラしていた。現時点での私の対応策を書きたいと思う。 まずQiitaと比べて圧倒的に面倒な点は次: 下書きがリアルタイムでレンダリングできない(数式、リンクを…

Python: 多次元のnumpy.arrayを1次元にするreshapeとravel

numpyの多次元配列を一次元配列にしたいときは、reshape(-1,)かravel()を使えば良い import numpy as np # サンプルデータ生成(3 × 3) > x = np.arange(9).reshape(3, 3) # 表示 > x array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) # 方法1 > x.reshape(-1,) ar…

pandas.DataFrameのplotメソッドとsubplotを使って、複数グラフを柔軟にプロットする

pandasのデータフレームのplotメソッドは超便利でよくお世話になる。 複数カラムを別々のグラフに出力したい場合もsubplot=Trueを指定するだけいいので結構程度便利なんだけど、 もう少し柔軟にプロットしたい時がある。 例えば、 カラム1とカラム2は1つ目の…

Python: jsonな文字列に対してformatメソッドを使う

jsonな文字列に対してformatメソッドを使う方法 pythonでjson形式を含む文字列をformatメソッドを使う場合ちょっと工夫が必要だ。 例えば、以下のような文字列に対してformatメソッドを使うとエラーが出る # jsonな文字列 json_str = """\ {'member':'{name}…

Python: 正規表現で複数行マッチングの置換を行う

Pythonの正規表現で複数行マッチングの置換を行う Pythonのreモジュールを使って複数行に渡る正規表現マッチング・置換を行う場合はflagsオプションに適宜re.MULTILINEやre.DOTALLを指定する。 # 直接置換する場合 re.sub(pattern, repl, string, flags=(re.…