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

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

Pythonで地球儀をまわして「それ、、、ココ!」ってやりたい

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/9735893b-5924-b81a-a9f1-276221211302.png)

## まずはマダガスカルを見つけてみましょう

💡必要なことは以下の通り

:::note info
1. マダガスカルの緯度経度を取得する
1. 地球儀を用意してクルクルまわす
1. マダガスカルで止める
:::

## Plotlyを使って実装
完成はこんな感じです。

![無題の動画.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/9e370a9b-f5c3-b377-0d59-dec8ad6a8285.gif)

地球儀を回してマダガスカルの場所でストップさせています。

### ⚓マダガスカルの緯度経度
Wikipediaなどで調べましょう。
**geojson**などのデータセッ

元記事を表示

Pythonで文字列を復号化、暗号化するコードを作ってみた

今回は、Pythonを使い、アルファベットの文字列を暗号化したり、逆に復号化したりするコードを作りました。

Encodeは、データを一定の規則に基づいて変換することです。
日本語では、符号化のことです。
Decodeは、符号化されたデータを元の形に戻すことです。
日本語では、復号化のことです。

### 作成したコード

“`
alphabet = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’, ‘o’,
‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’, ‘z’, ‘a’, ‘b’, ‘c’, ‘d’,
‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’,
‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’, ‘z’]
direction = input(“Ty

元記事を表示

Pythonライブラリのパスを取得してプログラムで使う

# Introduction
SudachiとかMecabとかで使う辞書を指定するときに、毎回ライブラリのパスコマンドで調べてとってくるの面倒すぎない…?
と思ったのでそもそもパス指定なんてライブラリの場所さえわかればコードで完結するよねと言うお話。
ライブラリのパスを何らかの理由で指定しなきゃいけないときに便利。

# 結論
“`python:get_libraryPath.py
import sudachipy

sudachipy.__path__
# [‘/Users/(省略)/lib/python3.11/site-packages/sudachipy’]
# pathだけ欲しい時は、sudachipy.__path__[0]

