Python3関連のことを調べてみた2021年10月03日

Python3関連のことを調べてみた2021年10月03日

プログレスバーを文字列で表現する関数

車輪の再発明。もはや趣味。
printしてもいいし、TkinterのlabelのtextVariableを変えてもいいかも

“`Python
def progressbar(current, max) -> str:
”’
args
current: int/float 現在値
max: int/float 最大値

length:いじれる。表示したい長さに合わせる。
bar:いじれる。好みでどうぞ。今見えてるやつは、プロポーショナルフォントでも使える
”’
ratio = current / max
length = 20
progress = int(ratio * length)
bar = f'[{“■” * progress}{“□” * (length – progress)}]’
percentage = int(ratio * 100)
return f'{bar} {percentage}%’
”’
[■■■■■■■■■■

元記事を表示

python の TypeVar を最もシンプルな例で理解する

python の型ヒント(アノテーション)については、基本的に [公式ドキュメント](https://docs.python.org/ja/3/library/typing.html) に記述されている。しかし、実用的な範囲でのシンプルな例が記載されているため、理解したいこと以外の情報もあり、やや理解しにくいことがある。そのため今回、実用性は度外視し、 `TypeVar` 自体を理解することだけを目的とした情報を残したく、本記事を作成した。なお、記事中の表現は、筆者独自の表現である場合があることはご了承いただきたい。

python のバージョンは 3.9 を想定している。

## TypeVar とは

`TypeVar` とは、「とある決まった型」を表す場合に用いる型変数である。

## TypeVar の使用例

例えば下記のように、引数をそのまま返す関数の定義に使用する。

“`python:use_typevar.py
from typing import TypeVar

T = TypeVar(“T”)

def get_t_arg(arg: T) -> T:

元記事を表示

VS Codeで、Python Extension Loading… が終わらない…

## Phthonが実行できない??

* VisualStudio Codeを使っていると、なぜかPython 機能拡張がいつまで経っても読み込めないときがありました。

