2022-01-01から1年間の記事一覧
SQL の GROUP BY を使うとカラムのデータごとに集計できる。 例えば次のようなデータがあり、GROUP BY を使って SQL を実行する。 実行環境はsqlfiddleで、MySQL5.6を使った。 sqlfiddle.com データはテストデータ生成サイトで作った。 https://tm-webtools.…
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…
プロジェクトの中で SQL を使い ETL 処理を書いていたが、個人によって書き方にばらつきがあり、他人の SQL を確認したりメンテナンスするタイミングがとてもつらかった。 SQL もフォーマッタや linter を使って、少しでも作業しやすくしたいと思って探して…
Pandas で JSON の key となる部分がインデックス指向*1となっているJSONを読み込ませたい場合、read_JSON()関数にorient='index'オプションを設定すればうまくいく。 pandas.pydata.org サンプルデータ { "0": { "name": "Nieves Finch", "gender": "male",…
pandas でサイズの大きなファイルを扱うにはどうすればいいか調べたところ、ファイルを読み込む際に chunksize 引数を指定して、分割して読み込む方法があることを知った。 Google clab にあるサンプルファイルを使って動きを確認する。 まずは何も指定せず…
pipenvを触り始めて試行錯誤していたら環境を壊してしまったようで、同名のフォルダを再作成してもうまくいかず、pipenv install throws --system is intended to be used for pre-existing Pipfile installationが発生した。 まずはpipenv --venvで仮想環境…
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: …
Jupyte Notebook でコードの速度を計測する方法にマジックコマンドとして用意されている、timeと timeitを使う方法がある。 この 2 つの存在は知っていたが、 time と timeit で何が違うのか %の数が 1 つのときと 2 つのときで何が違うのか がわからなかっ…
Pandasで欠損値を埋めるための方法をいくつか確認したのでまとめておく。fillna関数を使うと引数に渡した値で、NaNを埋められる。 まずは適当にNaNを含んだデータを生成する。 import numpy as np import pandas as pd df = pd.DataFrame(data=[1,2,4,np.nan…
Pythonでは、よく使われる組み込みコンテナの dict、list、set、tuple に代わる特殊なコンテナがあり、collectionsモジュールにまとまっている。今回はその中にある辞書型のサブクラスであるCounterを使ってリストなどの要素の出現回数を数え、簡単に集計を…
7月より週1でのブログ更新を再開します。と言う宣言です。 集中して取り組みたいことがあり、こっそり5,6月と休んでおりました。 その中で改めてブログに助けられたことがあり、休みつつも「落ち着いたら再開しよう!」という気持ちが高まっておりました。 …
Python で S3 を操作するときに使う、AWS SDK for Python(boto3) を使って MinIO も操作できる。 以前作った環境を利用し、Python から操作できるか確認する。 yoshitaku-jp.hatenablog.com 準備 インストール pip で boto3 をインストールしておく。 pip …
Heroku の dyno リソースを理解できておらず、rails serverでアプリケーションを起動していた。 Heroku は Web サーバとして Puma を推奨しているので、Puma で明示的に起動できるように設定を変更してみる。 puma.io Procfile 設定をせずシンプルに起動させ…
Rails7 になって TailwindCSS が使えるようになったので、導入方法をメモしておく。 rails new rails new をするタイミングで tailwind を導入するには--css tailwindオプションを指定する。 rails new myapp --css tailwind cd myapp このあたりは定型文に…
Docker Compose 環境で作成した Rails アプリケーションを Heroku へアップロードするには Git を使用したデプロイとは別のコマンド実行が必要になる。 例えば Git を使用するときはgit push heroku mainなどでデプロイができたが、Docker Compose 環境は He…
Heroku で Action Cable を使うにはデフォルトの設定から変更する必要がある。 具体的に、初期設定ではconfig/cable.ymlファイルは下記のようになっており、redis を使う設定になっている。Heroku 環境を用意したときにデフォルトで Redis は使用できないの…
iOSでは以前から使うことができたショートカットアプリが、Macでも使うことができるようになった。 現在自分が設定しているものをアイデアとして載せておく。 www.apple.com コミュニケーション系アプリを全部終わらせるショートカット 起動したコミュニケー…
macOS Monterey にして VS Code から git commitとしたらTerminal is dumb but no VISUAL nor EDITOR defined.が発生した。 デフォルト設定が外れてしまった理由がよくわからないけど、再度設定しておく。 設定する際に検索したことと、検索しても欲しい情報…
MinIO とは MinIO は、高性能で S3 互換のオブジェクトストレージを提供します。 Kubernetes にネイティブな MinIO は、以下のような環境で利用できる唯一のオブジェクトストレージスイートです。 すべてのパブリッククラウド、すべての Kubernetes ディスト…
Streamlit について引き続き確認していく。 yoshitaku-jp.hatenablog.com 今回は Streamlit で標準に用意されている simple chart を試す。 紹介されているのは以下の 3 種類になる。 line_chart area_chart bar_chart line_chart 線グラフはst.line_chart関…
SQLAlchemyを使ったPython環境でDcoker上に立てたMysql 8.0にアクセスしたらAuthentication plugin 'caching_sha2_password' is not supported エラーが発生した。 これはMySQLのバージョン8.0以降、デフォルトの認証方式がcaching_sha2_passwordに変更され…
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と書いてあり…
datatech-jpのCasual Talks #1 が開催されるとのことで覗いてみた! datatech-jp.connpass.com 発表内容 syou6162 データ管理に役立つメタデータ reizist 小さく始めるデータ基盤 ohsawa0515 BigQueryのネイティブJSON型がサポートされたので触ってみた udzu…
2021年後半にAzure Data FactoryのFailアクティビティが追加されました。10月頃にプレビューで登場していたのは確認していたのですが、いつのまにかGAされていました。Failアクティビティは名前の通りパイプライン上で意図的にエラーを引き起こしたいときに…
多くの企業がデータ分析基盤を選択するときにGoogle Cloud Platformを選んでいる気がするので、気になって少し触ってみた。 わからないことが多すぎてオープンワールドのゲームに飛び込んだような感覚なので、まずは手軽にCloud Storageでライフサイクルの設…
今回は PyArrow を使って CSV を Parquet に変換してみた。 データレイクは生データを溜めることが主目的だが、レイクハウス型のアーキテクチャの流れもあり、データを利用したいサービス側が利用しやすいような整形化されたデータを用意する用途も増えてく…
Python ではデフォルトで再帰関数の上限が 1000 に設定されている。知らなかった... sys.getrecursionlimit()で現在の上限を確認できる。 今回はサッと確認するのに便利なGoogle Colaboratoryを使う。 import sys print(sys.getrecursionlimit()) たしかに 1…
Azure Data Factoryを使って、新規・変更済みファイルのみをデータレイク間でコピーする。新規・変更済みファイルのみを移動対象とすることで、無駄なデータ移動が発生せず、料金も抑えることができるようになる。 準備 パイプライン パラメーターを2つ用意…
あけましておめでとうございます。今年もよろしくお願いいたします。 2021 年をふりかえり、2022 年の抱負にしたいと思います。 お仕事 2021 年のお仕事は 6 月までと 6 月以降で大きく変わりました。 2 年ほど前に部署を異動してから 2021 年 6 月まではハ…