Python3関連のことを調べてみた2022年11月16日

Python3関連のことを調べてみた2022年11月16日
目次

40代おっさんStreamlitを学ぶ②

## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## 前回の記事

## Streamlit

### Input widgets

“`python
import streamlit as st
import pandas as pd
import numpy as np

csv = pd.read_csv(‘dummy.csv’) # csv読み込み適当なの入れました

df = pd.DataFrame(csv)

if st.button(‘住所’): # ボタン
st.dataframe(df[‘住所’])

if st.checkbox(‘氏名’): # チェックボックス
st.dataframe(df[‘氏名’])

options = st.multiselect( # オプションで選択肢の中

元記事を表示

Python Language – format() built-in Floating Point Rounding(浮動小数点数の端数処理 – 丸め)

Python では、他の多くの言語と同様に浮動小数点数における端数の丸めが行われます。

__15. Floating Point Arithmetic: Issues and Limitations__
https://docs.python.org/3.9/tutorial/floatingpoint.html

__The Perils of Floating Point__
https://www.lahey.com/float.htm

Python では IEEE 754 の `Round to nearest, ties to even(最近接丸め(偶数)= 偶数丸め(= 銀行家の丸め =Bankers’ Rounding ))` を採用しています。
__IEEE 754__
https://en.wikipedia.org/wiki/IEEE_754#Rounding_rules

※ decimal 等で丸めの方法を変更することも可能です。
__Rounding modes__
https://docs.python.org/3/library/decimal.htm

元記事を表示

Python Language – Index & Slice

Python には様々な Data Type があり、それらの中には Index や Slice でその一部を取得したり、変更したりできるものがあります。

__3. An Informal Introduction to Python__
https://docs.python.org/3.9/tutorial/introduction.html

__5. Data Structures__
https://docs.python.org/3.9/tutorial/datastructures.html

ここでは、以下の代表的な Data Type について、使用方法の違いをご紹介します。

– String (Str)(文字列)
– List(リスト)
– Tuple(タプル)
– Set(集合)
– Dictionary (Dict)(辞書)

#### 環境
以下の Python 3.9 / Linux 環境で確認します。
“`shell
$ uname -si
Linux x86_64

$ python3.9 -V
Python 3.9.13

$ python3.9

元記事を表示

Python Language – Comprehension(内包表記)

Python では、いくつかの言語がサポートしている内包表記 (Comprehension) が使用可能です。

__5.1.3. List Comprehensions__
https://docs.python.org/3.9/tutorial/datastructures.html#list-comprehensions

__リスト内包表記__
https://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%B9%E3%83%88%E5%86%85%E5%8C%85%E8%A1%A8%E8%A8%98

ここでは、以下の代表的な Data Type について、簡単な使用方法をご紹介します。

– String (Str)(文字列)
– List(リスト)
– Tuple(タプル)
– Set(集合)
– Dictionary (Dict)(辞書)

#### 環境
以下の Python 3.9 / Linux 環境で確認します。
“`shell
$ uname -si
Linux x86_64

$ python3.9 -V
Python 3.9.

元記事を表示

PythonでFlaskを使ってPOSTで送られたデータの確認用

PythonでFlaskを使い、ウェブアプリを作っています。
POSTで送られたデータの確認をしたいと思い、コードを書きました。
このコードは、汎用で使えると思います。
HTMLの部分は、base.htmlで作って継承できるように書きました。

“`Python
{% extends ‘base.html’ %}
{% block head %}
データの出力
{% endblock %}
{% block content %}

キーとバリュー

キー一覧

    {% for key in user_data.keys() %}

  • {{ key }}
  • {% endfor %}

