はてだBlog(仮称)

私的なブログど真ん中のつもりでしたが、気づけばWebサイト系のアプリケーション開発周りで感じたこと寄りの自分メモなどをつれづれ述べています。2020年6月現在、Elasticsearch、pandas、CMSなどに関する話題が多めです。...ですが、だんだんとより私的なプログラムのスニペット置き場になりつつあります。ブログで述べている内容は所属組織で販売している製品などに関するものではなく、また所属する組織の見解を代表するものではありません。

Pythonの集合演算の演算子チートシート風の何か

Pythonでの集合演算の演算子(和、差、積...)のチートシートです。 ひとつずつではなく、一覧の絵にしてみたところがウリですが、言語仕様の焼き直しなのでそれ以上のものではありません。あしからず。 ◆確認用コピペ用 s1 = {1,2,3,4,5} s2 = {1,2,3,4,5} …

BeautifulSoupの隣接ノード取得系のメソッドのまとめ および 他(コメント取得やテキスト取得、SoupStrainer)

BeautifulSoupについては、find系やselect系でのオブジェクト取得により取り回していくのが基本だとは思いますが、parentやnext_siblingなど隣接取得系(造語です)についても、たまに使うにせよ、使おうとするとどうだっけというところで悩ましいので、これ…

Pandas pivot、pivot_table、melt、stack、wide_to_longのシェイプ変更のイメージ(tidyデータ)

