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

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

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,

元記事を表示

さっきまで動いてたのに、docker-compose up がうまく行かなくなり “Can’t connect to MySQL server on ‘db’ (115)” と言われた

#エラー
>
root@…….. :/code# python manage.py makemigrations
/usr/local/lib/python3.7/site-packages/django/core/management/commands/makemigrations.py:109: RuntimeWarning: Got an error checking a consistent migration history performed for database connection ‘default’: (2002, “Can’t connect to MySQL server on ‘db’ (115)”)

などと言われ、dbサーバのbashに入ってデータベースの中身を見てみると、、、

“`bash:bash(mysql)
mysql> use django_docker
Database changed
mysql> show tables;
Empty set (0.00 sec)
“`

何もなかった!

#解決法

ということでリセットして

元記事を表示

Python3: AWS IOT の Device Shadow

こちらのスクリプトのいくつかを、Boto3 で書いてみました。
[AWS IOT の Device Shadow](https://qiita.com/ekzemplaro/items/1d6bbc68703aa646380f)

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

“`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/python
# coding: utf-8
#
# report_off_thing.py
#
# Sep/28/2021
# ————————————————————

元記事を表示

Pythonで10進数→N進数変換とN進数→10進数変換

## N進数から10進数への変換
`int()`関数の第2引数に指定した基数から10進数に変換してくれる

“`
print(int(‘100’, 2)) # 4
print(int(‘100’, 3)) # 9
“`
2つ目の引数には`2〜36`までの値を指定しないとエラーとなる

## 10進数からN進数への変換

### 2進数、8進数、16進数への変換

“`
base10 = 10
print(format(base10, ‘b’)) # 1010
print(format(base10, ‘o’)) # 12
print(format(base10, ‘x’)) # a
print(type(format(base10, ‘b’))) #
“`
変換後の型は文字列型である
2進数はbinaryの略で`b`
8進数はoctalの略で`o`
16進数はhexadecimalの略で`x`

### 2進数、8進数、16進数以外への変換
`numpy`をimportして`base_repr関数`を使うと良い

“`
import numpy a

元記事を表示

Tabnetはどのように使えるのか

## はじめに
最近、KaggleでTabnetというニューラルネットワークモデルが流行っていると知りました。
テーブルデータコンペといえばGBDT最強のイメージでしたが、ここでもニューラルネットワークモデルが台頭しつつあるようです。そこで今回は、Tabnetについて

– どんな嬉しさがあるのか
– どのように使うのか

という観点から、論文の要点とリポジトリの使い方について調べてみました。

## Tabnetとは

### 概要
Tabnetは、テーブルデータ向けのニューラルネットワークモデルです。
決定木ベースのモデルの解釈可能性を持ちつつ、 大規模なテーブルデータに対して高精度な学習が可能です。
特徴量の作成を必要としないエンドツーエンドの学習モデルです。

### リファレンス

#### 論文
Tabnetの論文は、Google Cloud AIチームによって発表されました。

https://arxiv.org/abs/1908.07442

Tabnetは[Google Cloud AI Platform の組み込みアルゴリズム](https://cloud.goog

元記事を表示

【pyenv-win】pyenv を使って Anaconda をインストール

## 環境
+ Microsoft Windows 10.0.19042.1165
+ Git 2.33.0.windows.2(コマンドは Git Bash で実行)
+ pyenv 2.64.11

## 現象
pyenv に Anaconda をインストール方法を調べると、`pyenv install -l` でインストールできるバージョンを確認し、`pyenv install anaconda3-5.3.1` のようなコマンドを実行することでインストールできるようだ。しかし、私の環境では `pyenv install -l` を実行しても ‘anaconda’ の文字が見当たらなかった。

## 原因
pyenv-win が Anaconda のインストールをサポートしていないのが原因のようだ。

> kirankotari commented on 25 Jul 2020
we are not supporting this feature yet. Need sometime.([link](https://github.com/pyenv-win/pyenv-win/i

元記事を表示

OTHERカテゴリの最新記事