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

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

GitHub Actions CI/CDを使ってPyPIに自動アップロード

## はじめに

GitHub Actions CI/CDを利用すると、GitHubでのイベント発生をトリガーに、一連のコマンドを自動実行できます。これを活用して、Pythonパッケージをビルドし、PyPIに自動公開するワークフローを構築できます。

こちらの記事もおすすめ

https://hamaruki.com/resolving-errors-in-hugging-face-ci-cd/

https://hamaruki.com/codelumia-automatically-generate-decryption-documentation-for-github-repositories/

## 事前準備

– PyPIのアカウントを作成しておく
– プロジェクトのGitHubリポジトリを用意する

## PyPIへの信頼できる公開の設定

PyPIへの信頼できる公開(Trusted Publishing)を設定するには:

1. PyPIのアカウント設定ページで、新しいプロジェクトを登録
2. 信頼できる公開者(トラステッドパブリッシャー)を設定
– GitHu

元記事を表示

LangChainについて学んだのでみんなにまとめて共有します!

# 0. この記事の導入

ゴールデンウィーク中は新たな技術を中心に身に着けていく所存です。
もう新しい技術を学ぶ毎日が楽しすぎて楽しすぎて。。

会社からはUdemyの受講し放題。そして書籍の購入し放題という環境をいただいたので今回は、下記のUdemyの講座を受講してみました。

https://www.udemy.com/course/langchain-llm/?couponCode=ST2MT43024

この講座では下記のようなことが身に付きます。

– LangChainを使ったLLMアプリ構築を基礎から体験と共に学びます。
– LangChainが持つ様々な機能の使い方を学びます。
– LangChainの様々な応用を学びます。
– LangChainの全体像、そしてその可能性について学びます。

またコースの内容は下記のようなセクションに分かれております。
1. LangChainの概要
1. LangChainの基礎
1. LangChainの様々な機能
1. LangChainの応用
1. ボーナスレクチャー

このブログではコースごとに実践したことや身についたこと

元記事を表示

Streamlitメモ②

# Streamlitによるデータ可視化

## 1. はじめに
データを視覚的に表現することは、情報を理解しやすくするだぬ。この記事では、PythonのStreamlitを使用して、ユーザーの操作に応じて動的にデータを生成し、可視化する方法を紹介するだぬ。

## 2. 必要なライブラリのインストール
まずは、必要なライブラリをインストールするだぬ。以下のコマンドでStreamlit、pandas、numpyをインストールしようだぬ。
“`bash
pip install streamlit pandas numpy
“`

## 3. コード例1
ラインチャートの作成を通じて、基本的なデータ可視化を学ぶだぬ。

#### 1.1 CSVデータを生成するだぬ
ユーザーがボタンを押すことで、以下のコードがCSVファイルを生成するだぬ。データはランダムに生成され、`sample_data.csv`として保存されるだぬ。
“`python
if st.button(‘sample.csvを生成’):
df = pd.DataFrame({
‘date’: p

元記事を表示

Python変数と組込型

## 数値を使う

数値は、プログラムのなかで数量を記録するために利用します。

Pythonにかぎらず、プログラムではたくさんの数値を活用し、処理を行います。

Pythonでは、数値を扱うためのデータ型として、**整数型**と**浮動小数点型**が別に用意されています。

– 整数型

小数点以下の値を含まない、「100」のような数値を扱うために利用します。

– 浮動小数点型

小数点以下の値を含む、「3.14」のような数値を扱うために利用します。

Pythonには、実はもう1つ、**複素数型**という数値型がありますが、特に必要なし

### 数値を使った四則演算

「+」「-」「*(×)」「/(÷)」といった**演算子**を使った四則演算が可能です。

三角関数などを使った、より高度な演算も可能です。

“`python
>>> 1867 – 1603
264
“`

引き算例

累乗を計算するためには「**」を使います。ここでは、2を20乗してみます

“`python
>>> 2 ** 20
1048576
“`

累乗の例

Pyt

元記事を表示

streamlitメモ①

## 1. はじめに
Streamlitは、Pythonを用いたデータアプリケーションを迅速に構築するためのオープンソースフレームワークだぬ。データサイエンティストや開発者が簡単に美しいUIを持つアプリケーションを作成できることが特徴だぬ。この記事では、Streamlitの基本的な使い方と簡単なデモアプリケーションの作成方法を紹介するだぬ。

## 2. Streamlitのインストール
StreamlitはPythonのパッケージとして提供されているだぬ。以下のコマンドを実行してインストールしようだぬ。
“`bash
pip install streamlit
“`

## 3. 最初のStreamlitアプリ
Streamlitでのアプリ開発は非常にシンプルだぬ。まずは、基本的なアプリを作成してみようぬ。以下のコードを`app.py`として保存しようだぬ。
“`python
import streamlit as st

