kakakakakku blog

Weekly Tech Blog : Keep on Learning 👍

Python

Playwright for Python: a タグの href 属性を取得する

Playwright for Python でリンクタグ a タグの href 属性から URL を取得するときは,Locator オブジェクトで get_attribute('href') のように実装する. page.locator('h1#title > a').get_attribute('href') page.locator('h1.entry-title > a').nth(0).ge…

Playwright for Python: GitHub Actions のエラー時にトレース情報を取得する

前回の記事では Playwright for Python の Trace Viewer を使って,ブラウザ操作中に「何が起きていたのか❓」を詳細に確認できることを紹介した(以下のリンク参照).さらに pytest 連携を使って,自動テスト実行中にトレース情報を取得できることも紹介し…

Playwright for Python: ブラウザ操作のデバッグが捗る Trace Viewer

Playwright for Python の Trace Viewer を使うと,ブラウザ操作中に「何が起きていたのか❓」を詳細に探索できる.スクリーンショットや録画だけでは判断できないようなエラーをデバッグするときに使える.また pytest と連携させると自動テスト実行中にトレ…

Textual がスゴイ!Python と CSS でストップウォッチアプリを作ってみた

Textual は Python を使って TUI (Text User Interfaces) アプリを構築できるフレームワークで,ドキュメントには "電卓" や "Color Picker" を実装したサンプルが載っている.アプリのデザインには CSS を使う.Python x CSS という技術スタックで,入門し…

Playwright for Python: iPhone / iPad / Pixel のブラウザ操作を自動化する

Playwright for Python を使うと iPhone / iPad / Pixel などのデバイスを使ったブラウザ操作を自動化できる. ドキュメントに書いてある通り,playwright.devices の Dict(辞書)にデバイス名を設定して,browser.new_context() でコンテキストを作る.サ…

暫定対応 : Python 3.10 で python-pptx を使おうとすると collections で AttributeError が出てしまう

「python-pptx」は Python で Microsoft PowerPoint ファイルを操作できるライブラリでよく使っている❗️ github.com 最近 Python 3.10(今回の環境だと 3.10.8)で python-pptx を使おうと思ったら,以下のように AttributeError: module 'collections' has …

Playwright for Python: ブラウザ操作を録画する

Playwright for Python を使うとブラウザ操作を簡単に録画できる. ドキュメントに書いてある通り,browser.new_context() でコンテキストを作るときに以下の video 関連のパラメータを設定する.注意点は録画データを最後まで保存するために context.close(…

UUID v6, v7, v8 : タイムスタンプでソートできる新しい UUID のドラフト仕様

ID を採番するときによく使われる UUID Version 4 の課題として「順序性がなくソートしにくい」という側面があり,ULID (Universally Unique Lexicographically Sortable Identifier) を使えばソートできるようになるという記事を前に書いた. kakakakakku.h…

Playwright for Python: ブラウザ操作を自動化しよう!

ブラウザ操作を自動化して,E2E (End to End) テストやスクレイピングをするときに使えるライブラリ Playwright を試す.Playwright の特徴としてまず「クロスブラウザ」があり,Chromium / Firefox / WebKit をサポートしている.また「複数言語」という特…

ソートできるユニークな ID を ULID で採番する

ユニークな ID を採番するときに UUID (Universally Unique Identifier) v4 を使う場面は多いと思う.しかし要件によっては UUID だと「順序性がなくソートしにくい」という側面もあったりする.今回はユニーク性を維持しつつミリ秒精度でソートできる ULID …

Python コードでアーキテクチャ図を生成できる Diagrams がめっちゃ便利!

「Diagrams」を使うと Python コードでアーキテクチャ図を生成できる.サポートされているアイコンセットがとても多く AWS や Google Cloud や Microsoft Azure もあれば,Kubernetes やプログラミング言語なども使える.試してみたけどめちゃくちゃ便利!ま…

Pandas で指数表記を無効化する

Jupyter Notebook で Pandas のコードを実装しているときに「指数表記を無効化」する場合は pd.options の display.float_format を設定する.以下にサンプルとして「桁数 2」と「桁数 6」の例を載せておく. # 小数点以下 桁数 2 pd.options.display.float_…

Pandas で NDJSON (.jsonl) を読み込む

Pandas で NDJSON (Newline Delimited JSON) を読み込む場合 read_json() 関数に lines=True パラメータを設定すれば OK! pandas.pydata.org NDJSON サンプル dataset.jsonl { "id": 1, "name": "Alice" } { "id": 2, "name": "Bob" } { "id": 3, "name": "…

無料で受験できる Python 新試験「PythonZen & PEP 8 検定試験」に合格した

2022年3月1日に β リリースになった「一般社団法人 Python エンジニア育成推進協会」の新試験「PythonZen & PEP 8 検定試験」に合格した現在まだ β だけど合格すると「本認定」になる.PythonZen (PEP 20 - The Zen of Python) と PEP 8 から出題されるため…

Scratchpad は便利!Jupyter Notebook で検証用のセルをシュッと追加する

Jupyter Notebook でコードを書いているときに「検証のために一時的にセルを追加してコードを書いて終わったらセルを消す」という操作を頻繁にしている(表現しにくいけど...).些細な操作ではあるけど地味に面倒だった. そこで「Scratchpad」を使ったら便…

Feature Engineering : Kaggle Courses で「特徴量エンジニアリング」を学ぶ

Kaggle が公開している「Kaggle Courses」で「Feature Engineering」コースを受講した.機械学習モデルを構築するときに重要になる「特徴量エンジニアリング」を多岐にわたる観点から学べる.「特徴量エンジニアリング」の目標は「データセットを目の前の問…

scikit-learn の Pipeline を使って前処理やアルゴリズムをまとめて宣言する

scikit-learn の Pipeline を使うと,データセットの前処理や機械学習アルゴリズムなどを「1つのオブジェクトに」まとめることができる. scikit-learn.org 前回の記事で紹介した「Kaggle Courses」の「Intermediate Machine Learning」コースでも使われてい…

Intermediate Machine Learning : Kaggle Courses で学びながら「住宅価格予測」コンペに参加する

Kaggle が公開している「Kaggle Courses」で「Intermediate Machine Learning」コースを受講した.Kaggle のコンペティション「Housing Prices Competition for Kaggle Learn Users(住宅価格予測)」をテーマに試行錯誤をして,実際にモデルを登録すること…

imbalanced-learn の SMOTE モジュールを使って簡単にオーバーサンプリングを実現する

分類などの機械学習モデルを構築するときにデータセットに偏り(不均衡データ)があると適切に学習できない可能性がある.データセットを強制的に増やす操作を「オーバーサンプリング」と言って,SMOTE (Synthetic Minority Over-sampling Technique) や ADA…

iris データセットを libsvm フォーマットにする : scikit-learn の dump_svmlight_file()

scikit-learn の datasets モジュールの中に libsvm フォーマットのデータセットを扱う関数がある.libsvm フォーマットは以下のフォーマットでデータセットを表現し,1番左にラベル(教師データ)を持つ.例えば Amazon SageMaker の組み込みアルゴリズム X…

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 …