kakakakakku blog

Weekly Tech Blog : Keep on Learning 👍

Python

Intro to Machine Learning : Kaggle Courses で「住宅価格予測」に入門した

Kaggle が公開している「Kaggle Courses」で機械学習に入門できる「Intro to Machine Learning」コースを受講した.Intro と書いてある通り,入門レベルではあるけど,scikit-learn を使って「決定木(回帰)」や「ランダムフォレスト」で「住宅価格予測」を…

NumPy / Pandas / Matplotlib / scikit-learn などの理解度確認ができる「Python 3 エンジニア認定データ分析試験」に合格した

先週末に「Python 3 エンジニア認定データ分析試験」を受験して合格したとても良い試験で,特に試験勉強をする過程で知識の幅が広がった.試験の認知度向上のためにも紹介したいと思う.当然ながら試験問題に関しては何も書かず,基本的に公開情報をベースに…

Numpy の dot() 関数は引数によって「ドット積(内積)」や「行列積」の計算になる

Numpy で dot() 関数を使うと配列同士の「ドット積(内積)」を計算できる.詳しくはドキュメントに載っているけど,dot() 関数は引数 a と b に指定する値(1次元配列/2次元配列)によって挙動が異なる.個人的にわかりにくかったため,具体的に実装しなが…

Pandas で時系列データをグループ化して集計できる「Grouper」

Pandas で groupby() 関数を使うと,データセットをグループ化して集計できる.さらに Grouper オブジェクトと組み合わせると,より高機能なグループ化を実現できる.今回は groupby() 関数と Grouper オブジェクトを組み合わせて「時系列データの集計」を試…

NumPy で「単位行列」を生成できる identity() 関数と eye() 関数の違い

NumPy で「単位行列」を生成するときに identity() 関数と eye() 関数がサポートされている.それぞれの違いを整理するためにドキュメントを読みながら試してみた.今回は Numpy 1.20.2 を前提にする.ドキュメントには (almost) equivalent function と書い…

NumPy で「n次元配列」を「1次元配列」に変換できる ravel() 関数と flatten() 関数の違い

NumPy で「n次元配列」を「1次元配列」に変換するときに ravel() 関数と flatten() 関数がサポートされている.ravel() 関数に関しては,正確には numpy.ravel() 関数と numpy.ndarray.ravel() 関数がある.それぞれの違いを整理するためにドキュメントを読…

Pandas の機能を実践的に学ぶならこの1冊!「Pandas ライブラリ活用入門」を読んだ

個人的に Pandas を使ってデータ分析をする機会が増えてきて,今までの浅い経験ではうまく使いこなせず,Pandas を中心に細かく学び直している.最近 Pandas 関連の記事を多く書いていることにも関連しているし,少し前には Pandas を学べる「Kaggle Courses…

scikit-learn でカテゴリ変数を変換する : OneHotEncoder と LabelEncoder

前回の記事では Pandas の get_dummies() 関数を使って「カテゴリ変数」の変換(One-Hot エンコーディング)を試した. kakakakakku.hatenablog.com Pandas 以外の選択肢として scikit-learn の sklearn.preprocessing モジュールを使うこともできる.今回は…

Pandas の get_dummies() 関数でカテゴリ変数をダミー変数に変換する

Pandas で get_dummies() 関数を使うと「カテゴリ変数」を「ダミー変数」に変換できる.「カテゴリ変数」とは,例えば「血液型」や「職業」など,限られた選択肢の中から選んだ値で,ENUM 型のようなイメージをするとわかりやすい分析業務を前提に考えると A…

Pandas で相関件数を計算して Seaborn で可視化する

Pandas で corr() 関数を使うと DataFrame と Series で「相関係数 (correlation coefficient)」を計算できる.今回は DataFrame の corr() 関数と Seaborn を使った可視化を試す. pandas.DataFrame.corr — pandas 1.2.4 documentation pandas.Series.corr …

Pandas で NaN を操作する : fillna() と interpolate()

先週紹介した学習コンテンツ「Kaggle Courses : Pandas」で「欠損値 (Missing data) : NaN」の取り扱いを学んだけど,その後「Pandas ライブラリ活用入門」を読んでいたら「置換 : fillna() 関数」に多くのパラメータがあり,他にも「補間 : interoperete() …

Jupyter Notebook と Pandas で DataFrame を全て表示するオプション設定

Jupyter Notebook で Pandas のコードを実装しているときに同じような表示関連設定を繰り返し使うため,メモも兼ねてまとめておく.オプションは他にも多くあり,詳細はドキュメントに載っている.今回は Python 3.9 と Pandas 1.2.4 を前提とする. pandas.…

