よしたく blog

ほぼ週刊で記事を書いています

Python

supabaseで全件削除するための小技

supabase の Python ライブラリであるsupabase-pyでは、2024-03-06 時点で全件削除できるような実装はないらしい。 そこで擬似的に全件削除のようなことをしたいときにはひと工夫する必要がある。 supabase.com 削除するときのフィルター条件でneqを使って、…

【Python】ETLツールのLuigiをさわってみた

前回に引き続き、ETLツールをいろいろさわってみたいと思ったところから、今回はPython製のETLツールLuigiをさわってみた。 インストール pip install luigi バージョン確認 $ python --version Python 3.9.1 luigi 3.2.0 サンプルコード import luigi class…

【Python】ETLツールのPrefectをさわってみた

ETLツールをいろいろさわってみたいと思って、Python製のETLツールPrefectをさわってみた。 インストール pip install prefect バージョン確認 $ python --version Python 3.11.1 $ prefect --version 2.8.3 サンプルコード Prefect公式で提供されている「We…

Pythonのtranslateを使った文字の置換

Python のtranslateメソッドを使うとmaketransメソッドから生成される変換表を元に文字を置換できる。 https://docs.python.org/ja/3/library/stdtypes.html?highlight=str%20replace#str.translate https://docs.python.org/ja/3/library/stdtypes.html?hig…

Pythonの%timeで出力される値の見方

Pythonの%timeで出力される値の見方を調べたので、メモしておく。 yoshitaku-jp.hatenablog.com CPU times: user 14 µs, sys: 0 ns, total: 14 µs Wall time: 19.1 µs と表示されているとき、 Wall time: 19.1 µsは全体の実行時間を表している。 CPU times: …

Jupyter Notebookでコードの速度を計測するtimeとtimeit

Jupyte Notebook でコードの速度を計測する方法にマジックコマンドとして用意されている、timeと timeitを使う方法がある。 この 2 つの存在は知っていたが、 time と timeit で何が違うのか %の数が 1 つのときと 2 つのときで何が違うのか がわからなかっ…

Pandasで欠損値を埋めるための方法

