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

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

sqlite3でPython変数を正しくバインドする方法

:::note warn
記事の内容はあくまで個人の考えに基づくものであり、組織を代表するものではありません。
:::

sqlite3を使って開発をする中で、よろしくない方法でPython変数をバインドしていた。
社内のコードレビューでご指摘いただき、事前に気づくことができた。
備忘も兼ねてまとめておく。

# アンチパターン

もともと下記のような方法でPython変数をバインドしていた。
“`python
import sqlite3

name = “test user”
age = 20

con = sqlite3.connect(‘example.db’)
cur = con.cursor()
cur.execute(“create table user(id integer primary key autoincrement, name text, age integer);”)
cur.execute(“insert into user(name, age) values(‘{}’, {});”.format(name, age))
con.commit()
co

元記事を表示

Raspberry piとTVをHDMIで繋げてTVを制御する。

# 前書き
Raspberry pi4bもjetson nanoも定価で全然売っておらず、買えてません。欲しい・・・(前回に続いて2回目。)

前回の記事[LINE BOT経由でパパの居場所(androidスマホ)を地図で教える(成功編)](https://qiita.com/TVCAdev/items/ec08b008ddc3d62e629b)に続いて、TVとHDMIでつながっているRaspberry piを活用してTVを制御してみます。
子供が学校から帰ってきて、TVばっかり見て困っているので、考えてみました。

TVの電源ON/OFFのログが見れたり、TVを起動禁止(10秒周期でTV電源のON/OFFを検知し、ONだったら消す)にしたりできます。

line1.jpg

元記事を表示

【Django】更新ページの作り方

DjangoアプリでDB情報を更新するページを作成しましたので、備忘として残します

## 処理フロー

ユーザーが更新したいDB情報を取得して更新するまでのフローは以下になります。

1. ユーザーがDB更新ページを接続する(urls.pyが実行される)
2. urls.pyに記載しているviews.pyの関数を実行する
3. views.pyの関数で渡されてたpkを元にDB情報を検索するクエリを投げる
4. 検索結果から取得したDB情報をhtmlへ渡して表示する
5. ユーザーが入力フォームからDB情報を更新する(urls.pyがPOSTメソッドで実行される)
6. urls.pyに記載しているviews.pyの関数をPOSTメソッドで実行される
7. views.pyでDB情報を更新するSQLが実行される

処理フローずつ説明していきます

## 1. ユーザーDB更新ページを接続する

クライアントからhttp://example.com/blog/1/updateというアドレスへアクセスします。

/blog/1/updateというパスがurls.pyの以下のような記載部分に

元記事を表示

PythonでMatplotlibの使い方がわからないときは、公式リファレンスを見よう

# この記事の概要
今年度(記事を記載している2022年度)にほぼ初めてPythonを覚え、データ可視化の方法などを一通り覚えた駆け出しデータサイエンティストですが、未だにMatplotlibが使いこなせないので、この際だから頭の整理をしてしまおう! というものになります。

# Matplotlibには2つの記述方法がある
あまり英語が得意じゃないのですが、Matplotlibの公式サイトを読み解きながら、2つの方法をまとめていきます。

## その1.”pyplot”による方法
とりあえずネットにあるコードをぺたぺた貼るときに、大体初めに覚えるものです。
公式サイトでは「like MATLAB」と書いてありますね。ついでに
「オブジェクト指向よりフレキシブルじゃないから、Axesオブジェクトから呼び出すのがいいよ!」
と言っているようです(若干意訳気味ですが)。
“`import.py
import pandas as pd
import numpy as np
import matplotlib.pyp

元記事を表示

【メモ】Dockerでseleniumスクレイピング始め方

“`Dockerfile:/Dockerfile
FROM lambci/lambda:build-python3.8

COPY PROJECTNAME /var/task/PROJECTNAME
COPY tests /var/task/tests

WORKDIR /opt/python/

RUN yum install -y unzip && \
curl -SL https://chromedriver.storage.googleapis.com/2.43/chromedriver_linux64.zip > chromedriver.zip && \
curl -SL https://github.com/adieuadieu/serverless-chrome/releases/download/v1.0.0-55/stable-headless-chromium-amazonlinux-2017-03.zip > headless-chromium.zip && \
unzip chromedriver.zip && \
unzip

元記事を表示

nfcpyの読み取り機能をhttp経由で呼び出し可能にする。

# 概要

人「NFCを読み取るアプリ欲しい」
蝦「はい」
人「見た目はリッチにしたい」
蝦「はい」
人「NFCを読むところまではPythonでできたのでいい感じにしてほしい」
蝦「はい」

# 動作環境
– ASUS Chromebook C434TA +crostini(Debian)
– python3.7以降(asyicioを使用します。)
– NFCリーダー: RC-S380/S

# 基本構成
– Uvicornでhttpリクエストの受付
– FastAPIでリクエストを処理する。
– nfcpyでUSB接続したNFCリーダーを操作する。

# 実際のコード
## 読み取り処理部分
読み取り部分は至極単純。Pythonにはアロー関数が無いので関数内で関数を宣言している。

“`python3:nfc.py
import nfc

