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

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

foliumを使ってみた

## はじめに
最近foliumという、データを地図上で表示するライブラリを使ってみたので、勉強しながら記事にまとめてみました。

## foliumとは
[Folium](https://python-visualization.github.io/folium/)はデータを[Leaflet.js](https://leafletjs.com/)のマップで可視化をするpythonのライブラリです。

pythonのデータ操作とleafletのマッピングの両方の強みが利用できます。

Github:https://github.com/python-visualization/folium
Documentation:https://python-visualization.github.io/folium/

## インストール
pip installでインストールできます。

“`python:foliumのインストール
$ pip install folium
“`

## 地図を表示してみよう!
まずはjupyterで東京駅([35.681167, 139.76705

元記事を表示

ベイズ更新、二項分布・尤度関数について理解しようとした

#はじめに
 
 前回、機械学習を学ぶ上で避けて通れない(と思っている)ベイズ推定について学びました。今回は、それに引き続きベイズ更新、二項分布及び尤度関数についてまとめました。

>機械学習で避けて通れない(と思っている)ベイズの定理を頑張って理解しようとした
https://qiita.com/Fumio-eisan/items/f33533c1e5bc8d6c93db

+ ベイズ更新を理解する
+ ベルヌーイ分布及び二項定理を理解する
+ 尤度関数を理解する

機械学習とその理論 (情報オリンピック2015春合宿講義資料)

##ベイズ更新を理解する

 ベイズの定理を応用した考え方にベイズ更新というものがあります。これは、事前確率を更新された事後確率とする考え方を指します。
 迷惑メールのフィルタの考え方を例にして、具体的に計算をします。

###迷惑メールフィルタ

 あるメール$A$が、迷惑メール$A_1$か非迷惑メール$A_2$かを判定することを考えます。メールには迷惑メ

元記事を表示

pythonwebスクレイピング-要素を一括取得

>PythonによるWebスクレイピング〜入門編〜【業務効率化への第一歩】の9-10勉強メモ
https://www.udemy.com/course/python-scraping-beginner/
スクレイピング対象ページ(PW制限あり)
https://scraping-for-beginner.herokuapp.com/mypage

#要件: 下記テーブルの右側部分のテキスト情報を一括取得すること
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68847/96f844a7-3785-04ca-debe-04bbb581f894.png)

F12を押し、開発ツールで確認すると右側のテキストは、すべてtdでマークアップされていることがわかる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68847/2a57626f-813a-2872-e765-a7f6c725b716.pn

元記事を表示

Python:pyenvを何も考えずに更新し「Pythonどこいった?」現象を解決する

Mac で Home brew を使っております。OS は Catalina ですが、Python のバージョンは自分で決めたいので、システムの Python3 ではなく、pyenv と pip で Python 環境を管理しています。

2回ほどあったのですが、Home brew で “`brew update“` をかけ、何も考えずに “`brew upgrade“` すると、pyenv が更新されているときがあります。
pyenv が更新されたあと、“`python3“` しても「そんなファイルがありません」といわれ焦ることになります。

この場合は、

“`
pyenv rehash
pyenv global 3.8.1
“`

というように、rehash のあと global で使いたいバージョンを再指定すれば、もとにもどります。
普段から pyenv に馴染んでいる方々には常識でしょうが、自分の備忘録もかねて、念の為アップしておきます。

以 上

元記事を表示

Python3 平衡二分探索木は知らないがソートされた集合があったらいいなあって話

#はじめに結論
Pythonのsetは集合の管理ができますが、要素にindexを持っていないので「小さい方からx番目の要素を出力する」という操作を要素数 N に対して $O(N)$ でしか行えません。

あ〜遅すぎる。

結論を言うと、Binary Indexed Treeと二分探索で$O((logN)^2)$になります。もっと高速化できるかはよく知りません。

##どんな理屈?
Binary Indexed Tree(以下BIT)を用意しましょう。なに?BITを知らない?
https://ja.wikipedia.org/wiki/フェニック木

xを集合に追加する場合、BITのx番目の要素に+1するということにしましょう。
例えば、{3, 1, 4}の集合を作りたい!と思ったら、

BIT配列の3番目の要素に+1
BIT配列の1番目の要素に+1
BIT配列の4番目の要素に+1

これでOKです。

ではlower_boundを考えていきましょう。二分探索します。小さい方からx番目の要素が欲しい時、

「y以下の要素がx個以上あるか?」という判定を使って二分探索すると、BITでy以

元記事を表示

データエンジニアがMLOpsを視野にDevOpsを学ぶ。 ①とっかかり

#tl; dr
今後のために、DevOps/MLOps実務を体系的にマスターしておこうシリーズ
私の場合、とっかかりとして、フロントエンド言語のTypescript(ts)と、バックエンド言語のScala/Python(with Sparkエコシステム)をつなげるところから取り組むの良いと思った。

判断理由:

“`
1) フロントエンド開発者(js/tsユーザー)にpythonは親和的
 ※js/tsユーザーが併用するプログラム言語の定番の一つがpythonとなっているらしい ★1
2) tsのモデル定義とsparkのモデル定義の親和性が高い
 ※Typescriptのインターフェース定義とSpark向けのcase classが特に類似。
3) tsとsparkとの相互呼び出しが容易となりつつある(「jsii」の魔法)。
 ※例、jsiiによって、typescriptで書かれたnodejsアプリのテストをScala/Pythonで行うことが可能に。
4) terraform/ansible/docker/hashi stackあたりはなんとかなる私の課題は、今風のフロントエンド

元記事を表示

あつ森の株価の変化を見れるプログラム(未完成)

###あつ森で1週間の株価推移を調べるときに、グラフ化出来たら見やすいなぁと思って作ってみました。
(2020/04/09追記 グラフ上に数字が出せないので未完成です。折れ線グラフが良かったかなぁ。。。どなたか手直ししてください。。。)

以下コード

“`python

import matplotlib.pyplot as plt
import japanize_matplotlib

week = [“月”, “火”, “水”, “木”, “金”, “土”]
ap = [“前”, “後”]
stock = []
labels = []

for i in range(len(week)):
for j in range(len(ap)):
print(“————————————————–“)
q = int(input(week[i] + “曜日,午” + ap[j] + “の株価を入力してください 000で終了:”))
if q == 000:

元記事を表示

SAML 認証による一時的な認証情報で boto3 を利用する

弊社では全社員が G Suite のアカウントを持っており、AWS マネジメントコンソールにアクセスする際は Google を Identity Provider として SAML 認証してシングルサインオン [^sso] をしている。この場合、STS の Assume Role という仕組み [^assume_role] を使って一時的な認証情報を入手し、フェデレーションユーザとしてマネジメントコンソールにアクセスすることになる。マネジメントコンソールにアクセスするために社員ごとに IAM ユーザを作成する必要がなくなるため、アカウント管理の手間が削減できる。

[^sso]: [G Suite アカウントを用いた AWS へのシングルサインオン | AWS Startup ブログ](https://aws.amazon.com/jp/blogs/startup/techblog-saml-gsuite/)
[^assume_role]: [IAMロール徹底理解 〜 AssumeRoleの正体 | Developers\.IO](https://dev.classmethod.jp/

元記事を表示

AttributeError: ‘Series’ object has no attribute ‘isna’ 解決法

# Python pandas を利用中・・・
Python 実践データ分析100本ノックという本を写経している時、こんなエラーができました!

![スクリーンショット 2020-04-09 0.45.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/297375/a3ca9100-7cd9-2998-89a8-fd0cbf2c31e1.png)

*AttributeError: ‘Series’ object has no attribute ‘isna’*

正しく写経しているはずなのに、エラー?

#解決方法

原因は、バージョンの問題だった。
Python3.6を使っていましたが、
###3.7にアップデートしたら動きました。
pandasもアップデートしたけど、Pythonの問題だったらしい。

良かった!

Anacondaの人は以下のコマンドで一発

“`
conda install python=3.7
“`

###ちなみに・・・
Python3.8でも動きました。

解決はし

元記事を表示

VS Code で Jupyter を動かしてみる

VS Code でJupyter が使えるらしいのでやってみました。

###1. 環境
OS:Windows 10
VS Code:1.43.2
拡張機能:Anaconda Extension Pack 1.0.1
Pythonインタープリター:3.7.3 64-bit

###2. 拡張機能 Jupyterのインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/2743fef4-9691-a239-392d-7516dd894f84.png)

###3. コードを入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/6e2fcc31-0594-4488-1540-29b934f4c247.png)

“`
# %%
from matplotlib import pyplot as plt
import numpy as np

# %%
x = n

元記事を表示

TypeError: Cannot change data-type for object array.

ある日、matplotlibを使用した場合に、こんなエラーが出た。

File “/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/lib/stride_tricks.py”, line 119, in broadcast_arrays
zip(args, shapes, strides)]
File “/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/lib/stride_tricks.py”, line 32, in as_strided
array.dtype = x.dtype
TypeError: Cannot change data-type for object array.

matplotlibを再インストールしたら解決した.
$ pip uninstall matplotlib
$ pip install matplot

元記事を表示

【Python】三井住友信託銀行プログラミングコンテスト2019C(DPの使いどころさん)【AtCoder】

>※この記事は、DP(動的計画法)の基本中の基本である
かえるくん問題2問がとけることを前提としています。

>- [Frog1](https://atcoder.jp/contests/dp/tasks/dp_a)
– [Frog2](https://atcoder.jp/contests/dp/tasks/dp_b)

DPでとけるんだ!!!
と感動した問題がありましたので記事にします。
DPの考え方は知っているけれども、実際の問題と結びつかない!
という人は参考になるかも(ならないかもw)

#[三井住友信託銀行プログラミングコンテスト2019C](https://atcoder.jp/contests/sumitrust2019/tasks/sumitb2019_c)
Difficulty:205
問題を読んで、bit全探索や6重for文が一瞬頭をよぎりましたがダメそう。

ちなみにDPが思いつかなくても解けます。(記事の最後に別解として載せておきます。)
しかしDPが思いつかなかった場合、
たぶん法則性をみつけるのに15分くらいかかる気がします。

**レートをあげるには

元記事を表示

【SIRモデル解析】γ*(R-1)の決定と感染数のピークアウト♬世界編

いよいよ日本も緊急事態宣言が発出された。
一方、最近、中国に引き続いて、韓国、そしてさらにイタリア、スペインなどが次々に感染数がピークアウトしつつあるというニュースが聞こえるようになってきた。
今回も以下のSIRモデルを基礎に世界の感染数、治癒数、死亡数を分析した。

“`math
{\begin{align}
\frac{dS}{dt} &= -\gamma R I \\
\frac{dI}{dt} &= \gamma (R – 1) I \\
\frac{dr}{dt} &= \gamma I \\
\end{align}
}
“`

ということで、今日は[先日のモデル解析](https://qiita.com/MuAuan/items/6bf34a72b7cbe48434b3)を世界の合計値に応用してみることとした。
理論は、前回の記事を参照してほしい。
結果は、以下のとおりである。
まず、この図は、このまま伸びると1月程度で感染数が1000万人になってしまいそうな図である。
![exterpolate_world_gamma_R_1.png](https://qiit

元記事を表示

Pythonで再帰をやってみた②(フィボナッチ数列)

以前再帰を使った回文判定、Fractal図形の描画を行いましたが、今回は第2弾です。

#フィボナッチ数列

フィボナッチ数列とは、
1 1 2 3 5 8 13…
のように前2つの数字を足したものが次の項になるという数列です。
(例)第4項の3はその前2つの1と2の和
今回は再帰を使ってフィボナッチ数列の第n項を知るというプログラムを書きました。

“`Python
def fibonacci(n):
if n < 3: return 1 else: return fibonacci(n-1) + fibonacci(n-2) ``` もし1項か2項なら1、それ以降は1つ前と2つ前の項に戻り、さらに1つ前、2つ前にもどるという形です。 少し分かりにくいですが、 n=5なら4項、3項の和が必要なので2,1項に戻って和を求めていきます。 これでn=10なら55、n=20なら6765となります(数が大きくなればなるほど時間がかかります)。

元記事を表示

pythonなどで書かれたファイルをsyntax highlight付きでpdf化

![Bad Request]()
# やりたいこと

`hogehoge.py`のようなソースコードを、syntax highlight付きでpdfファイルに変換

## 経緯
ずぅーっと前に使っていたa2psみたいに

“`sh
% cat hogehoge.txt | a2ps | lpr -Pprinter_name
“`

てな感じで、お手軽に印刷できるツールをしばらく探していました。
**が、**
これといったツールがみあたらないので、やむなく自作。

pdfファイルを無駄に作成せずにパイプを使ってプリンターに流し込むことを考えたのですが、ちょっと思いつかず。
とりあえず、pdfを出力することにしました。

# 方針

1. コマンド1つでpdfファイルを作成
2. pythonからpandocを呼び出して処理
3. コードには行番号を付加

# 私の環境

## ハードウェア & OS
1. Macbook Pro (13-inch 2019, Four Thunderbolt 3 ports)
2. 2.8GHz Quad Core Intel Core i7
3.

元記事を表示

Pythonで毎日AtCoder #30

### はじめに
[前回](https://qiita.com/taxfree_python/items/a38c88be705e62ab7b47)
おすすめの問題があったらコメントやtwitterでリプ飛して欲しいです。
今日で30日です。

### #30
[ABC154-D](https://atcoder.jp/contests/abc154/tasks/abc154_d)

**考えたこと**
素直に連続する$K$個のサイコロの期待値を計算するとTLEしてしまいました。PyPyで提出してもTLEしたので解説を読みました。
累積和を使えば計算量を減らせるのTLEしません。期待値は$\frac{1}{2}(p[i]+1)$で計算することができます。累積和はnumpyを用いて実装します。numpy大好き

“`python
import numpy as np
n, k = map(int,input().split())
p = list(map(int,input().split()))

e = [(i+1)/2 for i in p]
e = np.cumsum(e)
e

元記事を表示

Pythonでの共有メモリの実現方法(mmap.mmap)

#1 目的

Pythonコードを実施中に、コード内部の変数を外部からアクセスすることで変更したい。

#2 内容

Pythonコードを実行中に変数aを外部からアクセスし変更したい。下記のように、常にテキストファイル「TEST.txt」の内容を変数aに格納するコード(test1.py)を考える。ここでtest1.pyを実行中にTEST.txtの中身を変更したとしても、test1.py中の変数aの値は更新されない。(変更前のTEST.txtの値のままになってしまう)

![54.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/eaef86ae-254e-a7a7-5837-b2b644677fac.jpeg)

#3 どのようにすればいいか

TEST.txtの内容をメモリに読み出す。test1.pyとtest2.pyはメモリを共有する。test1.pyは変数aにメモリの値を読み出している。test2.pyはメモリの値を変更する。test1.pyを実行すると常にメモリから値を読み取り変数a

元記事を表示

[youtube-dl] python3のSSLエラー(CERTIFICATE_VERIFY_FAILED)

## 背景

次のようにyoutube-dlのコマンドを叩くと,`SSL: CERTIFICATE_VERIFY_FAILED`のエラーが吐かれてしまうことがあります.それについての原因と解決策と書いていきます.

“`
youtube-dl `url`

ERROR: Unable to download webpage: (caused by URLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1045)’)))
“`
どうやらpyhon3.6の不具合で,証明書のパスが通らなくなってしまうこ

元記事を表示

【1〜10問目】AtCoderの過去問精選100問をC++, Pythonで解く

## はじめに
赤コーダーの @e869120 さんが先日素晴らしい記事を書かれました。

[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【初級編:競プロを始めよう】](https://qiita.com/e869120/items/f1c6f98364d1443148b3)
[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】](https://qiita.com/e869120/items/eb50fdaece12be418faa)
[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【上級編:目指せレッドコーダー!】](https://qiita.com/e869120/items/acba3dd8649d913102b5)

この中でも特に「中級編」は緑コーダーの僕にとってまさに Looks Good To Me でしたので、
下記のような宣言のもと、記事内の「精選100問」を解く日々が始まりました・・。

群間のサイズの差の検定方法

を拝見した。こちらの記事は、Sample Ratio Mismatchの詳細についてわかりやすく解説がなされていた。

Sample Ratio Mismatchは以下のようなものだ。

> なぜこれが起こったかを調べたところ、実験開始後に、A/Bテストに割り当てられたTreatmentユーザ数がControlユーザ数と比べて有意に少なかったことが原因でした。それが起こってしまった原因を特定し(後に理由はでてきます)、正しく検証した結果、期待どおりのPositiveな差を検出することができました。
> まさにこの現象のこと、Sample Ratio Mismatch(SRM) と言います。つまり、A/Bテストのために割当したControl / Treatmentの2つの集団で、サンプルサイズが 期待どおりの比率で集まらなかった ことで、誤った結果を導いてしまう現象です。

「Control / Treatmentの2つの集団で、サンプルサイズが 期待どおりの比率で集まったかど

元記事を表示

OTHERカテゴリの最新記事