Pandas を基礎から学ぶために「Kaggle Courses」の学習コンテンツを受講した

機械学習コンペティションを開催する Kaggle のサイトを見ていたら「Kaggle Courses」という「学習コンテンツ」が公開されていて,Python や SQL や 機械学習など様々なトピックを学べるようになっていた.なんと無料現時点でコースは「計17種類」もある.今…

python-docx を使って Python でリッチな Word ドキュメントを作る

python-docx を使うと Python で Word ドキュメントを操作できる.新しく Word ドキュメントを作ることもできるし,既存の Word ドキュメントから文章を抽出することもできる.前に紹介した python-pptx と関連している.最近 PowerPoint の文章を Word に繰…

python-pptx で PowerPoint の「非表示スライド」を判定する

Python で PowerPoint を操作するライブラリ python-pptx は本当に便利で,前に「発表者ノート」を抽出するサンプルコードを紹介したけど,引き続き今も使っている.PowerPoint ファイルの文章レビューを自動化したり,業務で使うスクリプトも増えてきた.作…

python-pptx を使って PowerPoint ファイルの「発表者ノート」を抽出する

PowerPoint を使ってプレゼンテーションをするときに,原稿や関連情報を「発表者ノート」に書いておく人は多いと思う.最近 PowerPoint ファイルの「発表者ノート」を抽出して別のファイルにコピーする必要があった.具体的にはプロンプターに投影する原稿を…

Redash v9 で採用されたジョブキューライブラリ RQ (Redis Queue) の基本機能を試した

Redash v9 で「ジョブキューライブラリ」として採用された RQ (Redis Queue) を試した.今までの Redash では Celery を使っていた.RQ は Redis を使って「ジョブ登録 (enqueue)」と「ジョブ実行 (work)」の機能をサポートする.ドキュメントを読むと,多く…

Jupyter Notebook で clear_output() を使って定期的に表示を更新する

Jupyter Notebook を使ってデモ環境を作るときに while と print を組み合わせて,定期的に表示を更新したかった.例を出すと「時計のように」毎秒表示を更新するイメージとなる.調べたところ IPython.display モジュールに clear_output 関数があり,解決…

Jupyter Notebook でパフォーマンスを計測するなら %%timeit と書こう

Python で実装した処理のパフォーマンスを計測するときに,たまに timeit を使っている.timeit は処理を繰り返し実行することにより,精緻な計測結果を把握できる.今までは timeit を import して直接実行していたけど,よく調べてみると,Jupyter Noteboo…

VS Code で Jupyter Notebook を便利に編集できる新機能を試した

今月 Visual Studio Code (VS Code) で Python Extension 機能のリリースがあり,例えば VS Code から直接 .py を実行できるようになった.個人的に注目したのは「Jupyter Notebook サポート」で,日頃から Python のサンプルコードを書いたり,トレーニング…

Python + unittest を使ってテストパターンをパラメータ化するときに subTest() メソッドを使う

Python + unittest を使って TDD (Test Driven Development) の練習(ペアプログラミング)をしていたときに,リファクタリングのサイクルでテストパターンをパラメータ化することになった.Parameterized Test にリファクタリングをするために,期待値をパ…

Jupyter Notebook に環境変数を設定する

最近 Jupyter Notebook を使って Python コードを実装しているときに,設定値を直接コードに書くのではなく,環境変数から取得する必要があった.小ネタとして「Jupyter Notebook に環境変数を設定する方法」をまとめておく.結論として,今回は direnv を使…

Python の基礎知識を証明できる「Python 3 エンジニア認定基礎試験」に合格した

先週末に「Python 3 エンジニア認定基礎試験」を受験し,問題なく合格した.試験問題に関係する内容は NDA を厳守するため書かず,今回は「試験紹介(普及のため!)」と「勉強方法」にフォーカスする. Python 試験とは? 「一般社団法人 Python エンジニア…

Python の理解度確認をするために「Python チュートリアル 第3版」を読んだ

オライリーから出版されている「Python チュートリアル 第3版」を読んだ.読者対象として「Python 入門者のための」と書いてあるけど,そこそこ難しい内容もあり,中級者でも楽しめる内容になっている.本書の最初に載っている「訳者まえがき」にも,理解度…

Python で「両端キュー」として使えるデータ型 collections.deque

最近「Python チュートリアル 第3版」を読んでいて,11章で紹介されている collections.deque を実際に使ったことがなく,ドキュメントを読みながら動作確認をした.Python 3.2 と Python 3.5 で追加されたメソッドもあり,メモ程度にまとめておこうと思う.…