# NFCでデータを読み込むための関数
def read_nfc_tag(clf):
data = {}
# アロー関数的な処理
def connected(tag):
# スコープの扱いに注意

元記事を表示

python学習 – 3日目

こんにちは★

# おしながき
今日は以下をやっていきまする。

– 変数
– 定数
– 予約語

# 変数
何かの値に名前を付けることができます!
Windowsと違って、Pythonは大文字小文字の区別つくので気を付けます。
プログラムの処理が終了するまで変数の値は保持されるので、よろしくお願いいたします。
プログラム終了後も保持したい場合は、DBとかに保存する必要ありけり。

## 変数のコード例
“`実行例
command = “cat”
neko = “Cat”

print(command)
print(neko)
“`

“`結果
cat
Cat
“`

## 命名規則
命名規則は以下の3つに分けられる。
1. スネーク
1. ラクダ
1. ケパブ

### スネークケース
へびみたいなもの。
複数の言葉をアンダーバーでつなぐ。
– hello_world
– HELLO_WORLD

### キャメルケース
ラクダみたいなもの。大文字のところがラクダのこぶ。
– helloPython
– HelloPython

### ケパブケース
櫛が刺さったケパブみた

元記事を表示

python の標準出力を tee で 表示/保存 できなかった件

開発中に大量のエラーを吐き出していたので
エラー表示を見ながらファイルにも保存したかったのに、`tee` を仲介させた途端何も出力しなくなった

標準出力がバッファリングされるのが原因らしい

“`
python3 hoge.py | tee log
“`

“`
python3 -u hoge.py | tee log
“`

と、`-u` オプション追加で、解決した。

元記事を表示

lxml.etree で XML の基本的なことをもう少し触ってみる(etree.XML)