Visual Studio | Marketplace
[Visual Studio Code > Programming Languages > Python > Changelog](https://marketplace.visualstudio.com/items/ms-python.python/changelog)

によると、2021.9.3 (20 September 2021)で、
Fix `Python extension loading…` issue for users who have disabled telemetry. (#17447)
と不具合があったが、修正されているのこと、、、

* しかし、この最新バージョンにしてもまだ発生!!

## 機能拡張の再インストール

手順

* 問題のあるPython 機能拡張を削除
* いったん少し古いバージョンのPython 機能拡張を

元記事を表示

都道府県・都市・町情報をテーブル管理したい

# はじめに

都道府県・都市・町情報をサービスなどで管理するには、一般的にはGoogle Maps APIなどの力を借りてなるべく自分たちで実装しなくて済むようにするのが一番だと思います(住所などの情報は、頻繁ではないものの更新されていくものなので)

ただ、自前でテーブルを作ったりしないと検索機能をつくれなかったり、機械学習の特徴量として位置情報を利用したかったりなどの場合にはどうしても必要になるタイミングがあると思います。

# 政府統計の境界データ

[政府統計のe-Stat](https://www.e-stat.go.jp/gis/statmap-search?page=1&type=2&aggregateUnitForBoundary=A&toukeiCode=00200521&toukeiYear=2015&serveyId=A002005212015&datum=2000&coordsys=1&format=shape)というサイトがあり、ここでは各町毎の境界データがダウンロードできます。

今回は東京都全域の境界データをみていきます。

## shapeファイル

元記事を表示

初心者がFlaskのアプリをHerokuでデプロイする

# 概要と目的
 はじめまして、プログラミング初心者です。プログラミングを学習する上で、何か成果物を残すのは大事なことです。なので私は`Python`の学習の成果物として、`Flask`を用いたWebアプリを制作しました。
 制作したWebアプリを公開しようという事で、無料サーバの`Heroku`と`Git`によるリポジトリ操作について学びました。色々なサイトを参考にしたのですが、所々つまづくことがあったので、自分用にまとめた記事を作ることにしました。

### 目的

– Flaskの簡単なアプリを作る
– ローカルな仮想環境でFlaskのアプリを動かす
– HerokuとGitでデプロイする

### 実行環境
– 日時:2021/09/26
– OS:windows10
– Python 3.9
– Flask 2.0.1
– pip 21.2.4

# ① FlaskでWebアプリを作る
 `Flask`と`Python`用の、軽量なウェブアプリケーションフレームワークです。同様のフレームワーク`Django`に比べて軽量で、最小限の機能で1から設計することが可能です。今回はサ

元記事を表示

pythonでcsvを読み込んで辞書型変数に格納

#はじめに
pythonでcsvを読み込み、辞書型の変数に格納するコードです。

######環境
python3.9.6

#CSVの読み込み

######CSVファイル(test.csv)

“`
1,2,3,4
apple,orange,banana,grape
りんご,おれんじ,ばなな,ぐれーぷ
“`

######CSV読み込んで辞書型変数に格納するpythonコード

“`python

import csv

#CSVファイルを開く
with open(“./test.csv”, “r”, encoding=”utf-8″) as csvfile:
#CSVファイルを辞書型で読み込む
f = csv.DictReader(csvfile, delimiter=”,”, doublequote=True, lineterminator=”\r\n”, quotechar='”‘, skipinitialspace=True)
#辞書型で出力
for row in f:
print(row)
“`

######出力結

元記事を表示

Python メソッドから元クラスのインスタンス取得

# 初めに結論
メソッドにselfをつけると元のクラスのインスタンスにアクセスできます.

“`.py
hoge_class = hoge_method.__self__ # メソッドから元のクラスを取得
“`

# 使用場面(というか自分の例)
まず大体こんな感じのクラスを定義します.

“`file2.py
class hoge_class_origin:
def __init__(self):
self.class_variables = None
def variable_checker(self):
print(self.class_variables)
“`
以下の様に関数にメソッドのみを渡した場合,クラスの実体?がスコープ内に無いので安直なクラス名.変数名でのアクセスができません.

“`file1.py
import file2

def hoge_executer(given_method):
# ここでgiven_methodが定義されているhoge_class_instance内のクラス変数にアク

元記事を表示

Raspberry Pi で Grove の 温湿度モジュールを使う

次のページを参考にしました。
[Grove – Temperature&Humidity Sensor Pro(DHT22)](https://wiki.seeedstudio.com/Grove-Temperature_and_Humidity_Sensor_Pro/)

実行時の様子
![IMG_20210930_155528.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/6cd1f29c-b6f3-e4ec-ea48-fde1b02dfb51.jpeg)

必要なライブラリーのインストール

“`bash
curl -sL https://github.com/Seeed-Studio/grove.py/raw/master/install.sh | sudo bash -s –
“`

プログラム

“`py:dht_simpleread.py
#! /usr/bin/python3
import time
import seeed_dht

sensor = seeed_d

元記事を表示

pandasのdatetime計算でハマった件

本記事は私がハマった2件を検証した内容となっておりますが、初歩的ミスだったので
最終的に「そうだよねー」となる結論になっております。

## 1. datetimeの差分を取得する際
取り扱ってる研究用時間データはまぁまぁ膨大なので仮の日付を用いてかつ以下のように記述してあります(※再現性重視)

“`python:test.py
import pandas as pd

a = ‘2200/04/01 23:00:05’
b = ‘2200/04/08 23:00:00’

df = pd.DataFrame([a,b],index=[‘A’, ‘B’], columns=[‘date’])
df[‘date’] = pd.to_datetime(df[‘date’])
B,A = df[‘date’].max(), df[‘date’].min()

(B – A).days #result: 6
“`
あれ。4/8 と4/1って日の差が1週間だから`result: 7`が出力されて欲しかったんだけど… ん?と思い検証。

### 1.の修正
結論としては`「秒単位で計算

元記事を表示

Azure Functions with Pythonの落とし穴

## 経緯

[自作ライブラリを`.python_packages/lib/site-packages`にインストールする方法](https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-reference-python?tabs=azurecli-linux%2Capplication-level#install-local-packages)が紹介されていた。
非公開のPythonライブラリを使用したかったので、この方法を試したが憂き目にあった。

### 環境
以下の環境で進めた。Pythonは3.7.9とする。

“`bat
> func –version
3.0.3568
>pip list | findstr azure-cli
azure-cli 2.28.0
azure-cli-core 2.28.0
azure-cli-telemetry 1.0

元記事を表示

Pythonで1行で複数データを扱う方法

Python3で1行でスペースで分けられた複数の数の和を求めるプログラムです。

“`python3
# coding: utf-8
# 入力
input_line = input()
#数の和の変数を定義
goukei=0
#スペースで仕切って数字を取り出す
for num in input_line.split():
#データを整数型に変換して合計を求める
goukei += int(num)
#合計を標準出力する
print(goukei)

元記事を表示

Pythonでif条件の中で変数への代入も行いたい

この記事では Python3.8 以降の機能である__代入式__を使っています。

# 問題のコード
ある変数の値がNoneでなければ、処理を行いたいケースがよくあるとおもいます。
代入式を用いないで書くと、一度(*1)if文の外で変数を宣言し、(*2)if文の条件に利用し、(*3)if文内の処理に利用する、というコードになります。
if文の中で使いたいのにif文の外で一度変数に格納してから使うというのが、冗長な感じがします。

“`py
user = {‘name’: ‘Taro’, ‘gender’: ‘1’}
name = user.get(‘name’) # …(*1)
if name: # …(*2)
print(name) # …(*3)
“`

# 代入式 x := y を用いる
そんなときは代入式を用いましょう。
プログラミングではざっくり、文⇒返り値無し、式⇒返り値有りと考えられます。
`x := y` の代入式では、代入した値が返ってきます。

“`py
user = {‘name’: ‘Taro’, ‘gender’: ‘1’}
if

元記事を表示

tensorflow画像分類でハマったので対処法をメモ retrain image classifier

## TensorFlow を用いた画像分類

tensorflowを用いた画像分類で花の画像を分類するチュートリアルでてこずったためをメモします。

今回、特にversionがネットの情報と違うだけで、エラーを吐いたためバージョン情報を先に載せておきます。

Version

python 3.7.6
tensorflow 1.15.0
tensorflow-hub 0.12.0
tensorflow-estimator 1.15.1

インストールしたもの

初めにAnaconda環境を構築して、Anaconda prompt(仮想環境)を立ち上げます。
その後、pip install ~を用いてtensorflow(1.15), tensorflow-hubをインストールしました。

:::note warn
ここで、注意しなければならないのがバージョン情報で下記のサイトなどを参考に進めていくと”tensorflowにappが存在しません”というようなエラーが出てしまいます。
:::
https://qiita.com/quotto/items/645b01cf9c3

元記事を表示

Python3: AWS IOT の Device Shadow (botocore)

こちらのプログラムを Botocore で書いてみました。
[Python3: AWS IOT の Device Shadow](https://qiita.com/ekzemplaro/items/5bf3510fb46b36007c2d)

エンドポイントは次のコマンドで調べます。

“`bash
aws iot describe-endpoint –endpoint-type iot:Data-ATS
“`

エンドポイント が次の場合のサンプルです。
>https://abcd6goq68zt4o-ats.iot.ap-northeast-1.amazonaws.com

もの
>sample_sep26

デバイスの状態が OFF であることを通知

“`py:report_off_thing.py
#! /usr/bin/python3
# coding: utf-8
#
# report_off_thing.py
#
# Sep/29/2021
# ——————————————————

元記事を表示

PySide2とPyCharmでGUIツールを作ってみる

# ■ はじめに

Youtube で Cygames さんが期間限定で公開していた Python の動画を見てちょっとやってみたくなって触ってみました。
ひとまずは触りだけ。

# ■ 開発環境

– PyCharm Professional 2021.2.2
– PySide2 5.15.2
– Python 3.7

# ■ PySide2 をインストール

– 1. PyCharm 上で Python3 に対応したプロジェクトを作ります。(ここでは **PySide2Proj** で作ったものとする)
– 2. 「メニューバー」>「ファイル(F)」> 「設定(T) Ctrl+Alt+S」> 「プロジェクト: PySide2Proj」>「Python インタープリター」>「+マーク」を選択。
– 3. `PySide2` と入力しパッケージをインストール。

# ■ 外部ツール設定

PySide2 を使いやすいように外部ツール設定をしておきます。

「メニューバー」>「ファイル(F)」> 「設定(T) Ctrl+Alt+S」> 「ツール」>「外部ツール」>「+マーク」を選択。

元記事を表示

Raspberry Pi で Grove の LCD モジュールを使う (背景色)

こちらのプログラムを改造して、バックライトの色を変えるプログラムを書きました。
[Raspberry Pi で Grove の LCD モジュールを使う](https://qiita.com/ekzemplaro/items/38257ac6a55951b0d99d)

“`py:backlight.py
#! /usr/bin/python3
#
# backlight.py
#
# Sep/29/2021
# ——————————————————————
import sys
import time
import backlight_lib
# ——————————————————————
sys.stderr.write(“*** start ***\n”)
while True:
backlight_lib.setRGB(0xff,0,0)
time.sleep(2)
backlight

元記事を表示

Raspberry Pi で Grove の LCD モジュールを使う

次のページを参考にしました。
[Grove – LCD RGB Backlight](https://wiki.seeedstudio.com/Grove-LCD_RGB_Backlight/#play-with-raspberry-pi)

ベースシールドは次のものを使いました。
[Stackable Shield for Raspberry Pi 2.0](https://www.elecrow.com/wiki/index.php?title=Crowtail-_Stackable_Shield_for_Raspberry_Pi_2.0)

実行時の様子
![IMG_20210929_080733.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/bf72166e-feb2-624c-a4ad-87e9e2cff37a.jpeg)

プログラム

“`py:display_lcd.py
#! /usr/bin/python3
#
# display_lcd.py
#
# ——

元記事を表示

Jupyter Notebookで初期設定すること

環境はWindows10で実行しています。
Macの場合はファイル設定が不要など違いはあると思います。

# デフォルトのパスを設定

## Anacondaプロンプトで設定ファイルの作成

“`
jupyter notebook –generate-config
“`

上記を実行すること下記にファイルが作成されます。

“`
C:\Users\{user_name}\.jupyter\jupyter_notebook_config.py
“`

この`jupyter_notebook_config.py`を変更してきます。

## 設定ファイルの編集

設定ファイルから下記の箇所を探します。

“`
#c.NotebookApp.notebook_dir = ”
“`

このコメントアウトを外してパスを指定してあげます。
その際にraw文字列で指定するように気を付けましょう。

raw文字列は下記のように`r”`で記載することです。

“`
r’C:\Users\{user_name}\.jupyter\jupyter_notebook_config.py’

元記事を表示

機械学習の初心者の僕が困りがちなこと解決法まとめ

最近機械学習を始めたのですが困ったことが多々あった(ある)のでその解決法などを随時書いていこうと思います。
また、こんなことに困ってこう解決した!や私の解決法よりももっと便利なイイ方法があるという方はぜひ教えていただけると幸いです。

**目次**
>1.read_csvのオプション
>2.NaN以外の欠損値の置き換え法
>3.データの中の項目の型変更
>4.実際にテストした際に困った点
>5.データの精度を向上させる

##1.read_csvのオプション
私は今signateで勉強をし始めたのですが、そのデータの形は.tsvでした。
いつも通りの下記のような方法で読み込みをすると

“`python
sample = pd.read_csv(‘train.tsv’)
“`
![スクリーンショット 2021-09-28 18.43.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/764631/aa87ef7e-c9fa-cc5b-63fd-12536bb9aa36.png)
のような形になっ

元記事を表示

Pythonのクラスメソッドで自身の型を返す方法

# 概要
– 自身のインスタンスを返すクラスメソッドを作成する際、下記のように返り値の型をクォーテーションで囲む必要がある

“` Python
@classmethod
def create(cls,
name: str,
age: int
) -> ‘User’:
“`

– これはファイルの先頭で`from __future__ import annotations`を呼ぶことで解消できる

“` Python
from __future__ import annotations
from dataclasses import dataclass

@dataclass
class User:
name: str
name_in_lowercase: str
name_in_uppercase: str
age: int

@classmethod
def create(cls,
name: str,

元記事を表示

OTHERカテゴリの最新記事