sudachipy.__name__
# /Users/(省略)/lib/python3.11/site-packages/sudachipy/__init__.py
“`

多分任意のライブラリでできるが、osとかcsvとかはos.pyとかだったみたいで、__path__だと取れなかった。標準で入れてるやつがダメなのかと思ったけどtkinter

元記事を表示

ChEMBLを用いてローカル化合物DBを爆速構築する

# はじめに
AI創薬を始めるためには、まずデータを用意しなくてはなりません。本記事では、オープンデータベースであるChEMBLを用いて、ローカルに化合物DBを構築する方法を紹介します。

# ChEMBLとは
ChEMBLは医薬品および開発化合物のオープンデータベースで、薬物開発や化学研究において非常に重要なツールです。

ChEMBLの概要は下記の通り。

**運営元**
* 欧州分子生物学研究所(EMBL)のバイオインフォマティクス研究所(EBI)

**保存されているデータ**
* 医薬品および開発化合物の薬物動態、薬活性等のデータ

**保守運用**
* 主にメディシナルケミストリ関連のジャーナルから手動で抽出
* 抽出後に専門家によるチェック
* 3, 4か月に一度データ更新がある

**費用**
* 無料で検索、ダウンロードが可能

**その他**
* APIでもデータ取得可能
https://chembl.gitbook.io/chembl-interface-documentation/web-services/chembl-data-web-services

元記事を表示

勤務時間に応じてその日の賃金を表示するCLIアプリ

# はじめに
暇だったので,その日の勤務時間に応じて今日何円稼いでいるかをリアルタイムで表示するようなCLIアプリを書きました.

バイト中のモチベになるかなと思って作っただけなので,税金などは考慮せず,正確さも適当です.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609800/bf029923-5483-4104-2c84-2ebb5d6156b4.png)

# アイデア・気づいたこと

– 小さい数字を単位にする方が楽しい

最初は1秒ごとに稼いだ金額を更新していましたが,あまり楽しくない.
1円稼ぐごとに更新しても,時給が十分高ければ楽しいかもしれませんが,バイト程度の賃金だとそこまで楽しくない.

0.01円稼ぐごとに表示し,少数第二位の数字が荒ぶっているくらいが見ていて楽しいです.

– 一日の途中でアプリを起動しても,その時点でその日に稼いだ金額がわかるようにしたほうが良い

PC起動時にアプリも勝手に起動するようにするのを前提として作成しましたが,やはり間違ってウィ

元記事を表示

FAQがAIの力でパワーアップ!誰でもナレッジ情報を自由自在に活用できる仕組みをAmazon Bedrock(RAG)+ LangChain + GASで構築 ~完成品編~

# はじめに
こんにちは!CBcloudのRyoです:grinning:

私の所属するCBcloudでは、物流ラストワンマイルの配送プラットフォーム「ピックゴー」を運用しており、荷物を送りたい方、荷物を届けてくれる方を24時間365日、サービスを通してつなげています!

https://pickgo.town/?utm_source=google&utm_medium=cpc&utm_campaign=brand&utm_id=749340152&utm_term=pickgo&af_pid=google&af_c=brand&gad_source=1&gclid=CjwKCAjwyJqzBhBaEiwAWDRJVBRiSmk6aRJqjngMWLKe1uuwT-EGw6Ktv9Vu7EG8o7545efU0FJaeBoCKuMQAvD_BwE

弊社では24時間365日サービスをつなげていると同時に、もちろん荷物を送りたい方、荷物を届けてくれる方をサポートするサポートチームが存在します

今回はそのサポートチームに新たにAIの力を導入…だけではなく**AIが使う知識をサポートチ

元記事を表示

対象エリアに含まれるLinestringを抽出する

# はじめに
はじめまして!データサイエンティストの渡邊です。株式会社GEOTRA(@GEOTRA )にてGIS(Geographic Information System:地理情報システム)データを用いた分析を行っています。

本記事ではgeopandasで対象の`POLYGON`に含まれる`LINESTRING`を抽出する方法を紹介します。

# 背景
– 道路に関するGISデータを扱う際、与えられるデータはしばしば膨大になり、分析対象の絞り込みが必要になることがあります
– 例えば、分析対象のエリアが決まっている場合はそのエリアを通る道路のみを抽出することで計算量の削減に繋げることができます

# やること
– 今回は道路データのサンプルデータとして[国土数値情報ダウンロードサイト](https://nlftp.mlit.go.jp/)の道路データを用いたPythonの分析例を紹介します
– 用いるのは、道路法に基づく高速自動車国道、一般国道、都道府県道、市町村道及び特例都道等、全国の道路について、位置(線)、路線名等を整備したデータとなります(以下サンプル)

| N0

元記事を表示

初めてのスクレイピング

# 初めてのスクレイピング
### スクレイピングとは?
スクレイピングとは、**Webサイトから特定の情報を集める技術**です。
効率的に情報収集ができるというメリットがある一方で、Webサイトに負荷をかけてしまったり法に触れてしまったりすることもありますので注意が必要です。

### 実際にやってみよう
今回は自分で作成したhtmlファイルをスクレイピングしてみたいと思います。
下記のように、12か月分の株価の動きをHTMLで記載し、Ubuntuでapatcheを立てて実行しました。

“`html:index.html



株価

0000 ABC Motors

日付 始値

BigQuery MLモデルを使用した低レイテンシ予測パイプラインのイメージ

## はじめに
今回はデータサイエンティストやデータエンジニアがBigQuery MLモデルを作成し、予測結果を提供するMLパイプラインの構成について、備忘録として残します。この記事では、REST APIアプリケーションを使用して、個々のユーザーIDの予測を100ミリ秒以下のレイテンシで提供する方法を解説します。

## ソリューションの全体フロー

以下の図は、データの流れを示しています。各ステップで使用されるツールや必要なロールも含めています。

