2023-06-01から1ヶ月間の記事一覧

メモ_Pythonで期待通りに四捨五入できない場合

pythonでround関数で小数点以下の数値を 四捨五入しようとすると、正確に計算されないケースがあります。 Round関数で四捨五入がうまくいかないケースを実際に試してみた結果: 下記の結果は、たしかに2.68ではなく、2.67になります。 f = 2.675 print(round(…

ChatGPTに、任意の桁数の円周率を計算するPythonコードを書いてもらった

ChatGPTに、任意の桁数の円周率を計算するPythonコードを書いてもらいました。 mpmathという高精度演算ライブラリを使って、非常にシンプルなコードになりました。 コード: import mpmath # 計算する桁数を指定 mpmath.mp.dps = 10000000 # 円周率を計算 pi …

メモ_正規表現の処理速度_簡単なベンチマーク_Pythonとc

ふと気になったので、正規表現の処理速度を簡単にベンチマークしてみました。 正規表現パターンr'\d{3}-\d{3}-\d{3}-\d{3}-\d{3}-\d{3}'と文字列'123-456-789-123-456-789'のマッチングを1000万回おこなって、その実行時間を計測して表示してます。 以下がコ…

ChatGPTにsocket通信のサンプルpythonコードを書いてもらった

ChatGPTにsocket通信のサンプルpythonコードを書いてもらいました。 指示文(プロンプト): UDPでsoket通信を行うpythonのコードを書いてください。サーバ側はsocket_server.py 、クライアント側はsocket_client.py としてください。クライアントからの通信を…

メモ_saltとStretchingで処置したパスワードに対するHash処理の速度

パスワードなどの重要な情報をHash化して扱うのは、オープン系システム構築時の基本の一つですが、最近推奨されているハッシュ化として、saltとstretchingという方法があります。 salt は ハッシュ化する文字列に、さらに別の文字列を加えて処理することで解…

メモ_SQLiteをインメモリもしくはRAMディスクで高速化

自明なことですが、大きなサイズのSQLiteを扱う際、処理時間の大半はデータベースファイルの読み込みになるので、データベースファイルを先に読み込ませてインメモリのDBに対してSQL文を実行すれば、高速に処理されます。 もしくは、RAMディスクにデータベー…

メモ_できるだけメモリを節約しながらGB超のcsvファイルをSQLiteに読み込ませる

手元マシンのVM上のUbuntuに10GBのメモリを割り当てた環境での話ですが、2GB超のcsvファイルをpandasで読み込ませて、そこから更にSQLiteにも展開とかしていたらメモリ不足で落ちてしまったので、できるだけメモリを節約しながらSQLiteに読み込ませるコード…

メモ_pipのlistをpandasで奇麗に表示

ちょっとしたtipsというか盲点というか、pandasを使ってpipのlistを奇麗に表示する方法。Jupyter notebookとかで使うと便利。 コード out = !pip list import pandas as pd # データフレーム表示オプション設定 pd.set_option('display.max_rows', None) # …

メモ_pandasのデータサイズと必要なメモリ容量、メモリサイズの削減について

pandasで特に何も考えずにデータを入れて展開していると、結構なメモリを消費します。 pandasのデータサイズと必要なメモリ容量ですが、pandasのデータフレームのサイズは、行数と列数によって決まり、データフレームの各列(カラム)のデータ型によって必要な…

メモ_カラムのずれたcsvをpandasに読み込んで、ズレを訂正して再保存してデータ全体をマージ

国土地理院-全国地名データ(位置参照情報)からダウンロードしてきたデータのうち、福岡県のcsvだけカラムがずれていてので、訂正して全国のデータとマージしてpandasに展開するまでの一連の作業メモ。 1. 福岡県のcsvデータのカラムずれを訂正 いったんcsv…

メモ_国土地理院-全国地名データ(位置参照情報)のcsvデータ(cp932で文字化けあり)をnkfでutf-8に変換してpandasに取り込むまで

日本の住所表記がヤバすぎる、という記事から 「日本の住所のヤバさ」知れ渡る 正規化・名寄せ問題、Twitterトレンドに - ITmedia NEWS こちらの記事も見ていて 日本の住所の正規化に本気で取り組んでみたら大変すぎて鼻血が出た。 - Qiita ちょっと興味がわ…

メモ_OpenAIのAPI利用料金について

Open AIのAPIが面白くて、ついつい、いろいろ試して遊んでしまいますが、割とすぐに無料枠を使い切ってしまいがちです。 OpenAIのAPIの無料枠は、2023年3月からは、3か月間有効な5ドル分の無料クレジットが付与されるそうです。以前は確か15ドルでした。 無…

pandasのmean関数を利用する処理と、利用しない場合の速度比較

データ分析では定番のPython/Pandasですが、いろいろ便利な関数が最初から用意されています。以下はその一例。 sum(): 各列の合計値を計算します。 mean(): 各列の平均値を計算します。 median(): 各列の中央値を計算します。 max(): 各列の最大値を計算しま…

csvをpandasに読み込んでデータフレームを保存して再利用するコード一連

csvからデータをpandasに読み込む csvの一行目にカラム名を定義していない場合、別途、カラム名を定義したcsvを用意する。 import pandas as pd # カラム定義用のCSVファイルパス column_definition_file = "column_definition.csv" # カラム定義のCSVファイ…

メモ_AMD系マシンに入れたvirtualboxのUbuntuDesktopが不安定の際の設定

Virtualbox にインストールしているUbuntuDesktopが妙に不安定だったので以下の設定変更で解消したのでメモ。 環境 CPU : Ryzen7 5825U MEM : 16GB OS: WIndwos11 Home VM : Virtual Box Version 7.0.6 / Ubuntu 22 LTS 設定 VirtualBoxマネージャーから、「…