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

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

Yahoo!ファイナンスのスクレイピング

クラウドワークスの実案件を受注したと想定して、以下に取り組んでみました。

1.Yahoo!ファイナンスの時価総額下位ランキング500社から情報収集
https://finance.yahoo.co.jp/stocks/ranking/marketCapitalLow?market=all&term=daily
2.会社名、証券コード、EPS、BPSを取得
3.ただし、EPSがプラス、BPSが100円以上を満たしてる会社の情報のみ、Excelに企業名、証券コード、EPSとBPSの数値を表示

“`yahoo_finance.py
from time import sleep

import requests
from bs4 import BeautifulSoup
import pandas as pd

list = []

#複数ページに渡るため、ページ数をformat関数で取得
base_url = ‘https://finance.yahoo.co.jp/stocks/ranking/marketCapitalLow?market=all&term=daily&page={

元記事を表示

OpenCVを用いたエッジ検出

OpenCVを使用したエッジ検出は、画像のエッジや輪郭を識別するプロセスで、画像処理や画像認識の分野で広く利用されています。エッジ検出の一般的な手法には、Cannyエッジ検出、Sobelエッジ検出、Laplacianエッジ検出などがあります。本記事では、これらの方法を使った基本的なエッジ検出の例をいくつか紹介します。

必要なもの
Python: プログラミング言語として使用。
OpenCV: 画像処理を行うためのオープンソースライブラリ。
OpenCVをインストールしてください。
“`
pip install opencv-python
“`
## Cannyエッジ検出
Cannyエッジ検出は、画像のエッジを検出するための多段階アルゴリズムです。

“`
import cv2

# 画像を読み込む
img = cv2.imread(‘image.jpg’, 0)

# Cannyエッジ検出を適用
edges = cv2.Canny(img, 100, 200)

# 結果を表示
cv2.imshow(‘Canny Edge Detection’, edges)
cv2.wait

元記事を表示

リスト内包表記の二重ループと flatMap

Python でのリスト内包表記の二重ループと JavaScript での `flatMap` を比較します。順を追ってコードを構築します。

# 題材

一部の項目を結合させることを考えます。

入力 1 2 3 4 5 6
出力 1 2 3 4 5 6

これをコード化します。

構成を文字列で表現して、ネストしたリストに変換します。

* `1,2+3,4+5+6` → `[[1], [2, 3], [4, 5, 6]]`

使用されている項目を並べる際には、フラット化すると便利です。

* `[[1], [2, 3], [4, 5, 6]]` → `[1, 2, 3, 4, 5, 6]`

# Python

:::note info
REPL での実行状況を示します。`>>> ` は

元記事を表示

ABC332D: Swapping PuzzleのBFS解法(Python)

# ABC332D: Swapping Puzzle

https://atcoder.jp/contests/abc332/tasks/abc332_d

AとBの2つの盤面が与えられ、Aの隣り合う行や列を入れ替える作業を繰り返してAをBに一致させられるかを問う問題です。