“`
+————————————–+
| BigQuery MLモデル |
+————————————–+
|
v
+————————————–+
| Dataflow パイプライン |
| (BigQueryIO, Bi

Poetry環境+VSCodeでJupyter Notebookを使って実行するとカーネルのエラーになる

## エラー内容

Poetry環境を作成し、VSCodeでカーネルを選択して.ipynbのセルを実行しようとしたところ、下記のエラーになった。

選択したカーネル
![スクリーンショット 2024-06-17 12.06.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506559/2ee671ca-a5a4-9f9d-b3cb-415187bcda1b.png)

エラー文
“`
‘Python 3.12.3′ でセルを実行するには、 ipykernel パッケージが必要です。
次のコマンドを実行して、’ipykernel’ を Python 環境にインストールします。
コマンド: ‘/usr/local/bin/python3 -m pip install ipykernel -U –user –force-reinstall’
“`

## 解消法

ググってもよくわからなかったのでChatGPTにきいてみると、仮想環境用のカーネルを登録すればよいとのことだったので、実施してみると無

Python+poetry環境でpre-commitフックを実行する

# 環境
OS: Ubuntu22.04
Python 3.11
poetry 1.8.2

# 前提条件

– poetryを用いてpythonの環境構築が終わっている
– プロジェクト内で`git init`などGithubでコード管理を行う準備ができている

# やったこと

1. 必要なパッケージをインストールする

poetryを用いて依存パッケージをインストールするには`poetry add`を使用します。
pre-commitの他に、コードの修正に必要なパッケージもインストールしておきます。

“`bash
# -Dをつけると、devDependenciesになる
poetry add -D pre-commit flake8 black isort
“`

それぞれの役割は以下のとおりです。
– isort: モジュールのインポート順序を修正
– flake8: フォーマットの検査
– black: 自動でフォーマットを修正

1. `.pre-commit-config

Discord.pyで起動時に特定の名前のチャンネルでメッセージを出す方法

愛犬アレックス(アイコンの犬)「お腹すいたわん、でも、飼い主がいないわん。困ったわん」
🐶「そうだ!discord経由で連絡すればいいわん!」
🐶「この間、建てた家族用のサーバーを使うわん!」
🐶「でも、キーボード打てないわん……困ったわん……」
🐶「そうだ、この間ご主人がくれたこのボタン、discordのbotになってるって言ってたわん!」
🐶「押してみよ!」

U・ω・U)ノ凸”ポチッ

bot「(シーン)」
ワシ「(シーン)」
🐶「(シーン)」

🐶「使えないやんけ!!!!!」

こんな🐶を救うために、今日はDiscord.pyを使用して
実行ファイルの起動時、特定の名前のチャンネルにメッセージを出す方法を解説してます!

# 前提条件・実行環境
– python3以上
– discord.pyのインストール
– disocrdでのアプリ作成・TOKENなどの取得
– botの権限周りの設定が完了している
– 投稿日現在は機能しているが、discordAPIのアップデートによる仕様変更の可能性あり

上記の環境設定が完了していることを前提とします。

# コードの内容
“`p

Windowsのコマンドラインで使えるGPTを使った簡単翻訳ツールを作ってみました(.exeファイル生成方法追記)

お遊びで作ったツールですが:sweat_smile:,ちょっと面白かったのでシェアします!
# 使い方
## 実行例
“`cmd
E:\tmp>tran.py “Sunny today”
今日は晴れです。

E:\tmp>type hoge.txt
Kana Reminder is a program which can be used to set a reminder to be triggered at a specified time. It can also be used to run another program at a specified time.

E:\tmp>type hoge.txt | tran.py
Kana Reminderは、指定された時間にトリガーされるリマインダーを設定するために使用できるプログラムです。また、指定された時 間に他のプログラムを実行するためにも使用できます。
“`
## hoge.txtの内容
“`txt
Kana Reminder is a program which can be used to set a remin

PythonエンジニアがRubyでスクレイピングをしてみた

# はじめに
普段、Pythonでコードを書いていますが、最近Rubyにも興味を持ち始めました。
言語によって同じコードでどのくらい違いがあるのか気になったので、RubyとPythonで`Selenium`を使った同じスクレイピングを行ってみました。
学習のためのアウトプットなので、間違い等あれば指摘していただけると幸いです。

# Rubyのスクレイピング

## 1. パッケージのセットアップ
“`shell
gem install selenium-webdriver
“`

## 2. コード
“`ruby
require ‘selenium-webdriver’

options = Selenium::WebDriver::Chrome::Options.new
options.add_argument(‘–headless’)
driver = Selenium::WebDriver.for(:chrome, options: options)

driver.navigate.to ‘https://qiita.com’

puts driver.title

Beautiful Soupを使ってWebスクレイピング Part2

前回の記事では、Beautiful Soupを使った基本的なウェブスクレイピングの方法を紹介しました。
今回は、実用的で高度なテクニックについて解説します。

#### 1. 複数ページにまたがるデータの取得

多くのウェブサイトでは、データが複数のページにまたがっています。
これをスクレイピングするために、ページネーションを処理する方法を紹介します。

“`python
import requests
from bs4 import BeautifulSoup

# 基本URL
base_url = ‘https://example.com/page/’

# ページ数の設定
num_pages = 5