PandasにおけるDataFrameのシェイプ変更のメソッドである、 pivot、pivot_table、melt、stack、wide_to_longについて、これらをまとめて図解してみました。 実例 import pandas as pd import io df = pd.read_csv(io.StringIO(""" year,season,num 2010,春,4…

Pandas MultiIndexのオペレーションメモ

Pandasでgroupbyなどの際に思わず発生するMultiIndex。 いやもちろん、思わず...ではなくて正規の仕様なのですが、しばらく間が空くと少し勘を取り戻すのに苦労する仕様な気がします。 まあ間が空いていても空いてなくても、私の場合、reset_index()してしま…

時間がない方のためのPandas plot、seabornでの複数列の比較に向いたグラフ簡単表示例

概要 itdepends.hateblo.jp この記事は、上記の記事のおまけです。 Python/Pandasの DataFrameの複数の列の値の関係や比較を可視化したい時によく使われるであろうグラフ表示方式のうち比較的シンプルなプロット方法のスニペットをまとめました。 公式ドキュ…

続・Pandasのplot関数で複数の別種類のグラフをまとめて一枚に表示(pylot.subplots関数、axパラメータなど)

itdepends.hateblo.jp の続きといいますか、「別紙」です。 先の記事では、matplotlib.pyplot.subplotsで複数グラフを一枚におさめる例を紹介しました。 しかし、ものぐさな私は、pandas.DataFrame.plotのaxパラメータにいちいち番地を指定するのはめんどく…

Pandasのplot関数で複数の別種類のグラフをまとめて一枚に表示(pylot.subplots関数、axパラメータなど)

この記事の目的/概要 itdepends.hateblo.jp 上記の記事で、Pandasのplotの簡単なまとめをしました。見栄えの工夫やより高度な可視化にはいろいろ探求の道があると思いますが、私の場合、見栄えよりも次に必要になったのは、折れ線グラフ版、棒グラフ版などと…

DataFrame.plotによるDataFrameの可視化・グラフ表示 (Python/Pandas): チートシート風まとめ

この記事について Pandas.DataFrameのplot関数についてまとめてみました。 なお、実のところ、まとまっている・体系的であるというところでいうと、この記事を書くのに参考にさせていただいたサイト(後述の参考文献・参考サイト)がおすすめです。 体系的に…

続:Elasticsearch のバルクロード用JSON Lines ファイルをselectする toy スクリプト(ソートなど追加)

概要 この記事は次の記事の続きです。Elasticsearchのバルクロード用のJSON LinesファイルをイメージしたJSONの簡易フィルターコマンド相当のPythonでのツール例です。 経緯は下記の記事のとおりです。いわゆる拙作ではありますが、前回記事を書いたのちに自…

Elasticsearch のバルクロード用JSON Lines ファイルをselectする toy スクリプト

概要 Elasticsearchのバルクロードは次の形式なのですが、ふと必要にかられてこんな形の2行1ペアのJSON Linesファイルから、なんちゃってselectを行うトイプログラムを作成してみました。 PUT hockey/_bulk?refresh {"index":{"_id":1}} {"first":"johnny","…

Pythonで簡易HTTP静的ファイルサーバ -- 細工用にWSGIをひっかける

概要 この記事は技術的チャレンジ...というよりは、他の用途の都合、PythonのWSGIのライブラリのさわりを目的外(?)使用した例です。 という意味で、WSGIの説明などではありませんのでご了承ください。 内容としては、 WSGIの仕組みで、 ワンライナーではない…

Python itertools.groupby、itertools全般(accumulate他)、collectionsのちょっとつまみ食い

この記事について itdepends.hateblo.jp Python/Pandasのgroupbyについては、上記の前の記事で大口(?)を叩いていしまいましたが、そもそも標準ライブラリのitertoolsにgroupbyというメソッドがあるのでこれを機会に入門してみました。 itertoolsのgroupbyお…

Python/Pandas演習(dictでグループ化相当)

Python/Pandasにはgroupbyの機能があるのですが、少しトリッキーなグループ化を考えてみたメモです。 複雑な名寄せ・グループ化のニーズ 何かの集計や名寄せの際に、複数のキーやキー自体がネストされた構造化データ相当のデータで名寄せしたいということは…

1対Nのデータを結合してネストオブジェクトのJSON Lines出力のイディオム(Python/ Pandas) my 手グセ紹介

たまたま自分のまわりだけかもしれませんが、次項に示した例のように、1対Nのデータを結合してネストオブジェクトのJSON Lines出力をざっくりで良い精度でやってしまいたいという例にしばしば遭遇します。 ブームの時に手グセになっていたり、その案件でガチ…

Pythonオレオレ相対パス/ルート相対パスの小品

はじめに このブログは総じて自分メモなのですが、その中でも次の過去記事の応用(?)として、自分の手に馴染むルート相対/相対パス周りのオレオレミニライブラリを作成したのでそのメモです。 itdepends.hateblo.jp itdepends.hateblo.jp なぜこの記事なのか …

ほとんど何もしないディレクトリ同期風 Pythonプログラムの例

はじめに 例えば、自分の中ではあるあるなのですが、静的HTML*1のサイトのデータについてある要素を一括書き換えする...みたいなニーズがあります。 CMSやなんらかの仕掛けによりあっさり完了ということも多いでしょうが、一方、そうでないこともやはり少な…

静的HTMLサイトの画像が規約にしたがっているかチェック(Python / os.path.commonpath) と昔話

はじめに Pythonの次のライブラリ/便利メソッドの簡単な紹介です。 BeautifulSoup4のfind_allであるhtmlの全てのimgタグとそのsrc属性の抜き出し urllib.parse.urljoin(こちらの記事https://itdepends.hateblo.jp/entry/2020/02/02/142148) os.path.commonp…

Python os.urllib.parse.urljoinでHTML内の相対パスをルート相対パスにお手軽に変換 と 昔話

はじめに Pythonの標準ライブラリの os.urllib.parse.urljoin os.path.join os.path.normpath のスニペット事例紹介です。 特に、os.urllib.parse.urljoinについては、 「/a/b/c/foo.html」と「../../common/img/z.jpg」を引数に与えると、「/a/common/img/z…

BeutifulSoupでお手軽DOMツリーのテキスト出力

はじめに Python、BeautifulSoupふと思い出し企画です。 Pythonのスクレイピングライブラリである、BeutifulSoup4 についてオレオレ切り口でちょっとだけふれています。 BeautifulSoup4やScrapyというキーワードで言うと、スクレイピングやそもそものクロー…

Elasticsearch のFunction score queryで得られたスコアに後付けで細工する

はじめに 何度目かのElasticsearchのオレオレスコアリング論まとめです。 この記事をまとめるきっかけとして、Elasticsearch ver7系におけるScript score queryなるもので、今までできなかった(?)BM25などから得られた関連度に細工ができるようで、これは知…

Elasticsearch script query によるフィールド間の関係による検索絞り込み

この記事の内容 本記事では、Elasticsearchのscript query について、クエリ例を列挙しています。 この記事の内容 script queryの使い所(と筆者が思うところ) script query 実例 ◆インデックスの設定 ◆サンプルデータ登録 ◆クエリ例 (1) Aが1より大きいも…

続・Elasticsearchのひらがなでの検索時のトリックについて雑談(漢字ひらがな混在の場合について深掘り と  Multiplexer filterの練習もかねて)

はじめに この記事は、次の記事の続きです。 itdepends.hateblo.jp 前の記事では、ひらがな(読み仮名)→漢字にフォーカスしましたが、ここでは、ひらがなの単語の複合語や漢字とひらがなの混合の複合語などででヒットさせるにはということで膨らませてみま…

Elasticsearchのひらがなでの検索時のトリックについて雑談

はじめに Elasticsearch(kuromoji)では、アナライザーに「kuromoji_readingform」というものがあり、これを使うと「読み」に関して、表記揺れや曖昧検索相当に対応できます。 ただし、この「読み」部分については、実は、kuromojiの形態素解析(分かち書き/to…

Elasticsearchで読みの頭文字で並び替える怠惰な方法の例(just idea)

1. はじめに この記事は、ある検索系の問題設定において、できるだけElasticsearchの機能に閉じて*1手軽にやれるかどうか、という、よくある100本ノック風のチャレンジ(1本だけですが)のメモです。 図らずも、Elasticsearchのアナライズの解説っぽいところ…

Jinja(Jinja2)をさわってみる

Jinja(Jinja2) JinjaはPythonで動作するテンプレートエンジンです。 PythonのWAFのFlaskのデフォルトのテンプレートエンジンでもあるようです。 WAFとの結びつきが強いイメージなのでWebアプリでしか動作しないのかなと思っていたら、コマンドラインのPython…

検索エンジンでのルックアップ検索型方式に関する講釈とdis_max、constant_score(Elasticsearchを題材に)

はじめに 検索エンジンのスコアリング・チューニングは「関連度」がキモ...だが... このブログの前の記事で、「BM25」のような情報検索における関連度について、「使わせていただく立場」として載自分なりの講釈を述べてみました。 itdepends.hateblo.jp 関…

BM25を分かった気になるかもしれない邪道な解説(?)

1. はじめに このブログではElasticsearchについて時々思い出したように書きなぐっております。 そしてこの記事では、Elasticsearchのデフォルトのスコアリング方式であるBM25について、数式が苦手でも、なんとなく分かった気になる(かもしれない)解説を試…

pandasクックブックの感想を借りた自分メモ

pandasクックブックの部分的な感想 この記事は、こちら↓の書籍の読書感想文です。 pandasの理解が深まるとともに、他では見られない、暗黙のルール(ではないんだろうが私は良くわかってなかったpandasの世界観)が まとまっていて、非常にためになりました。…

Pandas文学論なんちて

はじめに Pandasで遊んでいて、便利だなーと思う一方で、Pandasでのある種のDSLとしての記法やライブラリをうまく使えばもっとシンプルに、かつ可読性(ここでは、ビジネスルールとデータクレンジングなどのための前処理(の前処理)をうまく分離したもの)…

Elasticsearchの検索スコアリング(boost_mode、score_modeのsumとmultiplyの噛み合わせについてもう少し)

はじめに この記事は次の記事のちょっとだけ補足(つづき)です。 itdepends.hateblo.jp 記事の概要 前の記事では、ひとことでいうとスコアリングは文字通り加点方針(条件に該当するとプラスが重なる方針)がオススメみたいなところを示唆しておりました。 …