Python関連のことを調べてみた

Python関連のことを調べてみた

【2023年版】Pythonのコミット数の時系列グラフ

2023年のPythonリポジトリのコミット数を Author ごとの時系列グラフにしてみました。

2023年のPythonリポジトリの総コミット数は4458回でした。この数は、主要なプログラミング言語の中だと PHP より大きくて Java より小さいです。

上位5名で合計1490コミット、全体の33%を占めています。

![python-commits.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33011/5111100a-88b2-9caf-5a56-487e7211b352.gif)

– 集計したリポジトリは [python/cpython – GitHub](https://github.com/python/cpython) の main ブランチです
– グラフデータには `git log -n 10000000 –date short –pretty=format:”%ad%x09%h%x09%an”` を使いました
– 2023年の総コミット数は `egrep ‘^202

元記事を表示

Pythonのtry-exceptについて知りました。感動。

# try-exceptとは?
pythonにおいて、エラー(例外)が発生する可能性のあるコードブロックを try ブロックで囲み、例外が発生した場合に except ブロック内のコードを実行するもの。

“`
try:
何かしらのエラーが発生しそうな処理
except エラー名:
そのエラー名が発生したときに実行する処理
“`
↑のように書く。

## 知った経緯
現在、スクレイピングを学んでいる最中であり、その際に、httpリクエストが失敗したときの処理、どうしよう。。と悩んでいる時に、このtry-exceptを知りました。本来だったら、考えうるエラーに応じて、if文を書くしかないと思っていましたが、もっと簡潔に解決できました!
~実際のコード~
“`
try:
html = requests.get(“URL”)
html.raise_for_status()
except requests.RequestException as e:
print(f”Webページの取得に失敗しました:{e}”)
return None
`

元記事を表示

文脈を考慮した時間表現の正規化(ja-timex)

# はじめに
文中の時間表現を文脈を考慮して正規化したいです。例えば「2021年4月1日の1日前の午後10時」を「2021-3-31 22:00:00」みたいなことをしたり、基準日を2024-12-24 15:15:15としたとき、「明日の午前7時」を「2024-12-25 07:00:00」に変換したり、みたいなことをしたいです。

応用先としては、対話形式でのスケジュール設定などがあります。

# ja-timex
ja-timexという、日本語の時間表現を解析するライブラリが使えそうです。

試してみます。

“`
pip install ja-timex
“`

“`Python
from ja_timex import TimexParser
import pendulum
from datetime import datetime
now = datetime.now()
timexes = TimexParser(reference=pendulum.now()).parse(“2024年3月11日の3日前の明日の午後七時”)

for timex in timex

元記事を表示

Google Colaboratory入門

今回は、Pythonプログラムの作成や動作確認に便利なGoogle Colaboratoryについて紹介します。
# Google Colaboratoryとは?
Google Colaboratory(通称 Google Colab)は、Googleが提供する無料のクラウドベースのPythonプログラミング環境で、特にデータサイエンス・AIの分野で広く利用されています。
インストールや設定が不要でPythonコードを実行できるため、初心者からプロフェッショナルまで幅広い層に支持されています。

![image-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676048/57b7fb0e-4f8e-b326-41ca-4c64ccd2f519.png)

# Google Colabの特徴
## 無料で利用可能
Google Colabは基本的に無料で利用できます。無料プランでも基本的にGPUを利用できますが、時間帯によっては有料プランのユーザが優先され、利用できない場合があります。
## ク

元記事を表示

neo4j+GraphRAGで実行できるけどFailed to write data to connection…ってエラーが出る

# 概要
neo4jを使ってGraphRAGを実装している時のお話です。
チュートリアルに従って以下のようなコードを書くと思います。

“` python:index.py
graph = Neo4jGraph(
url=neo4j_uri,
username=neo4j_username,
password=neo4j_password
)

vector_index = Neo4jVector.from_existing_graph(
OpenAIEmbeddings(),
search_type=”hybrid”,
node_label=”Document”,
text_node_properties=[“text”],
embedding_node_property=”embedding”
)
llm = ChatOpenAI(temperature=0, model_name=”gpt-4o-mini-2024-07-18″)

# ~~~省略~~~

if __name__ == “__main__”:

元記事を表示

matplotlibのベクトル場描画関数quiverのパラメータ調節法

# はじめに

Pythonのmatplotlibにベクトル場を描画するquiver (クイバー) という関数があります。既定値のまま使う分には問題ありませんが、細かいパラメータ調節をしようとすると非常にやりづらいです。ヘルプを読めばちゃんと書いてありますが、理解するまでに時間がかかります。

# どうして難しいのか?

* 各用語が何を指すかが分からない
* `scale` が小さいほど矢印が長く、大きいほど短くなる
* `width` の既定の単位がピクセルでない (適当に1とかに設定すると大惨事になる)
* `width` を変えると、矢印の線の太さだけでなく矢印の先端部分も連動して変化する
* `headwidth`, `headlength`, `headaxislength` は `width` に対する倍率で指定する
* `headaxislength` が `headlength` と連動していない

# 解決法

* 各用語の意味は以下の図を参考にする
![tmp2.png](https://qiita-image-store.s3.ap-northeast-1.a

元記事を表示

localhostでデバッグしてる開発中のサイトをスマホでも確認したい。

開発中のサイトをスマホで開こうとする時、調べるとpcのipアドレスを入力する方法がたくさん出てきたが普通にめんどくさかった。
ngrokを使ってそこらへんを省きたい。

↓からngrokをインストール。最初はサインアップしないといけない。

https://download.ngrok.com/mac-os?tab=install

フレームワークなど使ってない場合はローカルサーバーを任意のポートでたてる。別にpython以外でも構わない。

“`bash
python -m http.server xxx
“`

ngrokの`xxx`にポート番号を指定する。

“` bash
ngrok http xxx
“`

↓のように`https://xxxx-xxx-xx-xxx-xxx.ngrok-free.app`が出てくる。このアドレスでスマホでも開発中のサイトにアクセスできる。

“`bash
Forwarding https://xxxx-xxx-xx-xxx-xxx.ngrok-free.app -> http://localhost:3000
“`

元記事を表示

Phomemo T02をMacから使ってみる

## はじめに
### 偉大なる先駆者様

https://qiita.com/ryo-endo/items/2000009d0783b34b7228

この記事は上記の記事をT02に対応させたときの備忘録です。
### 筆者の環境
ハードウェア : Macbook Air M2(2023)
OS : Sonoma 14.6.1
RAM : 8GB
エディタ : VSCode
Pythonのバージョン : 3.13.0 (anaconda)
にて動作することを確認。

### 結論
上記の記事からリンクされている[こちらのGithubのコード](https://github.com/ryo-endo/phomemo-printer)にある「PhomemoM02Pro_constants.py」内を、
“`diff_python3
– DEVICE_NAME = ‘M02 Pro’
+ DEVICE_NAME = ‘T02’
“`
とするだけで動きました。

:::note warn
注意点
main.pyをそのまま実行するとテキストが’Hello Phomemo **M02Pro*

元記事を表示

BitNet-b1.58で作られたLlama8Bが遂に登場したので使ってみた!!!

皆さんこんにちは!@2626です。弊社ブログの移行作業中ですが、今回初めて新記事を書いてみました!

記念すべき第一回目は、**BitNet** について紹介したいと思います!BitNet は個人的に注目している、LLM を少ないメモリで動かすための仕組みなのですが、これまで実用的な学習済みモデルが無く、目立つこともありませんでした。しかし約2週間前、**Microsoft から BitNet を用いた Llama8B が公開**されました!

https://github.com/microsoft/BitNet

しかもQiitaを探してみても、あまり書かれている記事がないということで、今回はこの BitNet について紹介していきます!

# BitNetとは?
[論文](https://arxiv.org/abs/2310.11453)のAbstractには下記のように書かれています。
> 大規模な言語モデルのサイズが大きくなるにつれ、その展開に課題が生じ、エネルギー消費量の多さによる環境への影響が懸念されている。本研究では、大規模言語モデル用に設計されたスケーラブルで安定し

元記事を表示

Python Web UIフレームワーク Streamlitの基本

PythonのWeb UIフレームワーク「Streamlit」で
良さそうな記事があったので残しておく。

https://gihyo.jp/article/2024/10/monthly-python-2410

元記事を表示

【初心者向け】Atmoph Window を自作してみた

# ✍️ はじめに
**Raspberry Pi**を活用して、自作の「Atmoph Window」風のデバイスを作成しました。ソフトは**python**で動いております(初心者にもおすすめ🔰)。

代替テキスト
代替テキスト
代替テキスト
元記事を表示

Pythonの改良型の新しい言語の提案

pythonは、ステートメントと式が分かれているので、eval関数で命令を処理できない。
命令も全て式とすれば、eval関数で処理できる美しい言語ができる。
LISPみたいになるが、LISPの平易な記述版と思ってくれればよいです。
エラー処理、Noneの処理もきれいにして。
LISPはストリング処理がちょっと弱いような気がします。LISPは完全です。
式だから、書くフォーマットは自由で。
これが完全なプログラミング言語の一つのモデルの提案です。

これでできるらしいけど、手続き型の記述はできないし、pythonでは余計なものがついているので。これは、ストリング処理はどうなるのだろうか。

https://qiita.com/t-sin/items/662b055447ec87476384

すみません、偉そうなこと言って。

元記事を表示

Pythonを使ったXRISM/ResolveのDS9 region ファイルの生成と可視化

# この記事の概要

今回のPythonスクリプトでは、XRISM/Resolveで利用される**DS9 region file **を生成するPythonプログラムを解説します。そのついでに、python初学者向けに、matplotlibを用いた可視化や、argparseの使い方についても説明します。

1. **XRISM/Resolveのregionファイル**とは何か
2. DS9 region file の自動生成方法
3. `matplotlib`を使った可視化方法
4. `argparse`を使ったコマンドライン引数処理の実装例

コードはこちらから取得できます。

https://github.com/yamadasuzaku/rksysoft/blob/main/resolve/util/resolve_util_gen_regionfile.py

### 1. 必要な情報

XRISM衛星Resolve検出器は、6×6画素の極低温半導体マイクロカロリメータです。

https://xrism.isas.jaxa.jp/research/

元記事を表示

【Pythonでゲーム開発】ドット専用ゲームエンジン「Pyxel」のすごさ

## 自己紹介
 ただの情報系大学生です。Pythonでゲームを作るのが好きで、最初はTkinterを使って色々やってました。しかし、ゲームエンジンの存在を知ってからはなんて非効率なことをと嘆く日々です。
 私と同じようにゲームを作りたいと思ったPythonistたちは絶対に同じ轍を踏まないでください。

## Pythonでドット絵のゲームが作りたい!!!
 Pythonでプログラミングをしていて、ゲームが作りたくなることはありませんか?ゲーム好きでプログラミングもするという方なら一度は思うことでしょう。しかし、知識もない3Dゲームは敷居が高い!ゲーム作りといえばUnityだけど、C#はわからん!
 これ、きっとあるあるだと思います(そうじゃなかったらごめんなさい)。そうなると、選択肢は絞られてきますよね。気軽に進める道はやはりドット絵のゲームを作ることです。

## 使うべきGUIライブラリは?
 さて、Pythonでドット絵のゲームを作るとなると、重要なのは何のライブラリを使ってGUIを作るかというところになります。一番簡素かつ有名なのはTkinterですが、あれははっきり言って

元記事を表示

Python 3.13がリリース!AIと機械学習に変革を齎す!

みなさんこんにちは!私は株式会社ulusageの、技術ブログ生成AIです!これからなるべく鮮度の高い情報や、ためになるようなTipsを展開していきます。よろしくお願いします!(AIによる自動記事生成を行なっています。システムフローについてなど、この仕組みに興味あれば、要望が一定あり次第、別途記事を書きます!)

# Python 3.13がAIと機械学習の世界を変える理由

Python 3.13がついにリリースされ、数多くの重要なアップデートが盛り込まれています。機械学習、データサイエンス、そしてAIの分野で最も広く使用されているプログラミング言語であるPythonは、これまで以上にこれらの分野のニーズに応えるべく進化を遂げています。最新のリリースであるPython 3.13は、パフォーマンスと生産性を大幅に向上させるいくつかの革新的な機能を提供し、機械学習やAIプロジェクトに取り組む開発者にとって重要な節目となっています。

Pythonが機械学習とAIで主導的な地位を占めているのは、そのシンプルさ、豊富なライブラリ、そして大規模なコミュニティの存在によるものです。しかし、AIの

元記事を表示

Python Streamlit Webアプリ開発

# 目次
1.開発方法
2.アプリ概要
3.開発時の工夫
4.ソースコード

# 1.開発方法
Youtubeにて、以下の動画を参考にしました。

Pythonライブラリ、Streamlitを用いて様々なコマンドを紹介しています。
この動画での解説を参考に、オリジナルでWebアプリを開発しました。

# 2.アプリ概要
起床時間の記録アプリです。
ボタンを押すとその時刻が記録され、日々の起床時間を表で閲覧できる仕組みです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827197/5ebc3cb1-62e2-1fe7-63bc-fd0d3f25633b.png)

「起床時間を選択してください」という文字の下部に現在時刻が自動で表示され、
「記録する」ボタンを押下すると、ページ下部の表にその日の日付、時刻が記録されます。

プルダウンから月を選択することで、月ごとの記録を閲覧できます

元記事を表示

EventBridgeからLambdaに起動日時を連携する

# はじめに
EventBridgeからLambdaを起動する場合、EventBridge⇒Lambdaに日時情報を連携できないか 気になったので実際にリソースを作って調べてみました。

# 結論
EventBridgeから起動されたLambdaでは、`event` パラメータにEventBridgeのイベントの起動時刻(time)が含まれるためこれを利用できそうです。

“`:event
{
~~~
‘time’: ‘2024-10-29T15:30:00Z’,
~~~
}
“`

# ゴール
EventBridgeから起動したLambdaで、イベントの起動時刻を取得できることを確認します。

# Lambdaの作成

簡単なLambdaを準備します。

“`python:lambda_function.py
def lambda_handler(event, context):
event_time = event[‘time’]
print(event_time)
“`

# EventBrige

下記の手順でEventBrig

元記事を表示

YOLOv8モデルの重みを編集して検出結果の変化を調べる

## モチベーション
YOLOv8(detection)のスコアに繋がる重みを書き換えて検出結果がどう変化するかを調べる。

## YOLOv8の構造
Detectモジュール内の Cls.Loss がクラスごとのスコアに関係していると推測

https://private-user-images.githubusercontent.com/27466624/239739723-57391d0f-1848-4388-9f30-88c2fb79233f.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzAwNDEyNjMsIm5iZiI6MTczMDA0MDk2MywicGF0aCI6Ii8yNzQ2NjYyNC8yMzk3Mzk3MjMtNTczOTFkMGYtMTg0OC00Mzg4LTlmMzAtODhjMmZiNzkyMzNmLmpwZz9Y

元記事を表示

valueを複数持つ辞書を、より便利に作りたい

## 目次
– [はじめに](#はじめに)
– [namedtupleとは](#namedtupleとは)
– [辞書とnamedtupleを組み合わせる](#辞書とnamedtupleを組み合わせる)
– [まとめ](#まとめ)
– [最後に](#最後に)

## はじめに
 Pythonでプログラムを書いていて、辞書に複数のvalueを持たせたい場面があると思います。この際、“`key:[value1, value2, …]“`とすることで解決可能ですが、リストの要素の順番を覚えておかなければなりません。これが少し不便に感じたので、リストの代わりに“`namedtuple“`を用いる方法をここで提案してみます。

## namedtupleとは
 “`namedtuple“`とは通常のタプルの機能に加えて、インデックス以外に要素の名前でアクセスが可能なタプルです。“`collections.namedtuple“`と“`typing.NamedTuple“`の2種類があります。どちらも標準ライブラリですが、“`typing“`モジュールの方は型に厳密とい

元記事を表示

CGI (Common Gateway Interface) について

# CGI (Common Gateway Interface) について

## 概要

CGI(Common Gateway Interface)は、Webサーバーと外部プログラムを接続する仕組みで、ユーザーからのリクエストに応じて動的なコンテンツを生成するために使用されます。CGIプログラムは、PerlやPython、C、PHPなどの多くのプログラミング言語で書くことができ、フォーム入力などを処理し結果をWebページに反映させることが可能です。

## CGIの仕組み

CGIは以下の流れで動作します:

1. **リクエストの受け取り**:ユーザーがブラウザでリクエストを送信。
2. **WebサーバーからCGIプログラムへの呼び出し**:WebサーバーがCGIプログラムを実行。
3. **CGIプログラムによる処理**:リクエスト内容に基づいてデータの処理や計算を行う。
4. **レスポンスの返却**:CGIプログラムが結果をHTML形式で生成し、Webサーバーを介してユーザーに返す。

## CGIプログラムの例

### Perlスクリプト例

次の例では、Perlスクリ

元記事を表示

OTHERカテゴリの最新記事