- 1. Keras/Tensorflow セットアップ for GPU (Kaggle 類似環境作り)
- 2. pandasの使い方
- 3. 備忘録
- 4. 高速にpandasのDataFrameにobjectが含まれているかどうか確認する方法
- 5. [python3 / numpy] np.full_like で初期値としてnp.nanを指定すると、異常な値が出現する
- 6. プログレスバーを文字列で表現する関数
- 7. python の TypeVar を最もシンプルな例で理解する
- 8. VS Codeで、Python Extension Loading… が終わらない…
- 9. 都道府県・都市・町情報をテーブル管理したい
- 10. 初心者がFlaskのアプリをHerokuでデプロイする
- 11. pythonでcsvを読み込んで辞書型変数に格納
- 12. Python メソッドから元クラスのインスタンス取得
- 13. Raspberry Pi で Grove の 温湿度モジュールを使う
- 14. pandasのdatetime計算でハマった件
- 15. Azure Functions with Pythonの落とし穴
- 16. Pythonで1行で複数データを扱う方法
- 17. Pythonでif条件の中で変数への代入も行いたい
- 18. tensorflow画像分類でハマったので対処法をメモ retrain image classifier
- 19. Python3: AWS IOT の Device Shadow (botocore)
- 20. PySide2とPyCharmでGUIツールを作ってみる
Keras/Tensorflow セットアップ for GPU (Kaggle 類似環境作り)
#環境概要
念願の GPU を手に入れたぞ!ということで環境セットアップ##OS+GPU
NVIDIA RTX 3080
Windows10##Software
Tensorflow 2.6
Keras 2.6
Anaconda
Python3.8
CUDA Toolkit 11.2
cuDNN 11.0#参考にした web page
+ [本家 Tensorflow for GPU のインストール手順](https://www.tensorflow.org/install/pip?hl=ja#system-install)
+ [古いバージョンの CUDA @ NVIDIA](https://developer.nvidia.com/cuda-toolkit-archive)
+ [cuDNN SDK](https://developer.nvidia.com/rdp/cudnn-archive)
+ [参考までに @ NVIDIA](https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-wind
pandasの使い方
#1 pandasとは
pandasとは、データ分析用ライブラリです。
pandasで利用できるデータは、表計算ソフトExcelで扱うような表形式のデータです。
pandasを使うと、Excelなどのファイルから表形式のデータを読み込み、集計、データ抽出、
グラフの表示などが行えます。#2 環境
VMware Workstation 15 Playerで作成した仮想マシン(1台)を使用しました。CentOSの版数は下記のとおりです。
“`console:CentOSの版数
[root@server ~]# cat /etc/redhat-release
CentOS Linux release 8.3.2011
“`カーネルの版数は下記のとおりです。
“`console:カーネルの版数
[root@server ~]# uname -r
4.18.0-240.el8.x86_64
“`pythonの版数は下記のとおりです。
“`console:python3の版数
[root@server ~]# python3 –version
Python 3
備忘録
# 概要
Volume0-0029 English Sentencehttps://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0029
# コード
“`
from collections import Counterdef ret_words(str):
ss = str.split(” “)
cs = Counter(ss)
ls = {w: len(w) for w in ss}
return [cs, ls]def hoge(*args):
ret = []
for arg in args:
print(arg)
ret.append(ret_words(arg))
return retprint(hoge(
“Thank you for your mail and your lectures”
))
“`# 実行結果
“`
Thank you for your mail and your lecture
高速にpandasのDataFrameにobjectが含まれているかどうか確認する方法
# 目的
渡されたDataFrameタイプのデータに対して,columnにobjectが含まれているかどうかをなるべく早く確認したい.# 実験コード
結論,3つ目の実装が最速です.“`python
import pandas as pd
import numpy as npdef test(n_rows, n_cols):
X_only_num = pd.DataFrame(np.ones((n_rows, n_cols)))
X_only_cat = pd.DataFrame([[‘a’ for c in range(n_cols)] for r in range(n_rows)])def has_object_columns1(X) -> bool:
return not X.select_dtypes(include=’object’).emptydef has_object_columns2(X) -> bool:
feature_types = X.dtypes
[python3 / numpy] np.full_like で初期値としてnp.nanを指定すると、異常な値が出現する
# Phenomenon (症状)
“`python
>>> import numpy as np
>>> np.full_like([1,2,3], np.nan)
array([-9223372036854775808, -9223372036854775808, -9223372036854775808])
“`げげっ(。ŏ﹏ŏ)
# Resolution (解決策)
## 1. `dtype`も指定してあげる
たとえば`np.float64`を指定してあげる
“`python
>>> import numpy as np
>>> np.full_like([1,2,3], np.nan, dtype=np.float64)
array([nan, nan, nan])
“`## 2. `array_like`に、dtypeがfloatになっている`np.ndarray`を渡す
“`python
>>> import numpy as np
>>> np.full_like(np.array([1.0,2.0,3.0]), np.nan)
array
プログレスバーを文字列で表現する関数
車輪の再発明。もはや趣味。
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 TypeVarT = 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 file2def 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_dhtsensor = seeed_d
pandasのdatetime計算でハマった件
本記事は私がハマった2件を検証した内容となっておりますが、初歩的ミスだったので
最終的に「そうだよねー」となる結論になっております。## 1. datetimeの差分を取得する際
取り扱ってる研究用時間データはまぁまぁ膨大なので仮の日付を用いてかつ以下のように記述してあります(※再現性重視)“`python:test.py
import pandas as pda = ‘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」> 「ツール」>「外部ツール」>「+マーク」を選択。