# 目的
[Windows 10 + Excel2016_x86 VBA で XML の基本的なことを少し触ってみる](https://qiita.com/tabizou/items/10eb832352a6b31888c7)
で使用したXMLファイルをPythonで基本的な操作をもう少し試してみる。

## Pythonのサンプルコード
基本的な機能をもう少し試してみる。

“`python
# Windows Add env PYTHONIOENCODING = UTF-8 & restart vscode
# coding:utf-8

from lxml import etree
import urllib.request

# urlencode
urladr = urllib.parse.urlencode({‘addr’:’池尻4-35-25′})
url = “http://geocode.csis.u-tokyo.ac.jp/cgi-bin/simple_geocode.cgi?charset=UTF8&” + urladr

with urllib.request

元記事を表示

pythonなのか、python3なのか。

## トラブル
python3系をネットからインストールしたはずにも関わらず、ターミナルでバージョンを確認すると「Python 2.7.16」と表示される。(「Python 3.10.5」と表示されて欲しい)

“`console
$ python –version
Python 2.7.16
“`

## 原因
バージョン確認のコマンドが間違っていた。
コンピューターによってはpython2系とpython3系の両方がインストールされていることがあり、その場合はコマンドを以下のように使い分ける必要があるらしい。
 
 python2系:python
 pythom3系:python3

自分のコンピューターにはpython2系がデフォルトでインストールされていたため、pythonコマンドを打つと「Python 2.7.16」と出力されるということだった。
python3系のバージョンを確認したければpython3コマンドを打つと「Python 3.10.5」と出力される。

“`console
$ python –version
Python 2.7.16
$ python

元記事を表示

【Python】SQLAlchemyでMySQLに接続する

今回は、Pythonで簡単にSQLを実行できる`SQLAlchemy`という`O/Rマッパー`を使用し、実際にMySQLとマッピングしてCSVファイルのデータを追加したり、CRUD操作をする方法について実装を行ったので、備忘録として残しておこうと思います。

# 前提
– SQLAlchemyがインストールされていること
– mysql-connector-pythonがインストールされていること

上記モジュールがインストールされていない場合は、pipにてインストールを実行してください。

“`terminal
% pip install SQLAlchemy
% pip install mysql-connector-python
“`

# DBと接続しCSVファイルのデータを追加する
まずは、DBとの接続情報を環境変数として定義します。

## 環境変数の定義
私の場合、`.env`に必要な情報を環境変数として定義し、config.pyで読み込みと定義を行なっています。

ここに`PORT`が必要となる方は、PORTも定義してください。

“`python:config.

元記事を表示

機械学習〜ロジスティック回帰 数学

##数学で躓く

ロジック回帰分析の全て
>https://www.youtube.com/watch?v=mMMzDFttZ8A
>https://qiita.com/matsukura04583/items/0fb73183e4a7a6f06aa5

###疑問1;商の微分公式とは?
商の微分係数の役割;分数の形の数字を簡単に素早く微分。
>https://mathtrain.jp/syonobibun

###疑問2;シグモイド関数について
シグモイド関数の役割はシグモイド関数特有の性質よりデータの概形作成。
不連続だがよく使う関数をなめらかな関数で近似する役割。
*e=ネイピア数 
>https://atarimae.biz/archives/10256#i-2

複利で考えた際に元利に+複利としていき極限値まで求めたもの。
#####シグモイド関数は確率を計算する上で便利。
グラフより上限1で加減が0となっていてX=0の時Y=1/2になる。
軸となるのはこのX=0の時点の値1/2。
これは50%を表していて50%を基準としてプラスに進めば進むほど確率は上がり、マイナスに進めば

元記事を表示

超初心者がe869120さんの【分野別 初中級者が解くべき過去問精選 100 問】をpythonで解いてみた!Part2

https://qiita.com/K-suke99/items/5576cbc476cf11422ef0

の続きです。

ALDS_11_C – 幅優先探索

https://onlinejudge.u-aizu.ac.jp/problems/ALDS1_11_C

“`python:practice.py
from collections import deque

n = int(input())
connected = [[] for _ in range(n+1)]
for _ in range(n):
u,k,*V = map(int,input().split())
connected[u] = V
visited = [-1]*(n+1)
q = deque()
q.append(1)
visited[1] = 0
while q:
now = q.popleft()
for to in connected[now]:
if visited[to] != -1:
continu

元記事を表示

kerasでデータの拡張をする

どうもエンジニアのirohasです。

先日、[kerasを使用して虹ヶ咲学園のキャラクターを画像認識させてみた](https://qiita.com/irohas_gawr/items/c13a59e59d1cde18e5be)の記事において、データ数の少なさから精度があまり芳しくなく、データを増やそうと思い、Data Augmentation(データ拡張)をしたので、
今回は機械学習ライブラリの一つであるkerasを用いた、Data Augmentation(データ拡張)を紹介します。

# 目次
[1.環境](#1-環境)
[2.使用ライブラリ](#2-使用ライブラリ)
[3.データ拡張って何?](#3-データ拡張って何?)
[4.ソースコード](#4-ソースコード)
[5.まとめ](#5-まとめ)

# 1. 環境
vscode
Python 3.9.0

# 2. 使用ライブラリ
##### ・標準ライブラリ
os : ローカルフォルダ用ライブラリ
glob : フォルダ一括取得用ライブラリ

##### ・外部ライブラリ
numpy 1.21.4 : 数値計算ライブラリ

元記事を表示

【Python】TwitterAPIとtweepyでいいねの自動化をしてみた

今回は、検索したツイートに対していいねする処理を自動化するという実装を行いました。
勉強になりつつ楽しめると思うので、参考にしていただけますと幸いです。

# 実装準備
まず、「いいね自動化」を実装するにあたり、前提として、`TwitterAPI`で「プロジェクト」登録を行い、`API_KEY`や`ACCESS_TOKEN`を取得している必要があるので、取得できていない方は、APIの設定から始めてください。

> [Twitter Developers](https://developer.twitter.com/en/portal/projects-and-apps)

# 実装
以下が実装した内容です。
順次、解説します。
“`python:auto_fav_tweet.py
import tweepy

import config

api_key = config.TWEETER_API_KEY
api_secret_key = config.TWEETER_API_SECRET_KEY
access_token = config.TWEETER_ACCESS_TOKEN
a

元記事を表示

【Python】メルフィルタバンクからMFCCまで【特徴量抽出】

本記事では、音声データをMFCC(メル周波数ケプストラム係数)で特徴量抽出する方法を解説します。

ケプストラムとあるように、基本的理解にはケプストラム分析の概念が必要です。そちらの解説記事も書いていますので、ぜひご覧ください。

[【Python】音声の特徴量抽出MFCCの前段階:ケプストラム分析](https://qiita.com/Oka_D/items/cc296b358be340138f2c)
# MFCCの概要
MFCCは次のようにして求めます。
“`
1. 音声をフーリエ変換して周波数領域にする
2. メル尺度で周波数領域を変換し、フィルタバンクで周波数の情報を圧縮(メルフィルタバンク)
3. 対数パワースペクトルに変換
4. 離散コサイン変換し、ケフレンシー領域で低周波数と高周波数に分離
“`

MFCCではメルフィルタバンクとケプストラム分析のそれぞれを理解する必要があります。

## フィルタバンク
**フィルタバンク**とは、入力信号を分解するフィルタのことです。
重要な信号は密に取り、重要でない信号は比較的大雑把に取ります。今回のメルフィルタバンクの例でもそ

元記事を表示

【Python】TwitterAPIとtweepyを使用してツイート自動化を行う方法

よく記事にあがっているようなPythonによるTwitterの投稿でハマった箇所があったので、実装の振り返りをしつつ記事に残しておこうと思います。

# 実装
“`python:add_tweet.py
from pprint import pprint
import tweepy

import config

api_key = config.TWEETER_API_KEY
api_secret_key = config.TWEETER_API_SECRET_KEY
access_token = config.TWEETER_ACCESS_TOKEN
access_secret_token = config.TWEETER_ACCESS_SECRET_TOKEN

def clinet_info():
“””認証情報を返却する関数

Returns:
_type_: Client
“””
client = tweepy.Client(
consumer_key=api_key,

元記事を表示

Codility lesson3 PermMissingElem

Lesson3のPermMissingElemは欠けている数字を当てるというものです。
長さNのリストには1~N+1のいずれかが異なる形で入っている、逆にいうと一つ欠けていることがわかります。
[1,2,4,5]は3ですね。
[1,2,3,4]は5ですね。

さて今回の問題を考える上で、配列の順番を変えても特に問題はありませんよね。
例えば
[3,1,2,4]を[1,2,3,4]にする
[4,5,1,2]を[1,2,4,5]にした方が処理しやすいですよね。
なので今回は前回のlesson2 OddOccurencesInArrayのとき同様に先にソートしてから処理していきます。

アルゴリズムは以下の通りです。
1.順番通りにソートする
2.インデックス番号と比較してインデックス番号に対応している数字が来ていれば次に進む。
3.2の処理を繰り返し行うことでインデックス番号と対応していない数字、つまり欠けている数字の場所に到達するまで行う

コードは以下の通り

def solution(A):
A = sorted(A)
i = 0

元記事を表示

Codility lesson3 FrogJmp

Lesson3のFrogJmpの問題はカエルが登場したり飛んだり文章が無駄に長くなっていますが、要点は至ってシンプルです。
位置XにいるカエルはYに到達するまでに何回ジャンプすれば良いかというものです。

例えばX = 30 Y = 60 一回のジャンプで進む距離D=20だとすれば
最短2回で到達します。

(60-30)//20 = 1に 1を加える

例えばX = 30 Y = 60 一回のジャンプで進む距離D=30だとすれば
最短1回で到達します。

(60-30)//30 = 1

今回はアルゴリズムは説明するまでもなく、コードを見てもらった方が早いと思うので、
コードは以下の通りです。

def solution(X,Y,D):

if (Y – X)%D >= 1:
return (Y – X)//D +1
else:
return (Y – X)//D

さて結果は。。。。?

![スクリーンショット 2022-06-12 0.50.10.png](https://qiita-ima

元記事を表示

Codility lesson2 OddOccurencesInArray

Lesson3のOddOccurencesInArrayの内容はリスト内のペアになっていないものを返すというものです。
例えば、[1,2,3,4,3,2,1]においてペアになっていないものは4だけです。
例えば、[1,1,1,3,1,1,1]においてペアになっていないものは1です。
例えば、[1,1,1,3,3,1,,1]においてペアになっていないものは1です。

さて、ペアでないものを見つける一番はやい方法はなんでしょうか。

それはまずは並び替えるということです。

[1,2,3,4,3,2,1]ならば[1,1,2,2,3,3,4]なので4
[1,1,1,3,1,1,1]ならば[1,1,1,1,1,1,3]なので3
[1,1,1,3,3,1,,1ならば[1,1,1,1,1,3,3]なので1

こうした方が見やすいですよね。

アルゴリズムは以下の通りです。

[アルゴリズム]
1.リストの数字を小さい順に並び替える
2.先頭から順番に、現在の要素と次の要素が等しければ、それがペアとなるので、次のペアを探していく。
3ペアとならないものを見つけたらその数字を返す。

具体的にコード

元記事を表示

OTHERカテゴリの最新記事