st.title(‘Streamlit 入門’)

st.write(‘これはStreamlitアプリのデモだぬ。’)
“`
保存した後、コマンドライン

元記事を表示

Pythonを使ってスクレイピングしてみる

# 本記事の目的

今までスクレイピングする際はエクセルのWEB URLから開くでテーブル構造の部分を取得してたんですがそれが出来ないサイトあり、Pythonでゴリゴリコード書いてやってみました

今回は食べログの東京都のラーメン屋さんのリストを取得します
たぶん一部変えれば別のサイトでもいけるはず

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137987/8eb77145-ef60-9771-ac49-36a68d1e2d88.png)

# ライブラリ selenium

ブラウザを操作出来る**selenium**を使用
参考情報

インストールコマンド

“`shell
pip install selenium
“`

# スクレイピングコード

## 簡単な処理の解説
変数定義、ライブラリインポート→
対象URL(リストページ)をブラウザで開

元記事を表示

Pythonの動作原理

Pythonの動作原理

Pythonで計算したりprintを使ったりするとこれはどうやって
動いているのかと疑問を持つことがあることだろう

普段何気なく打っているプログラムの動作原理は知らなくても
Pythonは動かすことができると思うが、どのように動いているかを
おおまかにでも知ることによって役立つこともあるだろう

それではPython はどのように動いているのか調べてみようと思う

1.インタプリタ言語とコンパイラ言語

コンピューターは人間が書いたプログラムをそのまま実行するのではなく
必ず機械語に翻訳してから実行する必要がある。
その翻訳方法としてインタプリンタとコンパイルがある

両者の違いは一括ですべてのプログラムを変換するか、一行ずつプログラムを変換するかの違いになっている。

コンパイラ言語の例としてはc言語などが挙げられ
インタプリンタ言語の例としてはPythonやjavaなどが挙げられる

じゃあPythonは一行ずつ機械語に翻訳して実行しているのだなと思うが実際は異なりバイトコードという呼ばれる中間コードを生成し、それを仮想マ

元記事を表示

変数種別データ分析の方針

CSVだったりデータベースだったりエクセルだったりデータセットは色々ありますが、何かを目的に分析をする上で変数の種類は非常に重要になります。
具体的に変数の種類は以下のようになります
| 説明変数 | 目的変数 | 分析方法 |
|:-:|:-:|:-:|
| 質的変数 | 質的変数 | クロス集計表 |
| 質的変数 | 量的変数 | 平均値の差や要約統計量 |
| 量的変数 | 質的変数 | 分類 |
| 量的変数 | 量的変数 | 回帰 |
| 量的変数と時間 | 質的変数 | ハザード分析 |

では実際に変数別の分析の一例を考えてみましょう
# 説明変数が質的変数で目的変数が質的変数
ここでは喫煙の有無と肺癌の有無についてです。データセットは『基礎から学ぶ 楽しい疫学 第4版』にある表から作成しました。
## ライブラリのインポート
今回はクロス集計表を作るだけでなく、有意かどうかも見るためscipyも使います。
“`Python3
import pandas as pd
import scipy.stats as stats
“`
## デ

元記事を表示

Maya でフラットライトでレンダリングする方法

# 概要

Maya で自動で動画を撮影したい。
モーション確認用だからフラットライトでレンダリングしたい。
こんな需要に2パターンの手法でトライしたので、備忘録的に残します。

# 前提

– Maya 2020.x
– Lambert マテリアルが既に接続されている
– フラットライト設定のビュー上で得たい見た目になっている状態

# 目次

– [2つの手法の比較](#2つの手法の比較)
– [surfaceShader を使う方法](#surfaceShader-を使う方法)
– [Playblast を使う方法](#Playblast-を使う方法)
– [余談(Arnold Renderer)](#余談(Arnold-Renderer))

# 2つの手法の比較

2つの手法を試してみましたが、カメラを事前に準備できる場合には Playblast を使う方が楽だと思いました。

| | surfaceShader | Playblast |
| :—: | :— | :— |
| メリット | ・好きなレンダラーが使える | ・シーンのノード構成を汚さない(カ

元記事を表示

N-QueensパズルのQUBOをnealのシミュレーティド・アニーリングで解く

# ポイント
* D-Waveの[neal](https://docs.ocean.dwavesys.com/projects/neal/en/latest/)を使って,シミュレーティド・アニーリングでN-Queenパズルを解きます.

# D-Wave neal
[シミュレーティド・アニーリング](https://ja.wikipedia.org/wiki/%E7%84%BC%E3%81%8D%E3%81%AA%E3%81%BE%E3%81%97%E6%B3%95)は,最適化問題を解くためのすぐれた近似解法です.QUBOをシミュレーティド・アニーリングで解くツールである[neal](https://docs.ocean.dwavesys.com/projects/neal/en/latest/)がD-Waveから提供されています.そのnealを使ってN-Queensパズルを解きます.N-QueensパズルのQUBOへの変換は,[N-QueensパズルのQUBOを高速生成し,Gurobiで解く](https://qiita.com/koji_nakano/items/d873a80dc

元記事を表示

光速の測定の歴史を可視化する – Pythonで学ぶ特殊相対論の入り口

# はじめに

Pythonと物理学や相対論が好きな方へ向けて、特殊相対論の入り口として、光速の測定の歴史について紹介します。この記事では、光速度の歴史的な測定値をPythonを使ってグラフに描画し、それぞれの測定方法の違いとその歴史を理解する手助けをしつつ、相対論を歴史の中で理解できることを目指してみます。

# 光速の測定の歴史

## 測定データの詳細

測定データに含まれる各実験についての簡潔な説明です。

– Ole Rømer (Jupiter’s moons) – 1676年

Ole Rømerは、木星の衛星イオの食の観測を通じて光が有限の速度で伝わることを示しました。彼は、地球と木星との相対的な位置によって、イオの食が予測よりも早くまたは遅く起こることから、光の速度を計算しました。

– James Bradley (Aberration of light) – 1728年

James Bradleyは、「光行差」という現象を発見しました。これは、地球の公転による視線の変化から光の速さを測定する方法です。彼の観測により、光が有限の速さで伝わることがさらに確

元記事を表示

Pythonで最速でlist化する方法

# 結論
`[*iterable]`が(たぶん)最速。
だけどそれ以前に考えるべきことがあるよね。

# はじめに
「Pythonでlistを生成するとき、list()よりも[]の方が早い」ということを知って、これは他オブジェクトのlist化でも同じことが言えるのかと少し気になった。

# disモジュールで確認
適当にバイトコードを確認してみる。
“`python
>>> import dis
>>> dis.dis(lambda: list(iterable))
1 0 RESUME 0
2 LOAD_GLOBAL 1 (NULL + list)
14 LOAD_GLOBAL 2 (iterable)
26 PRECALL 1
30 CALL 1
40 RETURN_

