投稿一覧

16-20件 / 78件

【備忘録】uvによるpython実行環境の構築

uvとは? Pythonの開発環境を快適に整えるための新しいツールです。 これまでPythonでは、パッケージのインストールや環境の切り替えに複数のツール(pip、venv、poetry、pipxなど)を使い分ける必要がありました。uvはそれらの機能をひとつにまとめ、より速く、より簡単に、そして再現性の高い開発環境を作れるようにしてくれます。以下は主な特徴です。 とても速い動作:uvはRustという高速なプログラミング言語で作られており、従来のツールよりもパッケージのインストールや環境構築が圧倒的に速くなります。 環境の自動管理:プロジェクトごとに専用のPython環境を自動で作ってくれるので、他のプロジェクトと混ざる心配がありません。 わかりやすい依存関係の管理:「このプロジェクトには何のライブラリが必要か?」を記録する仕組みがあり、コマンドひとつで環境を再現できます。 ツールの安全な実行:コード整形ツールやテストツールなどを、他の環境に影響を与えずに使うことができます。 キャッシュによる効率化:一度ダウンロードしたライブラリは使い回せるので、複数のプロジェクトでも無駄がありません。 Windows・Mac・Linuxに対応:どのOSでも同じように使えるので、チーム開発にも向いています。 このように、uvはPythonを使った開発をより快適にしてくれるツールです。初心者にも扱いやすく、複雑な設定を減らしてくれるので、「環境構築でつまずきたくない」「もっとスムーズに開発したい」と感じている方には特におすすめです。 uvのインストール Python付属のパッケージ管理ツール、pipによるインストールができます。 copy_allpip install uv Python実行環境構築 Pythonのバージョン、環境名を指定して仮想環境を構築します。 copy_alluv venv -p <Pythonのバージョン> <実行環境名> 以下はPython3.12を利用して.venv312という仮想環境を構築する例です。 copy_alluv venv -p 3.12 .venv312 仮想環境を有効化する 構築した仮想環境で処理の実行やパッケージのインストールをするには、仮想環境を有効化する必要があります。 以下はLinux/Macの例です。 copy_allsource .venv312/bin/activate 続いてWindowsの例です。 copy_all.\.venv312\Scripts\activate 逆に、仮想環境を無効にするときは以下のコマンドです。 copy_alldeactivate パッケージのインストール 以下のコマンドで任意のパッケージがインストールできます。 copy_alluv pip install <パッケージ名> requirements.txtという、インストールするパッケージの(バージョンと)リストが記述されたファイルを元にインストールする場合は、以下のコマンドです。 copy_alluv pip sync requirements.txt

pageview 281

急がば回れ?

現在、投稿予定の記事があります。その中でまとめると記事の構成が複雑になってしまうので、別個一つの記事としてまとめてしまおうということで投稿したのが先程投稿した記事です。肝心の数値計算の記事が全然投稿できていませんが、そのうち投稿しますので・・・。 ところで、先程の記事は大体1時間強で執筆しました。個人的にはもう少し速く書き上げたいところです。一番何に時間がかかっているかというと、数式の入力です。 当サイトはMathJaxというJavaScriptのライブラリを組み込んでLaTeX形式で数式を入力・表示できるようにしてあるのですが、通常のLaTeXと微妙に書き方が違う。そのせいでエラーが頻発し、その修正作業に多くの時間がかかっています。数式の記述がもっと効率よくできればスムーズに投稿ができるはず。記事の投稿よりもいい感じの数式作成ツールを作ることを優先した方がいいのかもしれません。明日さっそく作ってみようかな…。 それでは本日はこの辺で。

pageview 227

【FastAPI覚書】FastAPIを試す

