2023-01-01から1年間の記事一覧

メモ_Ubuntu22にMySQL8をインストール

MySQLのver 8系をUbuntu 22にインストールする際のメモ。 環境: ホストOS : Windows 11 Home VM : Virtaul Box 7.0.6 ゲストOS : Ubutnu 22.04.2 LTS 手順 : 古いMySQLが不要な場合は、以下のようにアンインストール。 sudo apt-get remove --purge mysql-se…

メモ_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マネージャーから、「…

Pythonでcsv形式からParquet形式データに変換

Parquet形式のデータは列ベースのデータフォーマットで、Apacheプロジェクトの一つです。商用サービスだとDatabricksが有名ですね。 Parquet形式の利点は行ベースのデータ形式(csvとか)と比べて、特定の列データだけを扱うクエリが非常に高速になることです…

ChatGPTに、飲酒後のアルコール分解にかかる時間を計算するPythonコードを書いてもらった

ChatGPTに、飲酒後のアルコール分解にかかる時間を計算するPythonコードを書いてもらいました。体重と飲んだお酒の種類、量を標準入力して、計算結果を表示するという単純なものです。 指示文(プロンプト): 飲酒後にアルコールが分解されるまでの時間を概算…

テキストファイルから、タグの名前だけを取り出すPythonコード

htmlやxmlなどのテキストファイルから、タグの名前だけを取り出すPythonコードです。例えば、<tagname>~</tagname>のtagnameだけを取り出したいときに使用します。 取り出したい情報は正規表現で探しているので、正規表現を変えれば、ほかの用途でも使えます。 コード: import …

ChatGPT_APIで任意のテキストを短くしたり長くするPythonコード

ChatGPTのAPIを利用して、任意のテキストを短くしたり長くするPythonコードです。 APIに投げるprompt部分をもう少し詳細に指定するようにすれば、どのくらいの短さ(長さ)にするかも制御できるかもしれません。 import openai def convert_to_short(prompt): …

ChatGPT_APIで任意のテキストを敬体・常体変換させるためのPythonコード

ChatGPTに敬体・常体を変換するPythonコードを書いてもらいました。 最初に提示されたのはシンプルな置換ルールを定義するもので、実用には堪えません。 敬体・常体変換・統一を高い精度で行う良いライブラリも見当たらず、現時点では自力で機械学習などで厳…

ChatGPTに、ライプニッツ級数で円周率を計算しnumbaの有無を比較するPythonと、比較用にcでのコードを書いてもらった

ChatGPTに、numbaの有り無しでの処理速度を比較するため、ライプニッツ級数で円周率を計算するPythonとcのコードを書いてもらいました。 指示文(プロンプト): ライプニッツ級数を用いて、円周率を計算するPythonコードを提示してください。和の上限を10^9と…

ChatGPTにNumpyを使うのと使わないので速度比較するPythonコードを書いてもらった

ChatGPTにNumpyを使う場合と使わない場合の計算速度を比較するPythonコードを書いてもらいました。 指示文(プロンプト): numpy を使った計算と、使わない場合の計算速度を比較するPythonコードを教えてください。 回答1: numpy を使った計算と、使わない場合…

ChatGPTにジュリア集合を描画するPythonコードを書いてもらった

ChatGPTにジュリア集合を描画するPythonコードを書いてもらいました。 指示文(プロンプト): ジュリア集合を描画するPythonプログラムを提示してください。できるだけ高速に描画するコードにしてください。 回答: Pythonプログラムを提示します。 このプログ…

ChatGPTにQRコードを生成するPythonコードを書いてもらった

ChatGPTに任意の文字列(URLとか)を埋め込んだQRコードを生成するPythonコードを書いてもらいました。 指示文(プロンプト): 指定した文字列からQRコード画像を生成するPythonのコードを書いてください。データと生成するQRコードの画像名は、標準入力から引数…

ChatGPTにマルチスレッドとマルチプロセスを比較するPythonコードを書いてもらった

2000, 2000の行列に対して、sinとcosの関数を1000回繰り返し適用するというCPUバウンドなタスクについて、マルチスレッドとマルチプロセスでどの程度の差が出るかを比較するPythonコードをChatGPTに書いてもらいました。 指示文(プロンプト): 2000, 2000の行…

ChatGPTにシングルプロセスとマルチプロセスの処理速度を比較するPythonコードを書いてもらった

Python3系では、multiprocessingモジュールを利用して、簡単にマルチプロセスプログラミングを行うことができます。そこで、ChatGPTにシングルプロセスとマルチプロセスの処理速度を比較するPythonコードを書いてもらいました。 指示文(プロンプト): マルチ…

ChatGPTに、Gmailから一斉メール配信するPythonコードを書いてもらった

ChatGPTに、Gmailから一斉メール配信するPythonコードを書いてもらいました。 日常的に一斉メールやメルマガを運用している場合は専用ソフトや商用サービスを契約・利用していると思いますが、突発的に一斉メールを配信したい場合、手作業で一通づつ送るとか…

ChatGPTにローカルストレージ速度を簡易計測するPythonコードを書いてもらった

ChatGPTにローカルストレージ速度を簡易計測するPythonコードを書いてもらいました。レンタルサーバとか仮想環境で、ストレージの読み/書きがどの程度のスピードかをざっくり把握するためです。 指示文(プロンプト): pythonでストレージ速度を計測するコード…

ChatGPTに、gmailのメールボックスから最新100件のタイトルを取得して表示するPythonコードを書いてもらった

業務利用しているGmailのメールボックスをプログラムから操作したい場合があると思います。そこで、サンプルとして、ChatGPTにGmailのメールボックスから最新100件のタイトルを取得して表示するPythonコードを書いてもらいました。 必要となるモジュール…