元記事を表示

M1 Mac Book AirからM3 Mac Book Proに移行してPython環境構築した話

## 概要
5年使用したMacBook Airを手放し、MacBook Proに移行しました。Python環境と諸々のモジュールを整備した時の作業ログです。
非情報系ということもあり環境構築にあまり詳しくなく体当たりで色々試したので、結構蛇足な作業、トライアンドエラーが多いかと思いますが、皆さんが環境構築でつまづいたた時のヒントになると思い、記録を残します。

## Macのスペックなど
#### 旧PC
– 機種:MacBook Air 2018
– 容量:256GB
– メモリ:8GB
– プロセッサ:1.6GHzデュアルコアIntel Core i5
#### 新PC
– 機種:MacBook Pro 2023
– 容量:512GB
– メモリ:16GB
– プロセッサ:Apple Silicon M3

プロセッサが違うためこちらの2機種は、Python環境の互換性が無いようです。そのため、移行アシスタントを使って必要なデータを全て新PCに転送した後、Pythonをアンインストールして環境を再構築しました。

## 公式サイトからのダウンロード
[公式サイト](https:

元記事を表示

Pytest 実行時にテストケースを記述している同名のファイルがある場合のエラーへの対応方法

## 概要

Pytest 実行時にテストケースを記述しているファイルが同名の場合に、次のようなエラーが発生する際の対応方法を紹介します。基本的な対応方法としては、同時に実行する必要があるテストケースのファイル名が被らないようにすることです。

“`text
collecting … collected 2 items / 1 error

==================================== ERRORS ====================================
_ ERROR collecting pytest_test/tests/test_cases/folder_2/test_cases__utilities.py _
import file mismatch:
imported module ‘test_cases__utilities’ has this __file__ attribute:
/Workspace/Re

元記事を表示

Wagtaiでviews.pyやurls.pyを使わずにHTMLテンプレートにDBモデルのデータを表示する方法

## きっかけ
wagtailプロジェクトをビルドした際にデフォで作成されるhomeアプリケーションの中の
templatesディレクトリにhome_page.htmlに他のアプリケーションのモデルのデータを
表示したいということがありました。

## 結論:models.pyにコンテキストで渡す
homeアプリケーションのmodels.pyに他のアプリケーションのモデルをimportしてきて
コンテキストでhome_page.htmlにDBのデータを渡すことができます。
前提として、base.pyのINSTALED_APPに他のアプリケーションの登録、プロジェクトアプリのurls.pyに
インクルードする設定は完了していることとします。

shopというアプリケーションがあったと仮定して、そのshopのmodels.pyの内容を
home_page.htmlに表示します。

早速、コンテキストの書き方を紹介します。models.pyにこのように書きます。
“`python:models.py
from django.db import models

from wagtail.m

元記事を表示

Pythonの備忘録 (超初心者) <繰り返し処理>

僕がPythonの使い方をド忘れした時のための備忘録を作成します。

PythonのLoopでは制御構造を使用して、同じコードブロックを繰り返し実行することができる
![スクリーンショット 2024-04-22 12.03.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575336/e19bf248-960a-7689-0026-132c19021b3a.png)

:::note warn
あくまで上記はイメージです
厳密さを必要とする場合は下記LINKを参照してください。
https://www.python.org/
:::
今回はfor loopの使い方の基本を書き下ろしておきます。

for loopを設定

“`python
for i in range (10):
print(i)
“`
:::note info
出力
0
1
2
3
4
5
6
7
8
9
:::
r

元記事を表示

【バージョンマネージャ】asdfが便利すぎる

## はじめに
**asdf**というバージョンマネージャがめちゃくちゃ便利なので紹介します。

https://asdf-vm.com/

**`pyenv`とか`nodenv`とか、言語ごとのバージョンマネージャ入れるの面倒だよ〜〜ん**
って人におすすめです。
asdf単体でさまざまなパッケージのインストール〜バージョン管理が行えます。

asdfの使った感じ

“`sh
$ asdf plugin add python
$ asdf install python latest
$ asdf local python latest
$ python -V
Python 3.12.3

$ asdf install python 3.9.9
$ asdf local python 3.9.9
$ python -V
Python 3.9.9

$ asdf list python
3.12.3
*3.9.9
“`

## 目次
[1. インストール](#1-インストール)
[2. pluginの追加

元記事を表示

LSRF5法を試してみた

# はじめに
製造業で機械学習を使おうとしたときに必ず「解釈性」を求められませんか?機械学習の解釈性についてはいろいろな手法がありますが、重回帰がのように式で表せると非常にうれしいです。そんなものを探している中で、LSRF5法というものを見つけたので実装してみました。

# LSRF5法とは
LSRF5法(Least Squares-assisted Rule Extraction method Version 5)とは、ニューラルネットワークを用いて入出力間の関係をわかりやすく記述するために考えられた手法です。下記は重回帰とLSRF5法の最終的なアウトプットの式です。

重回帰
“`math
y = β_1x_1 + β_2x_2+ ・・・ β_nx_n + ε
“`

LSRF5法
“`math
y = c_1x_{11}^{β_{11}}x_{12}^{β_{12}}・・・x_{1n}^{β_{1n}} + c_2x_{21}^{β_{21}}x_{22}^{β_{22}}・・・x_{2n}^{β_{2n}} + c_nx_{n1}^{β_{n1}}x_{n2}^{β_{n

元記事を表示

Pythonの便利技と注意点:繰り返し編

[目次に戻る](https://qiita.com/yuta-sanjyo/items/416b05f8498df1ed3f49)

# elseとの組み合わせ

“`Py:繰り返しを最後まで完了するとelseを実行する
for_list = list(range(1, 5))
print(for_list)

for i in for_list:
print(i)
else:
print(“finish”)
“`

“`Py:出力結果
[1, 2, 3, 4]
1
2
3
4
finish
“`

“`Py:最後まで完了せずにbreakするとelseの中は実行されない
for_list = list(range(1, 5))
print(for_list)

for i in for_list:
if i == 3:
break
print(i)
else:
print(“finish”)
“`
“`Py:出力結果
[1, 2, 3, 4]
1
2
“`

“`Py:whileもforと同様、繰り返しを最後まで

元記事を表示

ROS環境を使わないPointCloud2型トピックのPCDファイルへの変換

https://qiita.com/katoh1/items/03986c0e81d0b4965c0f

の続き

# やりたいこと

rosbagsを用いてトピックを読み出すことには成功した
IMUなどのデータはそのままCSVにでもすればよいが,LiDAR点群はそうもいかないのでなんとかしたい.
具体的にはPointCloud2型のトピックになっている点群データをPCD形式のファイルで保存できるようにする.

# PointCloud2型の解釈
rosbagsで読んできたPointCloud2型のトピックがこんな感じ
“`
> vars(msg)
{‘header’: std_msgs__msg__Header(stamp=builtin_interfaces__msg__Time(sec=1713513002, nanosec=460340972, __msgtype__=’builtin_interfaces/msg/Time’), frame_id=’lidar’, __msgtype__=’std_msgs/msg/Header’),
‘height’: 1,
‘wid

元記事を表示

OTHERカテゴリの最新記事