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

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

covid19-hyogo向けのデータを取得して生成するまで完全自動化したお話

#もくじ
[1.はじまり](#はじまり)
[2.私が作ったスクリプト](#私が作ったスクリプト)
[3.兵庫県のデータ公開状況](#兵庫県のデータ公開状況)
[4.データ形式について](#データ形式について)
[5.データ生成の自動化](データ生成の自動化)
[6.苦労した点等](#苦労した点等)
[7.最後に](#最後に)

##兵庫県 新型コロナウイルスまとめサイト
兵庫県にお住まいの方は、ぜひこれから参考にしていただければ幸いです。(これからもUIの改善等アップデートをしていく所存です。)
https://stop-covid19-hyogo.org

#はじまり
東京都が[新型コロナウイルス対策サイト](https://stopcovid19.metro.tokyo.lg.jp/)をオープンソースで立ち上げた話は有名です。そして、Twitterを見ていると、三重県の高専生が4人でサイトを立ち上げたという話を見て、私も自分の住む兵庫県向けにサイトを立ち上げてみよう…と思っていたら既に他の方が作成を開始していたので、コントリビュートを始めたのがきっかけです。そして、Web開発経

元記事を表示

Click(Python) のサブコマンドをファイルを分割して実装する

Python の Click、結構便利で簡単に CLI ツールが作れて LGTM ですね(← 使い方あってる?)。
その Click を使ってサブコマンドを実装するときに、ファイルを分割して実装するのに少々苦戦したので、そのことについて適当な例を使って実装の流れを書いてみようと思う。
間違いの指摘や、ここもっとこうした方がいいよ等の助言がありましたら、コメント頂けると幸いです。

ちなみに、サブコマンドを複数ファイルに分割して実装しようと思ったのは、「関心事は分離してそれぞれのファイルに分けた方が良いかなぁ」と思ったからである。

## TL;DR

“`py:subcmd.py
@click.command()
def cmd():
pass
“`

“`py:cmd.py
from subcmd import cmd as subcmd

@click.group()
def cmd():
pass

cmd.add_command(subcmd)
“`

## バージョン

* Python: 3.8.0
* Click: 7.0

## サンプルとして実

元記事を表示

Chalice を使って AWS Lambda 上に LINE Bot 用の Webhook を作成する

# はじめに

掲題通りです。
多くの記事では LINE Bot の応答を返すサーバーは Heroku の上に構築されていますが、API Gateway + AWS Lambda を利用してサンプルを構築してみたのでそのメモになります。

## コンテンツ

以下の方法で作成した Chalice の line-bot プロジェクト内で動作を確認。
LINEの設定などで分からない点は、末尾の参考URLなどを参照ください。

“`bash
$ pipenv install –python 3.7
$ pipenv install chalice line-bot-api
$ pipenv run chalice new-project line-api
“`

ここで作成された `app.py` , `requirements.txt` , `.chalice/config.json` を以下の通り修正します。
なお、ソースコードは [line-bot-apiのGithub](https://github.com/line/line-bot-sdk-python) から持ってきた「

元記事を表示

[Python]台風の経路をfoliumを使って地図上に書いてみた

# 記事の内容
子供の頃に台風ってこんなに頻繁に発生してたっけ?とか10月ぐらいに台風って日本に来てたっけ?という漠然とした疑問がありました。
気象庁が公開している台風に関するデータを使ってこのあたりの疑問を解決出来たらないいなと思い、色々やってみました。

# データ取得元
政府が運営しているデータカタログサイトから取得しました。

[データカタログサイト](https://www.data.go.jp/)

[気象予報_天気予報・台風の資料](https://www.data.go.jp/data/dataset/mlit_20140919_0747)
このページの「台風位置表のCSVデータ」を使用します。

この記事ではリンク先に掲載されている2001年から2019年までのCSVデータを使用しました。

# foliumを使って台風の経路を地図上に書いてみる
## 準備
CSVデータのヘッダーが日本語だったので英語に変えました。だいぶ適当です

~~~
year,month,day,hour(UTC),typhoon_no,typhoon_name,rank,latitude,l

元記事を表示

AWS Lambda と連携するマイクロフレームワーク Chalice を使ってみる

# はじめに

Serverless アプリケーションのフレームワークとしては [Serverless Framework](https://serverless.com/) が有名だが、以下の点で個人的なユースケースにちょっと合わないところを感じていた。

– Python で開発したい!
– Serverless Framework 自体は様々な言語の開発にも対応しているが、Node.js/npm ベースであり、これらの知識が多少要求される
– たくさんの言語で対応できているので、悪く言うと情報が散らかっていて情報収集結果の読み替えが少し大変
– JSの場合の解決策は提示されているが、これのPythonの場合は…と考える時間がそこそこあるという経験談から
– マルチプラットフォーム対応は必要ない
– AWS 特化さえしてくれてれば今回は問題ない

そこで改めて情報を調べていると [Chalice](https://github.com/aws/chalice) というマイクロフレームワークがAWS公式のGithubリポジトリから出ているこ

元記事を表示

[Python]Classの第一引数はなぜselfなの?

## はじめに
Pythonでクラスを定義する際,第一引数の命名が “`self“` なのはなぜだろうとずっと疑問に思ったので,調べて書き残しときます.

## 第一引数self以外ではダメ?
結論からするとダメです.[PEP8](https://pep8-ja.readthedocs.io/ja/latest/index.html#id36)(1)に “`インスタンスメソッドのはじめの引数の名前は常に self を使ってください。“`
と定義されています.ただし,動作上なら “`self“` 以外でもきちんと動きます.例は[ここ](https://www.geeksforgeeks.org/self-in-python-class/)(2)を参考にしてます.

“`python
class Hoge():
def __init__(self_inplace_hoge, string):
self_inplace_hoge.string = string
print(‘self_inplace_hoge: ‘, self_inpla

元記事を表示

Pythonの文字列から時間計算

## 2時刻(HH:MM:SS)の差分を計算するメソッド

“`python

# 時間計測関数
def time2second(timestr):
timelist = timestr.split(“:”)
timelist = [int(i) for i in timelist]
second = timelist[0]*3600 + timelist[1]*60 + timelist[2]
return second

def calc_timediff(t1, t2):
# 秒数算出
t1second = time2second(t1)
t2second = time2second(t2)
# 秒数差算出
timediff = abs(t2second – t1second)
return timediff

t1 = ’11:27:48′ # 11時間27分48秒
t2 = ’11:37:04′ # 11時間37分4秒

diffsecond = calc_timediff(t1, t2)
tp

元記事を表示

IBM Watson Speech to Text API を使ってみた (Python)

## 経緯
PythonからIBMのAI、Watsonに音声データを送信して音声認識( Speech to Text )をしていきます。
API 初心者向けです。

## 環境
Macbook: MacOS Mojave
Python: Python 3.8.0

## 前提
Python インストール済
IBM Cloud アカウントを取得済 (アカウント作成は[こちら](https://www.ibm.com/watson)から。)

## インストール
ターミナル上、または python notebook 上で以下のコマンドを実行。

“`
$ pip install “watson-developer-cloud>=1.4.0”
“`

## 資格情報の確認
[IBM Cloud のサイト]((https://cloud.ibm.com/login))で Speech To Text を選択すると、マイアカウントから資格情報を確認出来るようになります。
API 鍵と URL をコピーし、以下のコード([こちらのコード](https://qiita.com/white0221

元記事を表示

トラブったときに参照した記事一覧:Pytnon編

# この記事の目的

開発時にトラブってググったけど、再発時に忘れてるということが多いのでトラブルごとに解決に役立った記事をまとめておく

## DB接続

**カーソル処理をWith句でまとめる**
参照先:[Python+MySQL でコネクションやカーソルと with 文](https://qiita.com/umezawatakeshi/items/6c3483ea0e082f2d8926)

“`python
from contextlib import closing
with closing(conn.cursor()) as cursor:
cursor.execute(“SELECT * FROM table”)
rows = cursor.fetchall()

“`

元記事を表示

Macの仮想環境上でaws-cliが実行できない時の解決方法(Python3.8インストール後)

## 経緯
pythonの仮想環境上で、aws-cliを使用しようと公式のコマンドを実行しようとしても上手くできなかったので、その解決方法の備忘録。
設定を色々いじってもダメだったので全部消してから再インストールしてみました。(2020/03)

## 仕様
Macbook: MacOS Mojave
Python: Python 3.8.0

## aws-cliをインストール
公式に従い、以下を実行

“`
curl “https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip” -o “awscliv2.zip”
unzip awscliv2.zip
sudo ./aws/install
“`

しかし、“`$ aws –version“` でバージョン確認したところエラー発生
> cannot execute binary file

## デバッグ
色々試したものの、どれもうまくいかなかったので一度仕様してないファイルはきっちり消すため
“`$ rm ‘/usr/local/bin/aws’“`
“`$ r

元記事を表示

Kaggle Titanic data set – Top 2% guide (Part 05) – Final

*本記事は @qualitia_cdevの中の一人、@nuwanさんに作成して頂きました。
*This article is written by @nuwan a member of @qualitia_cdev.

## Table of contents
1. [Kaggle Titanic data set – Top 2% guide (Part 01)](https://qiita.com/qualitia_cdev/items/c36f3cefe55501ae3122)
2. [Kaggle Titanic data set – Top 2% guide (Part 02)](https://qiita.com/qualitia_cdev/items/093ec0bba76f2a1ad2ab)
3. [Kaggle Titanic data set – Top 2% guide (Part 03)](https://qiita.com/qualitia_cdev/items/b5cf360c7c46b05b8343)
4. [Kaggle Titanic data set

元記事を表示

フィボナッチ数列(今更聞けない)

#はじめに
学部二年の時に動的計画法を学びました。
ただ、その知識も使わないとどんどん忘れていきます。
そんな基本的なところを踏まえているフィボナッチ数列に触れ、思い出すためにこちらの記事を書かせていただきます。

# フィボナッチ数列
フィボナッチ数列とは

“`math
\begin{align}
F_0 = 0 \quad \quad \quad \quad \quad \quad \quad \\
F_1 = 1 \quad \quad \quad \quad \quad \quad \quad \\
F_n = F_{n-1} + F_{n-2} \quad (n > 2)\\
\end{align}
“`
で表される数式です。

こちらプログラミングで特にはどのようにすればよろしいのでしょうか。

##愚直に考える
“`fib.py
import time

def fib_stupid(n):
if(n == 0):
return 0
elif(n == 1):
return 1
else:

元記事を表示

pythonのlambda式って・・・

デコレータとしても使えるのかよ

“`python
b = lambda func: lambda *args, **kwargs: (print(“a”), func(*args, **kwargs), print(“c”))

@b
def a():
print(“b”)

“`

おもろ

元記事を表示

scipy.optimize.minimize を使ったGPS測位計算みたいな最適化計算の動作確認

ここでは、GPSなどの測位計算の基礎となっている計算を、scipy のOptimizer(最適化の計算を行うライブラリ) を使って計算してみます。

### 背景

おじさんは今まで、自分で目的関数を設定すると、それを解くための計算式は紙と鉛筆でしこしこ計算して導出していました。しかし昨今は、深層学習もそうであるように、計算式を自分で設定しなくても、データを与えたり、目的関数を与えるだけで最適化の計算をしてくれるライブラリが多く利用できます。ここでは、目的関数(誤差の関数)がわかっている場合の最適化を扱います。

実際に、ここでは目的関数“`objective“` を定義して、

“`python

def objective(x):

return val
“`
これを最小化する計算は、初期条件“`x0“`を与えれば、以下の一行で行えます。

“`python
from scipy.optimize import minimize
result = minimize(objective, x0=x0, constraints=())
“`

#

元記事を表示

PySimpleGUIで画像処理ビューアーを作る

この記事を読んでできるものは以下の通りです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11002/bb62d6cd-a5f2-c66a-4f9f-a8b596587e37.png)

– 画像を選択して表示するビューアー
– パラメータを渡して画像処理を行う
– 画像処理した画像を表示する

PySimPleGUIの基本的な説明に関しては、[Tkinterを使うのであればPySimpleGUIを使ってみたらという話](https://qiita.com/dario_okazaki/items/656de21cab5c81cabe59)を参考にしてください
# 検証環境
– windows10
– macOS(catalina)
– Python3.7
– ライブラリー
– tkinter
– PySimpleGUI
– Pillow

# きっかけ
![image.png](https://qiita-image-store.s3.ap-northeas

元記事を表示

Python初心者がエナジードリンクあるあるをコード化してみた

エナジードリンクは体への負担が大きいという事を伝えたい…
それだけのためにお題にしました。(クラスと呼び出しをファイル分けて書いていないのは許してください)

“`python
import sys

class Monena:
def __init__(self):
self.physical = 50
self.mental = 50
self.destruction = False
self.physical_recovery = 0
self.mental_recovery = 0

def status_check(self):
print(‘体力は’ + str(self.physical))
print(‘気力は’ + str(self.mental))

if self.physical < 0 or self.mental < 0: self.destruction = True

元記事を表示

Mcomixの画像キャシュ効率化

#はじめに

mcomixは漫画等が非常に読みやすいもののpython2であること、そして画像一時ファイルが/tmp以下に作られてしまいHDDアクセスが著しい。
そこで、python3ベースでforkしているmcomixに手を加えて画像キャシュの効率化を計った。

#環境
Linux Mint 19.3(おそらく他のものでディストリビューションでも問題ない)
git
python 3以上
memory-tempfile2.3.2以上(公式web: https://pypi.org/project/memory-tempfile/)
他はgitのREADME.rst参照

#ソースの取得
gitにてソースを自分の作業ディレクトリに移行する。https://github.com/mimaburao/mcomix3.git

“`
$git clone https://github.com/mimaburao/mcomix3.git
“`

#ライブラリのインストール
README.rstを参照して必要なライブラリをインストール後、memory-tempfileをインストールする。

`

元記事を表示

AWS Amazon Linux2 で Django 2.2以降の環境を構築する

# 概要

 この記事は初心者の自分がRESTful なAPIとswiftでiPhone向けのクーポン配信サービスを開発した手順を順番に記事にしています。技術要素を1つずつ調べながら実装したため、とても遠回りな実装となっています。

前回の [Djangoで画像を配信できるwebAPIを作る](https://qiita.com/Ajyarimochi/items/b7278c357b2ffca183b5) で実装したAPIを外部のサーバへデプロイし、パグリックな環境からAPIを利用できる状態にします。

作業は

1. クラウドのインスタンスを立てて必要なソフトやパッケージをインストール
2. RestAPIのアプリをデプロイ

になります。この記事では「1. クラウドのインスタンスを立てて必要なソフトやパッケージをインストール」を纏めます。

### 構成

 今回はAmazonのEC2を使うことにしました。OSはAmazon Linux 2 を選びました。構築に失敗したり環境が合わなかったらインスタンスごと作り直せば良いと考えたので、docker等のコンテナは使わず、OSに直接イ

元記事を表示

Pythonを使ったDigest認証の設定@Lambda

# はじめに
Digest認証について検索してもほとんど情報がなかったので [Pythonを使ったBasic認証の設定@Lambda](https://qiita.com/ijufumi/items/7a141a6528a28f180fb1) の続編として書いてみた。
Digest認証自体ほとんど触ったことがなく、その仕組みを勉強するのも兼ねて。

# コード
“`python
import os
import ctypes
import json
import base64
import time
import hashlib
import copy
from Crypto.Cipher import AES

accounts = [
{
“user”: “user1”,
“pass”: “pass1”
},
{
“user”: “user2”,
“pass”: “pass2”
}
]

realm = “sample@test.com”
qop = “auth”
# Basi

元記事を表示

(Django) django-extra-viewsのUpdateWithInlinesViewで、条件によってInline Formを変える

Djangoでインラインフォームを簡単に実装できる[django-extra-views](https://django-extra-views.readthedocs.io/en/latest/index.html)。

ただたインラインフォームを使うだけだったら、view.pyに

“`python
from extra_views import UpdateWithInlinesView, InlineFormSetFactory

class PostUpdateInlineFormSet(InlineFormSetFactory):
model = Author
fields = (‘name’,)
factory_kwargs = {‘extra’: 0,’can_order’: False, ‘can_delete’: False}

class PostUpdate(UpdateWithInlinesView):
model = Post
fields = (‘title’,)
template_name = ‘post/post_detail.html’

元記事を表示

OTHERカテゴリの最新記事