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

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

Anaconda + Diangoを連携

# Anaconda + Diangoを連携

この記事では、Anaconda + Diangoを連携させLINEのBOTを作成します。かなりめんどくさいのでできるならやらないほうがいいです笑

環境を作成するところから書いていきます、それ以前の基本的なUbuntuの設定については済ませておいてください。

# 環境作成

## Apacheの環境作成

Apacheの環境を作成します。必要なものをインストール

sudo apt-get install apache2 apache2-bin apache2-dev

## Anaconda のインストール

つぎにAnacondaをインストールします。

wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh

sudo bash Anaconda3-2020.02-Linux-x86_64.sh

案内に従ってインストールしてください。(condaも認識するように)

次にAnacondaの設定をしていきます。

元記事を表示

並列化

“`py
import logging
import threading
import time

logging.basicConfig(level=logging.DEBUG, format=’%(threadName)s: %(message)s’)

def worker1():
logging.debug(‘start’)
time.sleep(5)
logging.debug(‘end’)

def worker2(x, y=1):
logging.debug(‘start’)
logging.debug(x)
logging.debug(y)
time.sleep(2)
logging.debug(‘end’)

if __name__ == ‘__main__’:
t1 = threading.Thread(name=’rename worker’, target=worker1)
t1.setDaemon(True)
t2 = threading.Thread(targe

元記事を表示

コロナ患者数が都が確保してる病床数超えたから自宅療養する人が増えるだろうから一人で不安だしなんかあった時の為に助けを求めるボット作った。【説明編】

#はじめに
[この記事](https://www.google.co.jp/amp/s/www.jiji.com/amp/article%3fk=2020040400181&g=soc)を読んで、とうとうコロナウイルス感染患者数が東京都の確保した病床数を超えて、自宅療養が増えるみたいなので作りました。

とりあえずテストで公開なのでLINEは一旦無料プランなのですが、利用者が万が一増えたら有料にしようかなと思ってます。
LINEプッシュ代が怖いけれど・・・。

とりあえず[このボット](https://lin.ee/nuBNXt0)をシェア
![775sszex.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56585/38bcccb1-a156-24d1-5502-aa0083c6ed70.png)

今回は簡単な説明

#メニュー

友達追加をするとデフォルトで下のようなメニューがセットされていますので、これの説明を書きます。
![richmenu_1585813023461.jpg](https:

元記事を表示

Cloud9にPython+OpenCVの環境を構築する

AWS Cloud9にPython+OpenCVの開発環境を作りたい場合の環境構築手順です。
特に、各種インストールの部分が面倒だったのでまとめておきます。(ベストな方法かはわかりません、すみません。)

## EC2の作成
私は`EC2 instance type:t3.small`で作成しましたが、任意のインスタンスタイプを選んで作成してください。

## Cloud9インスタンスのボリュームを拡張する
t3.smallのデフォルトのボリュームは10GiBです。
これだと色々とインストールしている段階で容量が足りなくなるので、容量を拡張します。(容量が足りなくなるとインストール時に`No space left on device`)と表示されます。
拡張手順は以下の記事を参照してください。
https://qiita.com/ktrkmk/items/8cf1e100da2e717f3be2
私は一旦30GiBまで拡張しました。

## homebrewのインストール
以下のコマンドでインストールします。

“`
$ sh -c “$(curl -fsSL https://raw

元記事を表示

Windowsエポック値をpythonで日付変換する

メモ(後で整理)

Windowsエポック値は、1年1月1日からの1テック単位の積み上げ。
Pythonでは、1970年1月1日を起点として1秒単位の積み上げ。

from datetime import datetime as dt

a = ((Windowsエポック値/10000000*10000000)-621355968000000000)/10000000
date = dt.fromtimestamp(a)

元記事を表示

これを見ればPythonの内包表記を完全に理解できる

内包表記とは。
一応、内包表記って何??という方に簡単に例を示します。

“`py3
n = 6
a = []
for i in range(n):
a.append(i)

b = [i for i in range(n)]

print(a == b) # True
“`

これはとても簡単な例ですが、まあなんとなくどんなものかはわかったと思います。(内部処理はまだ理解できていなくて良いです。)
aとbは、結果は同じものになっていますが、具体的にどんな処理を行っているのかを説明していきましょう。

前者は、
1. まず空のリスト(可変長オブジェクト)を生成してaという変数に代入します。
2. rangeオブジェクトを生成します。
3. 2のオブジェクトから各値を取り出し、iという変数に代入します。
4. iを1で作成したリストにappendしていきます。(3, 4を繰り返します。)

後者は
1. まず空のリスト(可変長オブジェクト)を生成します。(この中で行われるiterationの結果を格納していくための箱です)
2. rangeオブジェクトを生成します。
3. 2

元記事を表示

Pythonでアルゴリズム(セグメント木)(実践)

#はじめに
 普段はググってセグ木を貼るだけでしたが、コロナウイルスの影響で時間が出来たので原理を理解しながら実装してみました。
 ネットを中心に様々な方の記事を参考にしながら構築していきました。最後の参考文献にリンク先は載せますが、普段コンテスト中にコードを利用させていただいている[じゅっぴーさんの記事](https://juppy.hatenablog.com/entry/2019/05/02/%E8%9F%BB%E6%9C%AC_python_%E3%82%BB%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88%E6%9C%A8_%E7%AB%B6%E6%8A%80%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0_Atcoder)、ライブラリをよくのぞかせていただいてる[いかたこのたこつぼさんのHP](https://ikatakos.com/pot/programming_algorithm/data_structure/segment_tree)に特にお世話になったので、冒頭で

元記事を表示

PyCharmで仮想環境を読み込む方法のメモ

PyCharmで仮想環境を読み込む方法のメモです(復唱)。

## 前提条件
– 以下、仮想環境名が’hoge’であるとします
– PyCharmがインストールされている
– virtualenvにて仮想環境をすでに作っており、“`workon hoge“`で呼び出せる状態になっている

## 設定手順
### 1. 仮想環境のディレクトリを確認する
“`cdvirtualenv“` コマンドを仮想環境下で実行し、仮想環境が保存されているディレクトリを確認しましょう。(筆者はこれを知らずものすごく手間取りました)

“`
# a.仮想環境を起動します
$ workon hoge

# b.仮想環境のディレクトリに移動します
(hoge)$ cdvirtualenv

# c.ディレクトリ名を確認します
(hoge)$pwd
## 筆者の場合、「C:\Users\me\Envs\hoge」と表示されました。

# d.Pythonのディレクトリを取得します
(hoge)$ where python
## 仮想環境と非仮想環境の2つ以上が出てくると思います。手順c.と同じディレ

元記事を表示

非再帰型Segment TreeのPythonによる実装

# はじめに
タイトルのとおり、この記事では**Python**による**非再帰型Segment Tree**の実装を紹介したいと思います。
前提知識を「ほぼ」[^1] 必要としないように**Segment Tree**の説明から入るので、もう知ってるという方は読み飛ばしてください。→[非再帰型Segment Treeの実装](#非再帰型segment-treeの実装)

[^1]: 計算量の概念や、Pythonの記法などについては理解しておく必要があります。

# Segment Treeとは
通称**セグ木**、**セグメント木**などと呼ばれているデータ構造で、長さ $N$ の配列{$a_i$}$_{i=0}^{N-1}$に対して、**モノイド** $•$ に関する次の2つの操作がどちらも時間計算量が $O(logN)$ で行えます。

* $update(i, x)$:  $a_i$ を $x$ に変更する
* $query(l, r)$:  半開区間 $[l,r)$ に対して $a_l•a_{l+1}•$…$•a_{r-1}$ を返す

**モノイド**として、一般的な足し算

元記事を表示

awsコマンドでPythonのNo module named ‘encodings’のエラーが出る

## 概要
MacでAWS CLIのコマンドを実行した時、いつからか`No module named ‘encodings’`というコマンドが出るようになりました。この時にやったことを色々書いてます。
ただ、結論を先に言うと、__Python3を再インストール__して直しました。

## 事象と試したこと

awsコマンドを実行すると、以下のようにエラーが出るようになり色々ググってみることに。補足すると、AWS CLIの中でPythonを使っているため、Pythonも正しく設定されている必要があります。

“`bash
$ aws configure –profile XXXX
…(省略)…
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named ‘encodings’
…(省略)…
“`

試したのはいずれもパス関連の修正です。

#### 1. PYTHONHOMEの設定を変えてみる

– エラーをググると、PYTHON

元記事を表示

Pythonで新型コロナの統計データを取得&分析してみた:ジョンズホプキンス大学のデータ編

# はじめに
 久しぶりに Quiita に投稿します。
 最近、新型コロナウイルスのパンデミックに関する統計データを分析することを始めました(仕事ではなく個人のライフワーク?として)。
 そして幾つかブログに記事にアップしています。
 - [新型コロナの救命率から見た各国の状況:救命率が極めて低いあの先進国がとった政策とは?│YUUKOU’s 経験値](https://yuukou-exp.plus/covid19-rescue-ratio-analysis/)
 - [新型コロナの救命率の推移から読み解く:米国の底力、危機的なイギリス、オランダ、推移が美し過ぎる中国│YUUKOU’s 経験値](https://yuukou-exp.plus/covid19-rescue-ratio-timeline-analysis-20200401/)

 例えば、救命率についての時系列推移をプロットしたチャートをデータ分析の成果として掲載していたりします。(感染者のカウント基準が国によって違う点はあるものの、データを見る限り日本は世界的に見ても医療現場が優秀であることがうかがえます)

!

元記事を表示

猿でも分かるPython入門 (その1)

#はじめに
 こんにちは、Rikuと申します。軽く自己紹介をさせていただきますと、普段はコンサルタントとして働いており、プログラミングは基本趣味でコードを書く程度、という人間です。それでも、エクセルなどでは行えない大容量データを用いる場合や高度な分析を行う場合は仕事でもコードを書くことはあり、データ活用が一つのビジネストレンドになりつつある昨今では何かとコードを書く機会は増えつつあります。そのため──コンサルタントという職業上必ずしも必須ではないのですが──後輩からも「エンジニアになりたいわけではないが、分析を自分で進められるようになりたいからデータ分析のためのプログラミングを教えてほしい!」などと言われることは多々あります。そこで色々と初心者向けの記事を捜してみたところ、日本語ではプログラミングのプの字も知らない超初心者向けにPythonの扱い方について体系的にまとめた記事がほとんどないことに気づき、自信の知識の伝達の練習も兼ねてここで知識ゼロ超初心者向けのPython解説を行おうと思った次第です。
 本記事はPythonの入門者から初心者への橋渡し的な記事にしようと思っており、4,

元記事を表示

Pythonで毎日AtCoder #27

### はじめに
[前回](https://qiita.com/taxfree_python/items/99986c1a42be1fef9e9c)
昨日のABC161は+65でした。次に1200パフェくらいで茶色になれます。

### #27
[問題](https://atcoder.jp/contests/abc160/tasks/abc1610_d)843diff
1TLE。
**考えたこと**
本番で解けなかった問題でした。グラフだと思っていたら、グラフ的な考えでなくても解けました。
$(i,j)(i,j\in Z,1\leq i < j\leq N)$な点を考えた時に、$i,j$の最短距離の個数を求める問題です。 これだけだと簡単ですが、この問題ではX-Y間に距離1で移動できる辺が用意されています。ですので、最短距離は$min(ショートカットを使わない、ショートカットを使う)$で考えます。ショートカットを使わない場合は、$j-i$になります。使う場合は$|y-j|+|x-i|+1$になります。第一項でj-Y間の距離、第二項でX-i間の距離を求めショートカットの距離1を足してい

元記事を表示

Tokyoコロナ:オープンデータから指数関数curve_fitで単純な予測を行ってみる

コロナ感染が広まっております。
何も対策をしない(もしくは効果がなかった)場合、一般的には指数関数に沿って
感染者数が広がっていきます。

東京コロナサイトでは感染実数が日々公表されておりますが
予測は出ておりません。

指数関数curve_fitにより、将来予測値を算出し
グラフ描画をここでは行います。

(もちろん、結果通りになることは望んでおらず
 対策により一日も早く収束に向かうことを切に願っております。土日は外出せずこもってます)

データは公式サイトから。
https://stopcovid19.metro.tokyo.lg.jp/
通常はよる更新されているようですが、翌日にてグラフ描画の前提です。

“`python
import pandas as pd
from pathlib import Path
from datetime import datetime
“`

“`python
BASEDIR = Path(‘.’)
FILE_PATH = ‘https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo

元記事を表示

Java言語で学ぶデザインパターン入門のPrototypeパターンまとめ

お久しぶりです。白々です。
先日エンジニアの先輩にデザインパターンをご存知でない!?という冷静なツッコミを頂き、その後結城浩さんが書かれた「Java言語で学ぶデザインパターン入門」を渡されたので勉強することにしました。
ただ、本を一読しても覚えられないので覚書として記事にしようと思いました。
今回で6回目です。
完走できるように頑張ります。
また、「Java言語で学ぶデザインパターン入門」には、サンプルプログラムも有りますが、著作権の都合上省かせて頂きます。御了承ください。

前回は、「Singletonパターン」に関しての記事を作成しました。
前回の記事は、以下です。
https://qiita.com/sirajirasajiki/items/532d33fd823e52ab0d1a

今回は、「Prototypeパターン」に関して記載したいと思います。
また、「Java言語で学ぶデザインパターン入門」には、サンプルプログラムも有りますが、著作権の都合上省かせて頂きます。御了承ください。

#第6章 Prototypeパターン-コピーしてインスタンスを作る
「Java言語で学ぶデザ

元記事を表示

ブラックジャックの戦略を強化学習で作ってみる(②gymに環境を登録)

## はじめに
Pythonと強化学習の勉強を兼ねて,ブラックジャックの戦略作りをやってみました.
ベーシックストラテジーという確率に基づいた戦略がありますが,それに追いつけるか試してみます.

こんな感じで進めていきます
1. [ブラックジャック実装](https://qiita.com/namachoco/items/bb1c884987cad1e73db8) 
2. OpenAI gymの環境に登録 ← 今回はここ
3. 強化学習でブラックジャックの戦略を学習

## OpenAIのgymとは
強化学習の研究環境として使われるプラットフォームです.
CartPoleや迷路などの環境(ゲーム)が用意されており,簡単に強化学習を試すことができます.
OpenAI Gymの環境は,エージェントからの行動を受け取り,その結果としてその次の状態と報酬を返す共通のインターフェースを持っています.
インストールは以下のように簡単にできますが,詳しい方法は他のページを参考にしてください.以下,インストールが終わってるものとして説明します.

“`console
pip install gym

元記事を表示

Pythonで基礎から機械学習 「ベイズ入門からPRMLへ」

# はじめに
 この「Pythonで基礎から機械学習」シリーズの目的や、環境構築方法、シリーズの他の記事などは以下まとめページを最初にご覧下さい。

[Pythonで基礎から機械学習まとめ](https://karaage.hatenadiary.jp/machine-learning-study)

 今回は、ベイズを勉強しようとしたのですが、恥ずかしながら自分のレベルではちゃんと説明できるほど理解できませんでした。

 調べるうちに色々有用と思われるサイトや書籍をまとめました。また自分が再チャレンジするためと、こんな情報でも役にたつ人がいるかもしれないので、恥を忍んでここに公開します。

# ベイズとは?
 全くうまく説明できる自信が無いので、分かりやすいと思われるサイトをリンクします。一言でベイズといっても、ベイジアンとかベイズ統計学とかベイズ推定とかベイズの定理とか、ベイズと名がつくものが色々あって初心者は混乱しがちです。

[ベイズ統計・ベイズ機械学習を始めよう](https://www.bigdata-navi.com/aidrops/2423/)

[多項式あてはめで眺め

元記事を表示

FastAPIを使ってとりあえず、swaggerにそれっぽいAPIの使い方を表示したい

# 概要

とにかく、とりあえず、FastAPIのswaggerの画面にAPIからのレスポンスの形を定義したり、
レスポンスのサンプルを表示したりしたい人向けの記事。

ぼくがそうだったのだけれども、そういう記事やblogが見つけられなくて、
ひとまずチュートリアルを一通りこなしたのもあって、
同じ目的を持つ人の一助けになればと思って書いた。

# 前提

– こういう形のデータがレスポンスとして返ってくるとする。

“`python
{
“Special_choco1”: {
“Milk”: “many”,
“Quantity”: 5,
“Cacao”: “a little”
},
“Store”:[
{
“Tokyo”: “sibuya”,
“Hokkaido”: “sapporo”,
“Osaka”: “nanba”
}
]
}
“`

– FastAPIのバージョンは 0.52.0

– main.pyに書く
app=FastAPI()

元記事を表示

機械学習のお勉強〜matplotlib編〜

#機械学習のお勉強〜matplotlib編〜

今回はmatplotlibの勉強をしたのでそのアウトプットをします。

##1.matplotlibとは?

データの可視化をしてくれる外部ライブラリです。
numpy,pandasと同様Pythonには最初は入ってないけどAnacondanには最初からインストールされています。

##2.データの可視化をすると何がいいの?

外れ値を素早く見つけることができます。

例えばお菓子の値段の統計を取っていたとします。
1個100円前後のお菓子の中に1個1万円のお菓子のデータがあったらおかしいですよね?
そのおかしいデータを瞬時に見つけるのはとても難しいですが、グラフなどでデータを可視化することで瞬時に見つけることができます。

ここ1つだけ変な点があるなぁ?ってなります(笑)

##3.基本的な使用方法

###インポート

“`python:test.ipynb
#matplotlibのインポート
import matplotlib.pyplot as plt
%matplotlib inline
“`

上記を実行しましょう。
%m

元記事を表示

ナンバーリンク風のパズルを制約充足問題として定式化し制約ソルバーで解く

# はじめに
きっかけは、こんなパズル。

> ○どうし、●どうしをそれぞれ1本の線でつなぎなさい。
> ただし、線は点線にそって引き、途中で交わったり分かれたりしないようにしなさい。
> ![NumbersLink_6x6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336603/bf50d811-fd96-7ebe-926f-91861656eb77.png)

この例題は盤面のサイズも小さいので、直感でも以下の解が比較的かんたんに見つかります。
![NumbersLink_6x6_result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336603/0d3c9a93-ec9c-0b11-36eb-eca6ac913b3f.png)

この記事では、このようなパズルを制約充足問題として定式化して、制約ソルバーのSugar[^sugar]を使って自動で解くことを目指します。

# 方針

## 「ナンバーズリン

元記事を表示

OTHERカテゴリの最新記事