環境構築 Python3.6以上のバージョンで仮想環境を作ります。今回はバージョン3.12で仮想環境を構築することにします。 copy_all# 仮想環境を構築 uv venv -p 3.12 .venv312 # 仮想環境を有効化 .venv312\Script\activate 作成した環境にFastAPIとUvicornをインストールします。Uvicornは高速かつ軽量なASGI(Asynchronous Server Gateway Interface)サーバーであり、Pythonの非同期WebアプリケーションとWebサーバー間の通信を標準化するためのインターフェース仕様を提供します。 copy_alluv pip install fastapi uvicorn これで最低限の環境構築は完了です。 エンドポイントと処理内容の記述 現在いる階層に以下の内容でmain.pyを作成します。 copy_allfrom fastapi import FastAPI # FastAPIのインスタンスを生成する app = FastAPI() @app.get('/') # FastAPIインスタンスにエンドポイントを紐づける def index(): # エンドポイントに対する処理の内容を記述する return {'text': 'hello'} エンドポイントの紐づけと処理を定義をどのファイルのどんな名前のFastAPIインスタンスにしたかはサーバーの起動時に必要になってきます。忘れないように控えておいてください。 サーバーの起動 以下のコマンドでWebアプリケーションを起動します。 copy_alluvicorn main:app --reload --port 8000 main:appはmain.pyのappインスタンスをWebアプリケーションとして起動する、という意味になります。--reloadをつけておくことでコードに変更が加えられてもブラウザ側が自動で変更を反映してくれます。--portではWebサーバーを利用するためのポート番号を指定します。 SwaggetUIによるWebアプリケーションの実行 http://localhost:8000/docsから作成したエンドポイントの一覧が確認できます。確認するだけではなく、定義したエンドポイントに対する処理を実行することも可能です。

pageview 216

【pandas】データの代表値を求める

データの代表値をpandasで求める方法を紹介します。 計算する代表値 以下の代表値を計算します。 平均(相加平均) 中央値 最頻値 分散 標準偏差 四分位数 パーセンタイル 各代表値の説明は以下の通りです。 平均(相加平均) 全てのデータを足してデータの個数で割った値です。 $$ \begin{align} {\bar{x}} = \frac{1}{N}\sum\limits_{i}^{N}{x_{i}} \end{align} $$ 中央値 全てのデータを値の大きさの順に並べたときにちょうど中央に来る値です。データの個数が偶数であるときは中央に来る2つのデータの平均値を中央値とします。 最頻値 全てのデータの中で最も多く出てくる値です。 分散 各データが平均値から平均的にどのくらい離れた値を有しているかを、各データの平均値からの差分の2乗を平均することで評価した値です。 $$ \begin{align} s^{2} = \frac{1}{N}\sum\limits_{i}^{N}{\left(x_{i} - {\bar{x}}\right)^{2}} \end{align} $$ 標準偏差 分散の平方根をとった値です。 四分位数 全てのデータを小さい順に並べたときに、小さい方から全体の4分の1の位置に来るデータの値のことを第一四分位数、4分の2の位置に来るデータの値のことを第二四分位数、4分の3の位置に来るデータの値のことを第三四分位数といいます。第二四分位数は中央値と等しいです。 パーセンタイル 全てのデータを小さい順に並べたときに、小さい方から全体の$n$%の位置に来るデータの値のことを$n$パーセンタイルといいます。25パーセンタイル、50パーセンタイル、75パーセンタイルはそれぞれ第一、第二、第三四分位数と等しいです。 サンプルコード copy_allimport pandas as pd import numpy as np # サンプルデータを用意する data = { 'column': [3, 5, 6, 10, 6, 6, 20, 14, 1, 6] } df = pd.DataFrame(data) """ 代表値の計算 """ # 平均値 mean = df['column'].mean() # 中央値 median = df['column'].median() # 最頻値 mode = df['column'].mode() # 複数ある場合が存在するため、結果がSeriesとなる # 分散 variance = df['column'].var() # 標準偏差 std_dev = df['column'].std() # 四分位数 quartiles = df['column'].quantile([0.25, 0.5, 0.75]) # パーセンタイル(90パーセンタイルの例) percentile_90 = np.percentile(df['column'], 90) # 結果の表示 print(f"平均: {mean}") print(f"中央値: {median}") print(f"最頻値: {mode}") print(f"分散: {variance}") print(f"標準偏差: {std_dev}") print("四分位数:") print(quartiles) print(f"90パーセンタイル: {percentile_90}") 以下が実行結果です。 copy_all平均: 7.7 中央値: 6.0 最頻値: 0 6 Name: column, dtype: int64 分散: 31.34444444444445 標準偏差: 5.598610938835137 四分位数: 0.25 5.25 0.50 6.00 0.75 9.00 Name: column, dtype: float64 90パーセンタイル: 14.599999999999998

pageview 205

個人HP開設!

2ヶ月半ほど当サイトを作り続け、やっと開設することができました!ここまで短かったようで長かった・・・。 日記記事はこれから毎日書いていく予定です。毎日更新がしたいのと、文章を書かないと作文力が落ちていくので・・・もちろん興味がない方は日記以外の記事だけ読んでいただければと思います。 私のことが知りたい方は当サイトの「自己紹介」を読んでください、いればですけど・・・。今後ともよろしくお願いします。 それでは本日はこの辺で。

pageview 200