Python関連のことを調べてみた2020年12月27日

Python関連のことを調べてみた2020年12月27日
目次

データをインタラクティブに可視化する方法

## データをインタラクティブに可視化できるソフト
 調べたので、メモ代わりのQiita投稿です。

### Dash(Plotly)
 DashというのはPlotlyというライブラリを使ったWebのプラットフォームです。Plotlyに関しては[[Python] Plotlyでぐりぐり動かせるグラフを作る](https://qiita.com/inoory/items/12028af62018bf367722)を参照ください。

 Dashに関する記事は以下参照ください。

[Jupyter上でDashを使えるjupyter_dash](https://qiita.com/OgawaHideyuki/items/725f4ffd93ffb0d30b6c)

[なぜデータをインタラクティブに可視化したいのか?](https://qiita.com/OgawaHideyuki/items/db936fb9be25bfcbb856)

[DXの思ったところ](https://www.mazarimono.net/entry/2020/10/31/dx)

[PlotlyとDashの本を共著で

元記事を表示

ふるさと納税 ワンストップ特例制度の寄付金税額控除に係る申告特例申請書をPythonで記入する

# ふるさと納税 ワンストップ特例制度の寄付金税額控除に係る申告特例申請書をPythonで記入する
ふるさと納税ワンストップ特例制度を使う場合の申請書は1/10必着です。
手書きで記入するのが大変だったので、配布されているpdfに必要項目を記入するスクリプトを作成しました。

google Colaboratory で動かしています。

## ライブラリの準備
“`Python
# pdf編集に必要なライブラリ
!pip install PyPDF2 reportlab
# 日本語をpdfに書き込むためのフォント
!apt-get -y -q install fonts-ipaexfont

import io
from PyPDF2 import PdfFileWriter
from reportlab.lib.colors import Color
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
from reportlab.pdfbase

元記事を表示

[Python] pytest-mock使い方メモ

# インストール

poetryを使っていれば簡単です。

“`console
poetry add -D pytest-mock
“`

使っていなくても簡単です。けれど、poetryのほうがおすすめです。

““console:
pip install pytest-mock
“`

# テストの書き方

テストメソッドの引数として`mocker`を指定します。

“`python
class MyClassTests:
def test_something(self, mocker):
pass
“`

# モックの作り方

[モック – Mock](https://docs.python.org/ja/3/library/unittest.mock.html#the-mock-class)を作るには、`mocker.Mock`を使ってインスタンスを生成するやり方と、`mocker.patch`を使ってダイナミックにMockインスタンスに置き換えていくやり方があります。

題材として、このようなモジュールがあったとします。

“`
exmo

元記事を表示

Azure Machine Learningを使って実験管理とモデル管理をしつつ機械学習モデル開発をする話

# はじめに

Azure Machine Learning という機械学習周りのかなり広い範囲をカバーするサービスがあります。

Azure Machine Learning があれば、データセット管理からモデルの開発、実験と検証、デプロイまで、機械学習モデルの開発に必要なほぼほぼ全ての工程をこなすことができます。

しかし、使い慣れてる上に魔改造を繰り返して自分に最適化した開発環境が既にあるというのに、わざわざ新しい環境に一気に切り替えるのもあまり良い気持ちがしません。

今回は Azure Machine Learning の SDK を使い、その機能の一部、実験管理とモデル管理部分のみを既存の機械学習モデル開発環境に組み入れてみようと思います。

# 環境

## これまで

機械学習用に作ったGPU搭載のLinux機にJupyterLab環境を用意し、メインPCから接続して使っていました。

コード管理こそある程度Githubを活用していますが、恥ずかしながら、実験管理については面倒でやっておらず、結局ハイパラコメント&ノートブックコピー&ファイル名へのハイパラ挿入で実験管理

元記事を表示

python テキスト読み上げ (pyttsx3)

# pyttsx3の理解を深める。
pyttsx3 はpythonのテキスト読み上げ変換ライブラリ。
題材はボディービルの掛け声にして勉強。
興味があるものを題材にした方が意欲がわく。
#### 参考
https://pypi.org/project/pyttsx3/

【2020年最新版】ボディビルかけ声まとめました【おもろすぎw】


## 目次
1.install と import
2.使用法
3.調整
4.使ってみる(ボディービルの掛け声)
## 1.install と import
“`python:install import
pip install pyttsx3
import pyttsx3
“`
## 2.使用法
“`python:基本形
engine = pyttsx3.init()
engine.say(“切れてるよ”) #出力したい言葉
engine.runAndWait()
“`
## 3.調整(速度:rate と音量:volume)
“`python:調整
engine = pyttsx3.init()

#rate デ

元記事を表示

Pixel4のカメラで学ぶDepth map-4(pre-process最終回)

#はじめに
この記事は[Note](https://note.com/sv_engineer/m/m98195ca0c6e1)で連載している記事で扱っているCode部分のみを切り出しています。技術背景等にご興味がある方はNoteの記事の方をご参照ください。
 今回は前処理部分の最終回となります。今まで[Dark shading補正](https://qiita.com/BOPsemi/items/37f5cb253cfc26dd7161)及び[画像修正処理](https://qiita.com/BOPsemi/items/afb47ad0565237593ba4)で下準備ができたので、これらを統合し、Pre-process部分を完成させます。
#Enum定義
 Global定数として使用する値を先に定義しておきます。画像サイズやプロジェクトのフォルダー関連情報を一箇所に集めておき管理しやすくするのが目的です。

“`python:parameter.py
class ProjectFolder(Enum):
“”” Define project folders
TOP

元記事を表示

BitMEXから入手したBTCのTradeデータを、PyTorchを使用してLSTMで予測を試みるも、勾配消失問題?によると思われるNaN問題等に挫折。気を取り直して、別売買ストラテジでバックテストを試してみた!

# 表題
BitMEXから入手したBTCのTradeデータを、PyTorchを使用してLSTMで予測を試みるも、勾配消失問題?によると思われるNaN問題等に挫折。気を取り直して、別売買ストラテジでバックテストを試してみた!

# 背景
機械学習及び、深層学習等を活用した、システムまたはソリューションを開発するスキル習得のために、まずはPythonを修学しました。
その集大成として、昨今話題の仮想通貨の価格変動のデータを取得し、分析してストラテジを検証するまでの流れを一通りやってみた結果を纏めた記事です。

# 何故PyTorch?何故BTC?
今後DeepLearningのフレームワークを活用していく中で、TnsorFlowは若干枯れている感がありました。しかし、最近PyTorchが話題になることが多かった事と、全く触ったことがなかったため、腰を据えていじって見たいと思いました。
BTC関連はこれから技術革新が進むと思った事と、APIが充実していることもあり、色々と試したりデータを入手し易いと思い選択しました。

# 結論、残項目
1. 教師強制は難しく、今のモデルだと推論が収束しな

元記事を表示

Pythonで素数生成プログラムを作ってみた2

# WANTED:

より良い方法があればぜひ教えてください…!

# 前回
[Pythonで素数生成プログラムを作ってみた](https://qiita.com/okazakik/items/194064ace4e45c42d7a8)

# 前回からの改善点
## 改善1

前回の記事で

– `all`や`any`のメソッドを使うと良い
– 関数化すると良い

とコメントをいただきました。

“`python

import time

def primes_up_to_(upper_limit): # 関数化
if upper_limit < 2: return [] primes_list = [2] # このリストに素数を保存していく、偶数は2だけが素数 for integer in range(3, upper_limit + 1, 2): # 3以上の奇数に対して、 if all(integer

元記事を表示

3. Pythonによる自然言語処理 5-1. 感情分析の考え方[AFINN-111]

* ある文書を一括りにして性格づけする手法があります。文書を構成している単語に付与された属性をもとに、好き・嫌い、肯定的・否定的などの判定をするものです。
* それには元となる辞書が必要になりますが、**英単語の感情値辞書 [AFINN-111](https://www.npmjs.com/package/afinn-111)** には収録数 2,477語のそれぞれに感情値として-4から4までの整数がふられています。

#⑴ AFINN-111 の取得
* [AFINN-111](https://raw.githubusercontent.com/fnielsen/afinn/master/afinn/data/AFINN-111.txt)を読み込んでデータフレーム `afn` とします。

“`python
import pandas as pd

afn = pd.read_csv(r’https://raw.githubusercontent.com/fnielsen/afinn/master/afinn/data/AFINN-111.txt’,

元記事を表示

Ubuntu 20.04 で pyenv を使用して Python を導入する

本記事では、Ubuntu 20.04 上に [pyenv](https://github.com/pyenv/pyenv) を使用して Python を導入する手順をまとめます。

# 注意

– そもそも pyenv が必要なのか確認しましょう。pyenv で期待通りに動作する Python を導入するのは簡単ではありません。(私は 1 時間くらいネットをさまよいました。)
– ただ Python が欲しいだけの方は、環境構築で苦労したくなければ OS 標準のパッケージ(Ubuntu なら `sudo apt install python3-pip`)や [Anaconda](https://www.anaconda.com/) などに頼ることをおススメします。
– 個人的に、pyenv は環境構築で困ったときにネットで対応策を探す面倒を受け入れられる人でないと使えないと思っています。正しく導入できれば便利なんですけどね…。
– 下記の手順の一部は、Ubuntu 20.04 に依存しています。Ubuntu 18.04 にすら対応していません。
– 一応、該当箇所には Ub

元記事を表示

Pythonで素数生成プログラムを作ってみた

# 発想

ある自然数について、それより小さい素数で割り切れなければ、その自然数は素数である。

という発想でプログラムを書いてみました。

あるリストを用意しておいて、素数をつぎつぎとそのリストに保存していきました。

# コード

“`python
import time

primes_list = [] # このリストに素数を保存していく
upper_lim = 10000 # テキトーな数を設定
start_time = time.time() # 開始時刻を記録

for integer in range(2, upper_lim + 1, 1): # 2-10000の整数に対して、
if len(primes_list) < 1 : # primes_listが空だったら、 primes_list.append(integer) # primes_listにinteger(=2)を追加する else:

元記事を表示

NumPyの1次元配列の要素数を2のべき乗にする(0埋め)

(※より効率的な方法を求めています)

高速フーリエ変換をする下準備として、配列の要素数を2のべき乗にしたいときがあります。

要素数を2のべき乗に切り上げ、後ろを0で埋める方法を書いておきます。

いくつか関数を定義します。また、各関数の引数に対してチェックすべきこともあるので、そちらについても適宜記し、本記事の最後に例外`raise`を含めたものをまとめます。

## 正の整数を2のべき乗に切り上げ

まずは任意の正の整数を2のべき乗に切り上げる関数を定義します。(負数のチェックは省きます)

“`python
import numpy as np

def round_pow2(x :int) -> int:
“””xを2のべき乗に切り上げる

60 -> 64
40000 -> 65536
“””

n = 1
while n < x: n <<= 1 return n ``` ```python print(round_pow2(1000)) # => 1024
“`

この関数

元記事を表示

PyMySQLでBulk Updateをする方法と注意点【Python】

# 結論

* INSERT … ON DUPLICATE KEY UPDATE 構文の場合はexecutemanyを使う。
* ELT&FIELDでのUpdateをする場合はプリペアドステートメントでパラメータをセットする。

# INSERT … ON DUPLICATE KEY UPDATE 構文

`VALUES`などの一度にデータを挿入するクエリでは`executemany`メソッドを使うことができます。

“`python
conn = pymysql.connect(
mysql_endpoint,
user=username,
passwd=password,
db=dbname
)

def bulk_insert_and_update_users():
prepared_statement = [
[
1, # id
‘Qiita太郎’, # name
20 # age
],
[

元記事を表示

GCPの永久無料枠でデータ蓄積

# 1.GCPの永久無料枠などで安価に継続的なデータ取得ができる
GCP(Google Cloud Platform)には最初の3か月間利用できる無料枠のほかにリージョンやリソースに制限があるとはいえ、永久的に無料でサーバーを利用することができます。
##### Google Compute Engine
1 f1-micro インスタンス(バージニア州北部 [us-east4] を除く米国リージョンのみ)
30 GB の HDD(期間合計)、5 GB のスナップショット(期間合計)
1 GB の北米から全リージョン宛ての下りネットワーク(中国とオーストラリアを除く)
##### Google Cloud Storage
5 GB の Regional Storage(バージニア州北部 [us-east4] を除く米国リージョンのみ)
5,000 回のクラス A オペレーション
50,000 回のクラス B オペレーション
1 GB の北米から全リージョン宛ての下りネットワーク

この他にも利用できるサービスがありますが、今回はPythonを使ってスクレイピングしてクラウドストレージに

元記事を表示

discord.pyでカスタムprefixを実装しよう!

**この記事はdiscord.py commandワークフレームを使用している方向けです。**

そういえば知ってますか?
この記事はDiscord Botアドカレの7日目の記事らしいんです。
~~もうクリスマスですね、、~~
クリスマスも終わってますね、、

# 何それ美味しいの
いわゆるカスタムprefixとは、botは通常どのサーバーでもprefixが変わらないのに対して、サーバーごとにprefixを動的に設定できる機能のことを指します。
botが多数導入されていて、prefixが被ってしまう場合に割と有用です。

## 実装方法
commands.Botのcommand_prefixは通常、文字列やstrのlistで渡しますが、`commands.Bot`, `discord.Message`を引数に取る**関数**を渡すこともできます。
この仕様を用いてprefixを動的に設定していきます。

## 保存方法
さて、prefixをどう保存するかですが、.jsonファイルやデータベースを用いるのもいいですが、今回はよりお手軽にするためにニックネームに保存したいと思います。`[h

元記事を表示

EC2(Amazon Linux)にpyenvをインストール

# ECにpyenvをインストールする際に何点かつまずいたのでメモ

“`shell
# gitをインストール
yum install git
# pyenvをクローン
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
# 環境変数に追加
echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.zshrc
echo ‘export PATH=”$PYENV_ROOT/bin:$PATH”‘ >> ~/.zshrc
echo -e ‘if command -v pyenv 1>/dev/null 2>&1; then\n eval “$(pyenv init -)”\nfi’ >> ~/.zshrc
exec “$SHELL”
# 依存ソフトウェアをインストール
sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi

元記事を表示

著書「python で作る対話システム」の天気予報ボットを参考に公式ラインに天気予報させてみた。

#pythonで作る対話システムに書かれた内容と変えた点
・XMLではなくSQLite3を使って状態遷移をさせた

#ポイント
・本のコードをそのまま公式ラインに使用しようとすると遷移情報の保持が出来なかったため、SQLite3を使用した。

#次に目指すもの
「大阪じゃなくて」のように入力を取り消すことが出来るようにする。
pythonで作る対話システムの非タスク編へ

#プログラムの構造
Image from Gyazo

#下記:天気予報公式ラインのコード

“`python:weather_system.py
import sys
from PySide2 import QtCore, QtScxml
import requests
import json
from dat

元記事を表示

日本語のストップワードを削除するモジュールをpiplに上げたのでその共有

自然言語処理のアドベントカレンダーが埋まっていなかったので、僭越ながら最近自分で書いて使っている形態素解析済みの単語をリストとして持つ文書のリストからストップワードを除去するというプログラムをpipl(pip)に登録して皆さんに共有したいと思います。

# はじめに

もしかすると、すでに便利なライブラリがあるのかもしれませんが、普段使っているscikit-learnには英語のストップワードを除去する機能はあるけど日本語はないです。

なのでいつも自分で実装しているのですが、だったらpyplに登録してpipでインストールすれば楽なんじゃないのかと思った次第です。

いや、別に大したコードじゃないんでその都度書けばいいんですけど、十数行にはなるのでもしpipで公開したら使ってくれる人いるのかもしれないと思いました。

普通にpythonでlistを展開して、ストップワードのリストと照らし合わせて削除するだけのコードなので、実行速度が速くなるみたいな機能はないです。

ただ、今日はちょっと暇だったので品詞別にストップワードのリストの中身を変える機能を搭載させました。

というのも、文章の特

元記事を表示

[Python / DynamoDB / boto3] 試してみた操作一覧

# 概要

**なるべく行数や文字数を最小限に抑え**つつ、PythonからDynamoDBを操作する方法を網羅する(したい)記事

– 理由
**いちいちドキュメント読みたくない**←
**他の人の記事の中から必要な情報を毎回探し出すのも面倒**←←←(ひどい)

実際に試したものから書いていくぞ( \*˙︶˙\*)وグッ!

# 操作一覧

“`python:全操作に共通する事前準備
import boto3
from boto3.dynamodb.conditions import Attr, Key

# region_name には自分のリージョンの名前を書いてね
dynamodb = boto3.resource(‘dynamodb’, region_name=’us-east-2′)
“`

## 1. create_table() … テーブル作成

“`python:テーブル作成
table_name = ‘hoge_table’

table = dynamodb.create_table(
TableName = table_name,

元記事を表示

[エラー] The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimension 0

# The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimension 0

## [忙しい人のための解決策]

“`python
#後ろにconvert(‘RGB)をつけてchannels数を3に変更する
input_image = Image.open(filename).convert(‘RGB’)
“`

## [原因] 入力された画像のchannel数が4であるために3に戻してあげる必要がある。

<該当コード>

“`python
from torchvision import transforms

input_image = Image.open(‘test.png’) #ここが問題

preprocess = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
t

元記事を表示

OTHERカテゴリの最新記事