入力されたデータ

    {% for key, value in user_data.items() %}

  • {{ key }}: {{ value }}
  • {% end

元記事を表示

『サイバーセキュリティプログラミング第2版』の読書メモ (4)

ひきつづき『サイバーセキュリティプログラミング第2版』の読書メモです。

https://www.oreilly.co.jp/books/9784873119731/

4.3 章まで進みました。記載されているコードをじっくり確認しながら読み進めています。

## P86 detect 関数より

python から OpenCV を使って画像データに人の顔が含まれるかを検出する関数です。が、「ある一行」の理解につまづきました。

“`python
rects[:,2:] += rects[:,:2] // ⑤
“`

P87 の解説によると、

> … rects は (x, y, width, height) という形式であり、x, y は四角形の左下の座標、width, height は四角形の幅と高さを表す。
> ⑤に示す Python のスライス構文により上記の rects データを (x1, y1, x1+width, y1+width) ― 言い換えると (x1, y1, x2, y2) ― に変換することで、cv2.rectangle の引数として利用しやすくしてい

元記事を表示

Tableau OnlineへのJWTを用いたSSO

ハロー世界。りくとんです。みんな元気にSSOしてますか?(挨拶)

この記事はTableau Onlineの埋め込みビューに対してSSOするために、2022年1月に実装された連携アプリの機能を利用して実装した記事です。
一応(あんま役に立たない)公式ヘルプ載せときますね。

◆Tableau Cloud ヘルプ – 直接信頼を使用して接続済みアプリを構成する
https://help.tableau.com/current/online/ja-jp/connected_apps_direct.htm

# 概要
・Tableau Onlineの埋め込みビューに対してSSO。
・SAML認証のIdP立てるのだるいし借りるとランニングが…。→連携アプリで解決。
・JWT発行するにはPythonかJavaのサンプルコードが載ってた。今回はPythonで実装。
・環境依存したくないからGAE上にデプロイしよう。AjaxでJWT取得してSSO。
・JWTとはなんぞやという知識は先人のQiitaを参考にしてください。

◆Qiita – 認証におけるJWTの利用について
https://qiita

元記事を表示

Webスクレイピングアプリケーションを作成。

最近は、Udemyの講座である「爆速で5つのPython Webアプリを開発」をやっている。

https://www.udemy.com/course/python-streamlit/

本日は最後のアプリケーションであるWebスクレイピングを用いた簡単なアプリケーションを作成した。
そのアプリケーションをHerokuと呼ばれるものにデプロイをして自動的に更新できるようにした。
実際にはクレカの情報が入力出来なかったので自動更新はまだ実装していない。

他に自分でアプリケーションを作成して自動更新したいようなら別のクレカで試そうと思う。
下のURLが今日の成果物です。お疲れ様でした。

https://udemy-streamlit-demo.herokuapp.com/

元記事を表示

【文字検出_備忘録】OpenCV X Python エッジ検出処理

続きをやっていきましょう。今日は2値化ファイルの画素値出力をした後、エッジ検出処理をやります。

### 画素値出力
“`
#2値化ファイルの画素値出力
test_f = open(TEST_file_path,’w’) #txtファイルを含めたパスを用意しました。

y_depth = img_gray_th_otsu.shape[0]
x_depth = img_gray_th_otsu.shape[1]

for y_num in range(y_depth):
for x_num in range(x_depth):
test_f.write(“y_num[“+str(y_num)+”] x_num[“+str(x_num)+”]:”+str(img_gray_th_otsu[y_num][x_num])+”\n”)

test_f.close()
“`

としてみると、ちゃんと0か255になっていることがわかりました。
ヒストグラムみると若干違ったのでちょっと怪しんでましたが、まぁ良さそう。

### エッジ検出
Canny法でのエッジ検出をやってみます。

元記事を表示

【文字検出_備忘録】OpenCV X Python グレースケール画像の2値化

こんにちは。続きをやりましょう。

### グレースケール化の確認
グレースケール化までやったのでそれができてるかの確認をします。
せっかくなので、ndarrayの出力も試したいなと思って、以下のコードを書きました。
“`
for y_num in range(0,5):
for x_num in range(0,5):
print(“print[“+str(y_num)+”]”+”[“+str(x_num)+”]:”+str(img_gray[y_num][x_num]))

“`
img_gray[y_num][x_num]の部分で、画素値の出力をしてます。
実行結果。
“`
print[0][0]:251
print[0][1]:251
print[0][2]:251
print[0][3]:251
print[0][4]:251
print[1][0]:251
print[1][1]:251
print[1][2]:251
print[1][3]:251
print[1][4]:251
print[2][0]:251
print[2][1]:251
print[2

元記事を表示

【文字検出_備忘録】OpenCV X Python 画像の読み込みとグレースケール化

産休にはいって、出産まであと1ヶ月切ったので、子供を産まれるまで、どこまでできるかチャレンジ。
私のスペック
・情報工学、学部卒(なのでたかが知れてる)
・とあるメーカー 設計・開発業務 5年目、主にマネジメントしかしてない
・子供1人、2歳(まだ夜泣きもするし、寝るのもへたっぴなので夜はほぼ活動してない)

いや、多分こんな文字検出なんかね、どこでも載ってるんだけど、色々やってみたいので、お勉強兼ねて少し、鈍臭くやった備忘録を書きます。
鈍臭くっていうのは、データの中身をちゃんとみたり、どうしたらAPIやライブラリを使用せずに組んでみたりするってこと。です。

# 前提条件

## 開発環境
OS macOS Monterey
ハード iMac (21.5-inch, Late 2015)
Memory 8GB

## 今までやってきたこと
・開発環境整備
 Python, OpenCVI(Numpy含む), Matlabplotlib
・エディタ SublimeText

## やりたいこと
・画像から文字検出

## 考えてるステップ
Step0 画像の読み込み
Step1

元記事を表示

ライブラリー無し自作関数 Python3 西暦 ➡ 和暦変換 関数

# 西暦 ➡ 和暦 変換 Function

“`python:main.py

import datetime

class Gengou():

def __init__(self):
pass

def Data_Set(self):
date_arr = [
{‘year’: 2019, ‘name’: ‘令和’, ‘new_Japanese_calendar’: ‘平成31年’},
{‘year’: 1986, ‘name’: ‘平成’, ‘new_Japanese_calendar’: ‘平成元年’},
{‘year’: 1926, ‘name’: ‘昭和’, ‘new_Japanese_calendar’: ‘大正15年’}
]
return date_arr

def Gengou_Print(self, now_y, r_month, date_arr):
for d_val in date

元記事を表示

天気予報APIで翌朝の降水確率を取得してLineで通知する

# 動機と目的
私は朝、会社に行くのが苦痛である。
理由は、早起きが苦手だからである。
そして通勤時の天候で(傘を持っていく/持っていかない)、(早く起きる/起きない)を決めなければならない。
例えば
(a)雨が降っているならば、傘を持って5:00に家を出て徒歩で駅に向かう。
(b)そうでないならば、傘を持たずに5:30に家を出て自転車で駅に向かう。

なので、前日20:00の天気予報で翌日の朝の天気が雨か確認し30分早く起きるかどうかを決定する。
これを自動化すること目的とする。

## 詳細
処理の流れは以下の通り。
(1) 天気予報APIで翌日の朝6-12の降水確率を取得する。
[天気予報API](https://weather.tsukumijima.net/ “天気予報API”)
(2) もし降水確率が40%以上なら、Line notifyで自分に通知する。
[PythonでLINE Notifyへ通知を送る](https://qiita.com/akeome/items/e1e0fecf2e754436afc8 “https://qiita.com/akeome/items

元記事を表示

【Python3】Decimal.quantizeを用いて小数点第○位以下を四捨五入

# 何の記事?

Python3で小数点以下を丸める関数にroundがありますが、
浮動小数点演算の問題により四捨五入が正確に行われない
場合があります。

“`python
f = 2.675

print(round(f, 2))
“`

実行結果:

“`python
2.67
“`

本当は2.68にならなければなりませんが切り捨てされてしまっています。この事象に対する対策です。

# Decimalを用いる方法

Decimalを用います。

“`python
from decimal import Decimal, ROUND_HALF_UP

def my_round(x, d=2):
p = Decimal(str(x)).quantize(Decimal(str(1/10**d)), rounding=ROUND_HALF_UP)
p = float(p)
return p

print(my_round(2.675, d=2))
“`

実行結果:

“`python
2.68
“`

元記事を表示

PUDB_TTYを指定してPuDBを使う

# 免責
この記事に従って発生した如何なる損害も筆者は負うことができません。ご免なさい。

# 目的
私はCLIでpythonスクリプトをデバッグしたいので、PuDBというデバッグツールを使っています。
PUDB_TTYを指定してPuDBを使うときに少し苦労したので、インストール方法を残しておきたいと思います。

# PUDB_TTYを指定する場合のPuDBのインストール方法
現時点で最新のpudb==2022.1.3では、PUDB_TTYを指定するとurwidでエラー(ValueError: I/O operation on closed file.)が発生するようです。
エラーを回避するためにpudb==2021.2.2をインストールします。
“`shell-session:インストール
$ python3 -m pip install –user
pudb==2021.2.2
“`
# PUDB_TTYを指定してPuDBを使う

元記事を表示

たった4行で画像の中の人を数える方法

# どうも
face_recognitionについて調べてて意外と簡単だったので紹介します。

## 用意する物

+ face_recognition ←こいつが無いとお話にならない
+ 顔の入った写真 ←顔が隠れてないやつ

### 用意した画像
最近寒くなってきたのでこの画像にしました。
![3061076_s.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2915539/14237492-c38f-6cb3-4167-19390d3fbf4a.jpeg)

画像は[ここからダウンロードできます](https://www.photo-ac.com/main/detail/3061076)

:::note warn
注意
face_recognitionの学習モデルの関係で赤ちゃんの顔を認識できません。
:::
注意事項の[詳しい説明はこちら](https://github.com/ageitgey/face_recognition/blob/master/README_Japanese.md#%

元記事を表示

pipenv/pyenvでPython3.*をインストールするとBUILD FAILEDになる(macOS 11+)

### BUILD FAILED!
macOSで`brew`で入れた`pyenv`で`Python 3.*`をインストールしようとすると失敗する(`pipenv`の環境構築で`pyenv`でインストールしようとしても当然同じエラーが出る).

(MacBook Pro 2019, macOS 12.6, Intel Core i7)

“`shell
$ brew install pyenv

$ pyenv install 3.7.10

python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.7.10.tar.xz…
-> https://www.python.org/ftp/python/3.7.10/Python-3.7.10.tar.xz
Installing Python-3.7.10…
python-build: use readline from homebrew
python-build: use

元記事を表示

40代おっさんStreamlitを学ぶ

## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## Streamlit

treamlitとは、PythonでWebアプリケーションを作成するためのフレームワークです。

データサイエンティストやAIエンジニア向けに開発されており、バックエンド開発の知識がなくてもPythonのコードを数行書くだけで、気軽にデモ用のアプリを作成することができるのが特徴です。

### Streamlitインストール

“`bash
pip3 install streamlit
“`

### 確かめる

“`bash
streamlit hello
“`

自分ははじめてだったのでメールアドレス求められました。

サイトにアクセスできれば大丈夫です。

### Text elements

フォルダを作り
`app.py`を作成

“`python
import streamlit as st
st.write(‘利樹大好き’)
“`

st

元記事を表示

【Pytorch】勾配を計算する

# はじめに

NNの学習時で計算する、勾配を計算する方法を調べたのでメモしておきます。

“`math
\theta \leftarrow \theta + \eta \nabla_\theta L(\theta)
“`

通常は、これらはoptimizer が良しなに更新してくれるので、自分では learning rate をいじったりはしません。なので、何次元のパラメータかなども意識しません。が、それを見てみよう、というのが今回の趣旨です。

# Modelのgradient vector を計算

ネットワークモデルについては、pytorchのtuotrial に沿って行います。

https://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html

### モデルの定義とパラメータの参照

“`python: net.py
import torch
import torch.nn as nn
import torch.nn.functional as F

class Net(nn.

元記事を表示

【求対案】Python3 で時計算をやってみる

非情報学科生向けのプログラミング講義で、以下のような問題が出題されました。

>時刻を入力したら、時計の短針と長針のなす角の角度aを求めるプログラムを作成しなさい。
>(0°≦a≦180°)
>また、入力される時(h)と分(m)は以下の条件を満たす整数であるとする。
>0≦h<12, 0≦m≦59

正時(m=0)の場合

60分進むごとに、短針は30度進むこと、6時丁度のとき180°になることを考慮して、以下のような愚直解を考えた。

“`python
#h = 8, m = 0
def solution(h, m):
if m == 0:
if 6 > h:
a = 30 * h
elif h == 6:
a = 180
elif h > 6:
a = 360 – (h*30)
return a
#120
“`

すべての場合

しかし、以上のような解では、正時以外の場合対応できない。幸い、時と分は整数

元記事を表示

OTHERカテゴリの最新記事