Pythonでの一般的な解は`permutations`を用いた全探索ですが、幅優先探索を用いた解法も[公式解説](https://atcoder.jp/contests/abc332/editorial/7922)で紹介されています。

今回はこの解法を見ていきます。

## 解法の軸

BFS(幅優先探索)解法の軸は、幅優先探索を使ってAからの遷移があり得る盤面を全部列挙し、最小手数を求めることにあります。

なので実質やっていることは`permutations`を用いた解法とほぼ同じです。違いはどのように遷移を全列挙するかの方法だけです。

## 最小手数の管理

まずはBFSで全列挙が可能なことを前提として、最小手数の管理の方法を考えます。一般的なBFS(やダイクストラ法)では頂点番号をインデックスと

元記事を表示

PythonでAndroidスマホのシリアル通信をする。

# はじめに
WindosやLinuxのPCからPythonでシリアル通信をする場合“`pyserial“`を使えば可能。しかしAndroidスマホでは使えなかった。本記事では、Androidスマホでシリアル通信するライブラリ“`usbserial4a“`についてまとめる。

# 目次
+ [usbserial4a](#usbserial4a)
+ [ポート番号のリストとポートのオープン](#ポート番号のリストとポートのオープン)
+ [シリアル通信の送受信](#シリアル通信の送受信)
+ [Kivyでシリアル通信アプリを作る](#kivyでシリアル通信アプリを作る)
+ [作ったコード](#作ったコード)

# usbserial4a
Androidのスマホでシリアル通信するためのライブラリ。“`pip install usbserial4a“`と“`pip install usb4a“`でライブラリ取得。kivy上で動作するライブラリなので、Kivyとセットで使う。Kivyについての記事は  [PythonのGUIライブラリKivyを使う](https://qii

元記事を表示

[無料][2024年版] LINE Messaging API v3 + Python(Flask) でボットを作る [その3 – 情報検索理論(前編)]

## 前回までのあらすじと今回の目的

[その1](https://qiita.com/nozomiyamada/items/f6c6816e02359e08a74e)と[その2](https://qiita.com/nozomiyamada/items/87389aacb151b8418501)を通して、Python(Flask) でラインボットを作るに至りました。友達登録すると応答メッセージを送ってくれ、メッセージを送るとユーザーネーム付きでオウム返ししてくれるというものです。

が、そんなボットに需要があるわけがありません。これはあくまでテストアプリであり、前回も述べましたが本来作りたいのは「ビートルズの情報検索ツール」です。ということで、テストアプリのコードを本番ボット用のものに書き換えていこうと思います。

作成するボットは、「楽曲名からYouTube動画の検索」「楽曲名から歌詞の取得」などが目的ですが、そのためには受信メッセージから楽曲名を特定できるようにするのが第一段階となります。これには自然言語処理や情報検索 (infomation retrieval) の理論が大きく

元記事を表示

Python+OpenCVで画像を丸く切り抜いた

## 開発環境
– Visual Studio Code (Version: 1.85.1)
– Python 3.11.7
– numpy 1.26.3
– opencv-python 4.9.0.80

## 入力画像
![src.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611466/e130105e-0180-7759-a036-00bf4b8890b0.png)

## コード

“`python
import cv2
import numpy as np

CROP_RADIUS = 256
COLOR_WHITE = (255, 255, 255, 255)
src_img = cv2.imread(“src.png”)

if src_img is None:
print(“Error: Image not loaded”)
else:
src_height, src_width = src_img.shape[:2]
center_point = (s

元記事を表示

AIによる背景判定処理の実験 後編 Meta Quest編

# はじめに
前編ではPythonとPyTorchを使って背景判定の実験をしましたが 後編では同じCNNモデルをMeta Quest3で実行しアマレコVRの背景透過処理と連携します。

https://qiita.com/amaman/items/5af159135983568ea2ea

# どうやってMeta Quest3で実行するか

## Meta Quest3ではPython、PyTorchが使えない?
おそらくMeta Quest用のPython等は無いと思うのでCNNモデルの実行はCompute Shaderを使って実装することにしました。
具体的にはコンボリューション、プーリング、全結合の3つを実装します。

:::note info
方針
– CNNモデルの設計や学習、テストまではPython、PyTorchを使ってPCで行う
– Meta Quest3ではPCで保存したCNNモデルの学習データ(パラメータ)を読み込んでCompute Shaderで実行する
– コンボリューション、プーリング、全結合をCompute Shaderで実装する
:::

## M

元記事を表示

!pip install xxxしたらERROR: dependency conflicts

# 問題
~~~
!pip install labelImg
~~~

したら、

~~~

Collecting labelImg
Downloading labelImg-1.8.6.tar.gz (247 kB)
————————————– 247.7/247.7 kB 1.9 MB/s eta…..
.

.いろいろかいてあって
.
.

Successfully built labelImg
Installing collected packages: PyQt5-Qt5, PyQt5-sip, pyqt5, labelImg
Successfully installed PyQt5-Qt5-5.15.2 PyQt5-sip-12.13.0 labelImg-1.8.6 pyqt5-5.15.10

~~~

~~~
ERROR: pip’s dependency resolver does not currently take into acco

元記事を表示

ろうとるがPythonを扱う、、(その18:Pysharkを使ったGUIアプリケーション)

# Pysharkを使ってGUIアプリケーションをつくる
tsharkのPythonラッパーであるPysharkを使ってGUIアプリケーションを作ってみた。要するに、Wiresharkもどきである。ただ、レベルはかなり劣る。相変わらず、global使用などクオリティの高くないソースコードであるが、ご容赦いただきたい。

## 最初に見た目から
### キャプチャI/Fを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634816/4a79e3c0-4dae-95ba-6098-01b6f78b56d9.png)
Selectをクリックすると下記ダイアログボックスが表示される。
![IF選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634816/620f3203-3bad-5ae0-b955-03b7a05a4595.png)
キャプチャI/Fを選んで、”Set”をクリック

### キャプチャ開

元記事を表示

機械学習を使ってWearistaになるための条件を探る!

# 概要
WEAR公認ユーザーのWEARISTAにはどうしたらなれるのかについて調べました。

#### 調査の流れ
1. WEARISTAになるための仮説設定
2. 仮説の確認
3. モデルの学習とテスト
4. まとめ

# WEARとは?

ファション通販サイトZOZOTOWNで有名な株式会社スタートトゥデイが運営する[ファッションコーディネートサイト](https://wear.jp/first/) のことである。このサイトでは他のユーザーが投稿したコーディ

元記事を表示

LightGBMのcv()関数を使い、任意のデータ分割方法で交差検証を行う

# 目的
1. `LightGBM`で交差検証を行う時に、`cv()`関数を使いサクッと書く。
2. K-Fold系以外のデータ分割方法を使用する。

# はじめに
`LightGBM`のTraining APIには[`cv()`関数](https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.cv.html)があり、`for`ループを使うスクラッチよりも手短に交差検証(以下CV)を記述できます。
一方で、CVのデータ分割には、様々な方法が`sklearn.model_selection`モジュールに用意されています([`sklearn`の`model_selection`解説記事](https://scikit-learn.org/stable/auto_examples/model_selection/plot_cv_indices.html#sphx-glr-auto-examples-model-selection-plot-cv-indices-py))。これらはすべて`cv()`に適用可能です。
`cv()`そ

元記事を表示

「Pythonライブラリのバージョンアップ」と「pipコマンド」

# はじめに
先日、Pythonライブラリのバージョンアップに取り組みました。
その際、pipコマンドを使って、あれこれ作業をしたので、その内容をまとめました。

# 目次
– [下準備](#下準備)
– [インストールされているライブラリの確認](#インストールされているライブラリの確認)
– [旧バージョンの削除](#旧バージョンの削除)
– [バージョンアップ](#バージョンアップ)

# 下準備
:::note info
こちらの下準備をしていただければ、以下の内容をハンズオンできます。
内容のみ確認したい方は飛ばしてください。
:::

### virtualenvで検証環境を作成
検証用の環境をvirtualenvを使って準備します。
virtualenvが入っていない方は以下のコマンドでインストールしてください。

“`bash
$ pip install virtualenv
“`

それでは、検証用環境を作成します。
環境適用後、コマンドラインの先頭に`(${環境名})`と表示されていればOKです。
(私の場合は`(pip_test)`)

“`bash
#

元記事を表示

Pythonで「辞書から要素を削除する」の動作を確認してみた

# 概要

Pythonで「辞書から要素を削除する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/python/dictionary/index6.html

# 実装

以下のファイルを作成しました。
“`sample.py
mydict = {“A”:”Apple”, “L”:”Lemon”, “O”:”Orange”}
del mydict[“L”]
print(mydict)

mydict = {“A”:”Apple”, “L”:”Lemon”, “O”:”Orange”}
#del mydict[“P”]

mydict = {“A”:”Apple”, “L”:”Lemon”, “O”:”Orange”}
val = mydict.pop(“L”)
print(val)
print(mydict)

mydict = {“A”:”Apple”, “L”:”Lemon”, “O”:”Orange”}
#val = mydict.pop(“P”)

mydict = {“A”:”Apple”, “L”:”Lem

元記事を表示

Anaconda3をmacOSから完全にアンインストールした

## 背景

数年前までanacondaを使っていたが、新たにまたpythonを触る気になった。
そこで、Javascriptでは普段asdfを使っているので、asdf+Poetryでpython環境を0から作ってみようかなと思い、その際、これまで使っていたanacondaは綺麗に消そうと思った。

## やること
anacondaは正直Jupyter Notebookを使うために入れていたくらいの温度感なので、Anaconda3をホストマシンからアンインストールする。

## 手順
Step1: Anaconda3のホームディレクトリの確認
Step2: anaconda-cleanをインストール
Step3: anaconda-cleanをインストール
Step4: .anaconda_backupを削除
Step5: anacondaを削除!
Step6: パスとかの削除
Step7: ショートカットを削除する

## Anaconda3のホームディレクトリの確認
削除する前に、Anaconda3 がどこにインストールされているかを確認する。
独自にカスタマイズしていなければ、多

元記事を表示

Thonnyを使ってPythonでChessを作ってみる#00

 趣味でChessをやっていて、自分でも作れるのではないかと思い立ち制作することに。将来的にはWebページ上で実装したいなと。Webでの実装あんまわかんないから端末上で棋譜を入力するとピースが動くPythonプログラムを作るところから。
 続くことを願ってタイトルにナンバリングをしておく。未来の俺よ。頼んだぞ(自力本願)
初心者プログラマーなのでそこはご了承を。

<<開発環境>>
・Windows 10 Home 22H2 OSBuild:19045.3803
・Thonny:version 4.1.4
<<>>

必要なライブラリのインポートから。
Thonnyを起動後、「ツール」タブ→「システムシェルを開く…」
プロンプト画面が起動するため以下のコマンドを実行。
“`
pip install numpy
“`

とりあえず二次元配列使いたいからNumpy入れる

まず最初にボードの表示から
“`
import numpy as np

board = np.array([[‘R1*’,’N1*’,’B1*’,’Q*・’,’K*・’,’B2*’,’N2*’,’R2*’

元記事を表示

PythonのLinter兼Formatter「Ruff」をVSCodeで使ってみる

# Ruffとは

Rustで書かれたPython向けのLinter兼Formatterです。LinterとFormatterについては以下の記事に分かりやすくまとめられていたため、ぜひご確認ください。

https://zenn.dev/naiq112/articles/df1b32fc08d383

## メリット

Ruffには以下のようなメリットがあります。

### 動作が高速

Rust製ということもあり、従来の静的コード解析ツールと比べてかなり高速です。

![Ruff](https://user-images.githubusercontent.com/1309177/232603516-4fb4892d-585c-4b20-b810-3db9161831e4.svg#only-light)

### ツールを一つにまとめられる

従来はLinterにFlake8、FormatterにBlack、Import sortingにisortというように、目的に合わせて別のツールを導入しなければなりませんでした。Ruffはこれらの役割をすべて担うため、他のツールを導入する必要

元記事を表示

ABC332(A~D)をPythonで解く

# A: Online Shopping

https://atcoder.jp/contests/abc332/tasks/abc332_a

問題文の通りに実装します。

コード

“`python
N, S, K = map(int, input().split())
cost = 0
for _ in range(N):
p, q = map(int, input().split())
cost += p * q

if cost >= S:
print(cost)
else:
print(cost+K)
“`

# B: Glass and Mug

https://atcoder.jp/contests/abc332/tasks/abc332_b

問題文に従って丁寧に実装していきます。

まずはグラスに入っている水の量とマグカップに入っている水の量を表す変数`gc`と`mc`を用意します。操作を順番に見ていきます。

1: グラスが水で満たされているとき

元記事を表示

[Python / UMAP] TypeError: Cannot use scipy.linalg.eigh for sparse A with k >= N. Use scipy.linalg.eigh(A.toarray()) or reduce k. の対策

# 現象

`umap.UMAP` を使った処理の単体テストを書いていたら、以下のようなエラーに遭遇した。

`TypeError: Cannot use scipy.linalg.eigh for sparse A with k >= N. Use scipy.linalg.eigh(A.toarray()) or reduce k.`

# 環境

||version|
|:–|:–|
|Docker image|python:3.10.12-slim|
|Python|3.10.12|
|umap-learn|0.5.5|

# 再現手順

“`python:実行コード
import numpy as np
import umap

SEED: int = 42

# 次元削減対象データ
vectors: np.ndarray = np.array([[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9]])

target_dim: int = 2
reducer = umap.UMAP(random_state=SEED,

元記事を表示

ReactとDjangoを使用して帳票(PDF)作成アプリを開発

# 概要

本記事ではReactとDjangoを使用して帳票(PDF)作成する機能と、
作成した帳票を閲覧できる機能を実装します。
djangorestframeworkを使用してReactとAPI通信を行います。
PDFの作成にはreportlabライブラリを使用します。

:::note info
以下、バージョン情報など。

OS : MacOS(M1)
DB : SQLite3

Django==4.2.9
django-cors-headers==4.3.1
djangorestframework==3.14.0
reportlab==4.0.8

react@18.2.0
react-router-dom@6.21.1
:::

完成イメージ
![スクリーンショット 2024-01-05 23.12.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667355/2b129980-41ff-b6d3-d6ae-ae2e38d7b9c6.png)
![スクリーンショット 2024-01-05

元記事を表示

OTHERカテゴリの最新記事