# 各ページのデータを取得
for page in range(1, num_pages + 1):
url = f”{base_url}{page}”
response = requests.get(url)
soup = BeautifulSoup(response.content, ‘html.parser’)

# ページごとのデータを解

Pythonのリスコフの置換原則

# 概要

背景として、[後述のDjangoのModel定義でリスコフの置換原則満たさない書き方](#djangoのabstractbasemodel)をみんなしているのではないかという疑問が出てきたので、軽くまとめました。

# 関数の場合

以下の継承は、**reverse** の型が変わっているので、リスコフの置換原則を満たしません。

“`python
class Parent:
def reverse(self, x: int) -> int:
return -x
class Child(Parent):
def reverse(self, x: str) -> str:
return x[::-1]
“`

同じく、一見大丈夫そうに見えますが、`@proparty`を用いた場合もリスコフの置換原則を満たしません。
Parentではnameメソッドですが、Childではnameフィールドになっています。

“`python
class Parent:
@property
def name(self) ->

Engine Simulatorの作法 その21

# 概要
Engine Simulatorの作法を調べてみた。
githubでエンジンジェネレータ見つけた。
練習問題やってみた。

# 練習問題
単気筒エンジンを作れ。

# 写真

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/d9e310fd-102b-59a7-abb4-5a00458ecdf0.png)

# サンプルコード

“`

def generate_L1():
cylinders0 = []
cylinders = [0]
for i in range(1):
cylinders0.append(i)
bank = Bank(cylinders0, 0)
engine = Engine([bank], cylinders)
engine.engine_name = “L1”
engine.starter_torque = 400
engine.chamber_volume = 70
engine.generate()
engi

【開発】YOLOv8とSwitchBotを使用した睡眠検知と寝落ち自動消灯アプリを作ってみた

# はじめに

この記事では、YOLOv8とSwitchbotを使用した睡眠検知と自動消灯アプリについてまとめました。

https://x.com/yuhe0531/status/1802454467830587822

また、この記事は [【開発】YOLOv8を使用した睡眠検知アプリを作ってみた](https://qiita.com/Yuhei0531/items/7e2a80222b30f9118deb) の続きです。もし詳細が気になる方は参考にしてみてください。

コードに関しては、以下のリポジトリに上げているので、気になる方は参考にしてみてください。

https://github.com/Yuhei-Handa/Automatic_Sleep_Recognition_and_Lights_Off_App

# 1. SwitchBotとは

SwitchBotは、スマートホームの自動化をサポートするために設計された製品群を提供するブランドです。今回の開発では、以下の2つの製品を使用しました。

https://www.switchbot.jp/products/switch

文字列Sを回転させて文字列T に一致させる方法

# atcoder問題文
https://atcoder.jp/contests/abc103/tasks/abc103_b

B – String Rotation /
実行時間制限: 2 sec / メモリ制限: 1024 MB

配点 :
200 点

問題文
英小文字からなる文字列 S, T が与えられます。
S を回転させて T に一致させられるか判定してください。

すなわち、以下の操作を任意の回数繰り返して S を T に一致させられるか判定してください。

制約
2≤∣S∣≤100
∣S∣=∣T∣
S,
T は英小文字からなる
入力
入力は以下の形式で標準入力から与えられる。
S T

出力
S を回転させて T に一致させられる場合は Yes、一致させられない場合は No を出力せよ。

# 回答
“` python.py
def strings_rotation(s: str, t: str) -> bool:
if s == t:
return True

t2 = t + t
rotation_find_

ReflexをCloud Shell Editorで起動するまで

# ReflexをCloud Shell Editorで起動する
この[記事](https://qiita.com/SFITB/items/c3361979b86f441993ff)に触発されて、こうしたライブラリで社内向け便利アプリを作っていけるのでは??と思ってます。

https://qiita.com/SFITB/items/c3361979b86f441993ff

やることはシンプルで、環境構築して、サンプルを実行するところまでを、とりあえずできるようになりたいと思います。

# 環境構築
いつものごとく、`venv`でPython環境を構築する。

“`bash
python3 -m venv .venv
source .venv/bin/activate
“`

次にReflexをインストールする
“`bash
pip install reflex
“`

そして、サンプルコードを持ってくる

“`bash
reflex init
(お好みのサンプルを選択可能)
“`

これで、サンプルコードが入る。
最近は色々を`reflex init`で選択できるようで