Pandasで欠損値を埋めるための方法をいくつか確認したのでまとめておく。fillna関数を使うと引数に渡した値で、NaNを埋められる。 まずは適当にNaNを含んだデータを生成する。 import numpy as np import pandas as pd df = pd.DataFrame(data=[1,2,4,np.nan…

PythonのCounterクラスを使って要素の出現回数を集計する

Pythonでは、よく使われる組み込みコンテナの dict、list、set、tuple に代わる特殊なコンテナがあり、collectionsモジュールにまとまっている。今回はその中にある辞書型のサブクラスであるCounterを使ってリストなどの要素の出現回数を数え、簡単に集計を…

MinIOをboto3を使ってPythonから操作する

Python で S3 を操作するときに使う、AWS SDK for Python(boto3) を使って MinIO も操作できる。 以前作った環境を利用し、Python から操作できるか確認する。 yoshitaku-jp.hatenablog.com 準備 インストール pip で boto3 をインストールしておく。 pip …

Streamlitに用意されている「line_chart」「area_chart」「bar_chart」を触ってみた

Streamlit について引き続き確認していく。 yoshitaku-jp.hatenablog.com 今回は Streamlit で標準に用意されている simple chart を試す。 紹介されているのは以下の 3 種類になる。 line_chart area_chart bar_chart line_chart 線グラフはst.line_chart関…

SQLAlchemyを使ってMysql 8.0にアクセスしたらAuthentication plugin 'caching_sha2_password' is not supported エラーが発生した

SQLAlchemyを使ったPython環境でDcoker上に立てたMysql 8.0にアクセスしたらAuthentication plugin 'caching_sha2_password' is not supported エラーが発生した。 これはMySQLのバージョン8.0以降、デフォルトの認証方式がcaching_sha2_passwordに変更され…

Python製のWebフレームワークStreamlitをさわってみた

datatech-jp Casual Talks #1に参加したときに知った、Python製のWebフレームワークStreamlitを触ってみた。 yoshitaku-jp.hatenablog.com streamlit.io github.com Streamlitのサイトを覗くとまずThe fastest way to build and share data appsと書いてあり…

PyArrowでCSVをParquetに変換する

今回は PyArrow を使って CSV を Parquet に変換してみた。 データレイクは生データを溜めることが主目的だが、レイクハウス型のアーキテクチャの流れもあり、データを利用したいサービス側が利用しやすいような整形化されたデータを用意する用途も増えてく…

Pythonでの再帰関数の上限を変更する

Python ではデフォルトで再帰関数の上限が 1000 に設定されている。知らなかった... sys.getrecursionlimit()で現在の上限を確認できる。 今回はサッと確認するのに便利なGoogle Colaboratoryを使う。 import sys print(sys.getrecursionlimit()) たしかに 1…

math.factorialを使って階乗を計算する

背景 Project Euler でmath.factorial()を使う機会が多くなってきたので簡単にまとめる。 math.factorial とは math.factorial()は標準ライブラリの math に含まれていて、階乗が計算できるシンプルな関数になる。 引数には整数が指定でき、整数以外や負の数…

itertoolモジュールのpermutations関数を使って順列を作る

itertoolモジュールのpermutations関数を使うと、簡単に順列を作ることができる。 permutationはなかなか見慣れない英単語だが、「順列、交換、置換、並べ換え」といった意味がある。パッと思い出せるぐらいには覚えておくと良さそう。 今回はpermutations関…

Apache AirflowのDAGファイルの最小設定

Apache Airflowで自作ファイルを作成しようとしたが、設定できる項目多く迷うことが多かった。そこでチュートリアルで用意されているものから最低限必要なものを抜き出してみた。 それが以下になる。 from datetime import timedelta from airflow import DA…

Apache Airflowのチュートリアルを実行してみた

Airbnb 社が開発し、今は Apache ソフトウェア財団のトッププロジェクトとなっている Apache Airflow。 今回は業務の中でワークフロー製品を扱っていることもあり、OSS の Airflow の感触を確かめるべく触ってみた。 準備 Airflow の公式ページでインストー…

【Pandas】GroupBy.first関数の動きを確認する

Pandas のGroupBy.first を使うと、グループの中で一番最初の値を取得できる。 pandas.pydata.org 以前SQLの分析関数であるFIRST_VALUEとの動きを確認した。Pandasでどのように実現していくのか見ていくものになる。 yoshitaku-jp.hatenablog.com 実行環境 …

【Pandas】shift関数の動きを確認する

Pandas のshift を使うと、現在の行の値と前後の行の値を比較できる。 pandas.pydata.org 以前SQLの分析関数であるLAGとLEADの動きを確認したが、Pandasではどのように実現していくのか見ていくものになる。LAG関数とLEAD関数も比較して見てもらえると! yos…

FC Pythonでサッカーのデータ分析を学ぶ -パスマップ編-

「FC Python」 でサッカーのデータ分析を学ぶことができる。 コンテンツは英語しかないが簡単な内容であり、1 つ 1 つのコンテンツも短いので翻訳サイトを使いながらでも進めることはできる。 これが無料で展開されているのはありがたい! 今回はパスの表現…

mypyをVS codeで使うための手順

Python に限らず、プログラミングで開発する際には様々な便利ツールを導入する。 今回は Python の 型の状態を静的にチェックする mypy を VS Code に導入する方法をメモしておく。 mypy を有効にする VS Code で mypy を有効にする。 mypy をインストールす…

【LeetCode】14.longest-common-prefix をPythonで解く

問題はこちら leetcode.com Example 1: Input: strs = ["flower","flow","flight"] Output: "fl" 問題の解説に載っている例を持ってきた。 リストの中に格納されている複数の文字列を、前から 1 文字ずつ取り出していく。 取り出した文字が同じかどうかを判…

【Django】アプリケーションをディレクトリにまとめた時の設定変更箇所

Django でアプリを複数作っていくとルートディレクトリが見づらくなっていく。 . ├── accounts ├── manage.py ├── posts そこで、app ディレクトリを作成し、その中にアプリを入れる形をとってみた。 . ├── app ├── accounts ├── posts ├── manage.py それに…

blackをVS codeで使うための手順

Python に限らず、プログラミングで開発する際には様々な便利ツールを導入する。 今回は Python の フォーマッタ である black を VS Code に導入する方法をメモしておく。 black を有効にする VS Code では autopep8 がデフォルトで有効になっている。 blac…

flake8をVS codeで使うための手順

Python に限らず、プログラミングで開発する際には様々な便利ツールを導入する。 今回は Python の linter である flake8 を VS Code に導入する方法をメモしておく。 Pylint を無効にする VS Code では Pylint がデフォルトで有効になっている。 これをまず…

手を動かすはじめの一歩に最適 / Python実践データ分析100本ノックを読了した

去年からデータ分析に関係する勉強を始めている。理論的なことと実践での動きについて学ぶことができているが、なかなか手を動かすことができていなかった。知識ばかりが先行し頭でっかちになってしまっていた自分は手を動かして学ぶ事ができるものを探して…

Google Colaboratory で Google Drive に読み書きする

Google Colaboratoryで保存してあるファイルからデータを読み取ったり、計算した結果をファイルとして書き込んだりしたいタイミングがあった。今回はGoogle繋がりと無料で使える保存場所としてGoogle Driveを選択し、Google Colaboratoryでマウントしてから…

Google Colaboratoryで Sparkを使うための準備

Python実践データ分析100本ノック | 下山 輝昌, 松田 雄馬, 三木 孝行 |本 | 通販 | Amazonを実践していて、環境構築なしにJupyterNotebookと同じ環境が使えるのでGoogle Colaboratoryを使う機会が増えています。 100本ノックでSparkを使うことはないと思っ…

【Python】str()とrepr()の違い

ずっと疑問に思っていたPythonにおけるstr()とrepr()の違いについてまとめた。 共通していること タイトルに「違い」と書き始めたが、まずはこの2つについて共通していることを簡単に書いておく。 この2つの関数について同じことはオブジェクトの中身を出力…