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

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

Cloud run+Firebaseの開発について【Webアプリ開発】

# 概要

私はGCPを積極的に利用していますが、安く簡単にサービスを作ろうと思うと、Cloud run+Firebaseが良いのかなと思い、まとめました。メンテナンス性についても、Cloud runとCloud Functionsを比べると、Cloud runの方が良いと思います。(記事を書いていて思いましたが、もしかするとCloud buildを利用しているのならばFunctionsでもいいのかもと思い始めました。まとまったら別で記事にするかも)

# 開発環境一覧

– Source Repositry
– Cloud build
– Cloud run
– Firebase(hosting)

# はじめに
始めに上記の環境においてはサービスを有効状態にしてください。
また、gcloudでは最低限必要になIAMは以下の通り。

– Firebase 管理者
– Cloud run 管理者

今回はCloud buildを使用するため、IAMにおける「~~@cloudbuild.gserviceaccount.com」に以下の権限を付与する。

– Cloud Run 管理者

元記事を表示

pandasで複数行ヘッダのCSVを出力する方法

# やりたいこと
以下のようなヘッダが複数行で構成されている表をCSVで出力したいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37903/88f92a75-5770-e0f1-1b9f-04b2b3de4b00.png)

備忘録として記事を投稿いたします。

# 環境
* Python 3.8.1
* pandas 1.0.3

# 実現方法

1. columnsが`MultiIndex`であるDataFrameを作成する
2. DataFrameの`to_csv`メソッドで出力する

## DataFrameの作成方法

### `DataFrame`コンストラクタの`data`引数にdictを渡す。

“`python
df = pandas.DataFrame({
(“Alice”,”Math”): [80,81],
(“Alice”,”English”): [90,91],
(“Bob”,”Math”): [70,71]
})

p

元記事を表示

【python】enumerate関数の使い方(インデックス番号と要素を取り出す)

#pythonのenumerate関数の使い方(インデックス番号と要素を取り出す)

enumerate関数の使い方をパターン分けして確認する。

**目次**

1. [enumerate関数とは](#1-enumerate関数とは)
1. [できること](#できることは2つ)
2. [使い方](#使い方)
2. [インデックス番号と要素を取り出す(変数1個)](#2-インデックス番号と要素を取り出す変数1個
)
3. [インデックス番号と要素を別々に取り出す](#3-インデックス番号と要素を別々に取り出す)
1. [インデックス番号のみ取り出す](#1-インデックス番号のみ取り出す)
2. [要素のみ取り出す](#2-要素のみ取り出す)
3. [両方取り出す](#3-両方取り出す)
4. [タプルに使う](#3-タプルに使う)

##1. enumerate関数とは
###できることは2つ

・配列のインデックス番号を取り出す
・要素を取り出す

要素を取り出すのはenumerateなしでもできるので、インデックス番号

元記事を表示

【初心者向け】kaggleのEDAで苦しんだこととその奮闘記まとめ

#1.目的
プログラミングの学習を始めたのが2019年1月で、オンラインのプログラミングスクールに通って本格的に学習を始めたのが2019年7月でした。

練習としてkaggleに取り組んでいましたが、**機械学習のモデルを構築するなんてもっと前の、データ可視化の部分で躓くことが多すぎて、何回も心が折れました**。

でも実は悩んでいるのは自分だけじゃなくて、**意外に躓いたりする部分が皆一緒なんじゃないか**と思い、**今苦しんでいる超初心者の方に少しでも役立つ記事を投稿すること/が目的**です。
また、結論だけでなく、自分が考えたことも一緒に書くようにしています。こんな私でも、まだまだ初心者のレベルですが、次の4月からAI専門の企業で働けることになったので、そういう意味で初学者の方の**モチベーションアップにも貢献できますと幸いです**。

※注意※
この記事は、「こうしたら解決できるようになりますよ」という、知識を教える記事ではありません。あくまで今の超初心者の自分の知識を元に、こうしたらなんとかなりそう・・という奮闘の記録を綴ったものです。
もっとこうしたらうまくいきますよ、とい

元記事を表示

SQLite3 で、たった2行追加して拡張ライブラリ(拡張SQL関数)を使おう!

# はじめに

SQLite3 では、PostgreSQL の EXTENSION (拡張)と同じように、共有ライブラリを拡張ライブラリとして導入することが可能です。実際、**enable_load_extension と load_extension の2行だけを追加することで拡張ライブラリを使うことができます!**
例として、[SQLite Contributed Files](https://www.sqlite.org/contrib/download/)で公開されている拡張SQL関数(extension-functions.c)を導入して使ってみましょう。
SQLite3 は他のRDBMSと比べて、SQL関数が少ないのですが、拡張SQL関数を導入することで補うことができます。CentOS7で、SQLite3 CLI(Command Line Intferface)、python3、C言語で導入してみましょう。

# 拡張SQL関数の入手、構築

[SQLite Contributed Files](https://www.sqlite.org/contrib/download

元記事を表示

【python】タプル(tuple)とは。タプルにしない方法と使い方を事例で解説。

#pythonのタプル(tuple)とは。タプルにしない方法と使い方を事例で解説。

エラー表示で見ることの多いタプル(tuple)。

いつの間にかタプルになっていた、、を防ぐために、どうするとタプルになってしまうのかを知っておく。

##タプルとは

– pythonの型の一つ
– 型:listやint, strなど
– 順番に並んだ複数の要素を一まとまりにみなしたもの
– 配列(list)と違う
– 並び替えできない
– 要素の追加・削除ができない
– 使用できるメソッドが限られる
 

**~目次~**
どうするとタプルができるか(タプルの作り方)

1. [カッコなしで「,」区切りの変数に代入](#1-カッコなしでで区切り変数に代入)
2. [()で囲む。「,」は1つ以上](#2-で囲むは1つ以上)
3. [tupleメソッドを使う](#3-tupleメソッドを使う)
4. [1文字(str)](#1文字str)
5. [2文字以上の文字列(str)](#2文字以上の文字列str)
6. [配

元記事を表示

Visitorパターンについて

## はじめに

業務でVisitarパターンを実装する機会があり、はっきりと理解していなかったので、以下の書籍から学習したことをまとめたものなります。

* [エキスパートPythonプログラミング 改訂2版](https://www.amazon.co.jp/dp/B079Z2GX64/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)
* [Java言語で学ぶデザインパターン入門](https://www.amazon.co.jp/dp/B00I8ATHGW)

## 概要

Visitorパターンはデータ構造と処理を分離することができます。

Visitorパターンでは、データを保持するクラスとアルゴリズムを実装するクラス(Visitorクラス)に分けます。

もし、アプリケーション内にデータ構造があり、いくつかのアルゴリズムがそのデータ構造にアクセスする場合には、

Visitorパターンを利用することで、データ構造はデータの保持とアクセスに集中することができます。

既存のクラスを修正することなく、機能を拡張できます。(オープン・ク

元記事を表示

【Python】流体シミュレーション:線形から非線形へ

## はじめに

数値流体力学(CFD)の勉強も兼ねて、液体の数値流体解析コードの構築に必要な知識などをまとめていきたいと思います。数値流体力学は結構とっつきづらい学問な気がするで、できるだけ初学者にもわかりやすいように書いていきたいと思います。間違い等多々含まれていると思われますので、発見された際にはご連絡していただいけると幸いでございます。また、どこがわかりにくいとかをコメントして頂けたらありがたいです。随時更新していきます。

### 対象読者

* Pythonを使える人
* 数値計算に興味がある人
* 流体力学に興味がある人
* 基本的な大学物理や数学を理解している人(簡単な微分方程式と線形代数くらい?)

### シリーズ

* 1章:[【Python】流体シミュレーション:移流方程式を実装する](https://qiita.com/KQTS/items/354c85adb7d46e28e8da)
* 2章:[【Python】流体シミュレーション : 拡散方程式を実装する](https://qiita.com/KQTS/items/97daa509991bb9777a

元記事を表示

【Windows】GPUでKerasを利用するメモ【Tensorflow-GPU】

#構成
OS: Windows10 Home
CPU:Intel製 Corei7-4790
GPU: GTX1660 Super(NVIDIA製のGPUならなんでもいい)
Python: 3.6.10
Keras: 2.2.4
Tensorflow: 1.14.0
Cuda: 10.0
numpy: 1.16.4
sklearn: 0.22.2

##1.Windows Visual Studio C++のインストール
インストールページ
https://docs.microsoft.com/ja-jp/visualstudio/install/install-visual-studio?view=vs-2019
ここから、VisualStudioをインストールします。
今回は、2019年版をインストール。
インストール時に「C++ ワークロードを使用したデスクトップ開発」を必ず選択してください。

##2.NVIDIA Driverのインストール
https://www.nvidia.co.jp/Download/index.aspx?lang=jp
こちらのURLから自分のGPU

元記事を表示

言語処理100本ノック-59:S式の解析

[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)[「第6章: 英語テキストの処理」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#ch6)の[59本目「S式の解析」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#sec59)記録です。
「S式」と呼ばれるフォーマットのパーサーを作ります。初めてパーサーを考えさせられましたが非常に奥が深いです。
今回のノックは、非常に時間がかかってしまいました。終わってみると50行程度なのですが、効率化の余地が非常に大きいノックです。今回は効率化を捨て、できるだけシンプルにしました。

# 参考リンク

|リンク|備考|
|:–|:–|
|[059.S式の解析.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/06.%E8%8B%B1%E8%AA%9E%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%AE%E

元記事を表示

[python] 流線描画

#流線
直交座標系$\boldsymbol{x} = (x, y)$,速度$\boldsymbol{u} = (u, v)$で表される流れ場の,ある時刻$t$における流線(streamline)は数学的に常微分方程式
$$
\frac{\text{d} x}{\text{d} u(x,y,t)} = \frac{\text{d} y}{\text{d} v(x,y,t)}
$$
で定義されます.この記事で紹介する流線はこの常微分方程式を解いて描くわけではなく,単純に速度ベクトルをつないだものを描画しているものと思ってください.

#matplotlib組み込みのstreamplotで描く

例として2次元定常Taylor-Green渦:
$$
\begin{aligned}
u &= \sin x \cos y \\\\
v &= -\cos x \sin y
\end{aligned}
$$
を使います.
matplotlib組み込みの[“`streamplot“`](https://matplotlib.org/3.1.1/api/_as_gen/matplotl

元記事を表示

Flask: [root] Error: Can’t locate revision identified by ‘XXXXXXX’ が出てしまい、migrateできないとき。

## エラーの発生
migration ファイルを消して再度`flask db init` -> `flask db migrate`した際、

“`
(flask_env) C:\Users\ryosu\Desktop\sample_2>flask db migrate
C:\Users\ryosu\Anaconda3\envs\flask_env\lib\site-packages\pymysql\cursors.py:170: Warning: (3719, “‘utf8’ is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.”)
result = self._query(query)
C:\Users\ryosu\Anaconda3\envs\flask_env\lib\site-packages\p

元記事を表示

AtCoder Beginner Contest 159の復習, E問まで(Python)

競プロ初心者の復習用記事です。

ここで書く解は解答や他の人の提出を見ながら書いたものです。自分が実際に提出したものとは限りません。

# A – The Number of Even Pairs
偶数が書かれたボールN個と奇数が書かれたボールM個、合計が偶数になる組み合わせの数の数を答える問題です。

単純に偶数同士の組み合わせ$N(N-1)/2$と奇数同士の組み合わせ$M(M-1)/2$を合わせれば答えになります。

“`python

N, M = map(int, input().split())
print((N*(N-1))//2 + (M*(M-1))//2)
“`

# B – String Palindrome

与えらえた文字列が「回文二つを組み合わせた回文」になっているかを判定する問題です。

左側の前半、左側後半、右側前半、右側後半の4つの文字列が一致しているかを、文字列Nの1/4まで回して判定します。

“`python
s = input()
n = len(s)
for i in range((n-1+3)//4):# +3は切り上げ用
if

元記事を表示

【Python】Numpyでパーリンノイズ生成関数を無理やり短く書いた。

#はじめに
**・パーリンノイズとは**
パーリンノイズというのは程よい連続性と乱雑さがある使い勝手のいい(地形のランダム生成など)ノイズのことです。
詳しいことは他の人が書いているのでここではコードの紹介にとどめます。

#書いた関数

“`python:perlin.py
#ライブラリのインポート
import numpy as np
import matplotlib.pyplot as plt

#線形補間と連続性を生み出す子たち
def fade(t):return 6*t**5-15*t**4+10*t**3
def lerp(a,b,t):return a+fade(t)*(b-a)

#本体
def perlin(r,seed=np.random.randint(0,100)):
np.random.seed(seed)

ri = np.array(r).astype(int) #整数部、インデックスとして使用
ri[0] -= ri[0].min() #
ri[1] -= ri[1].min() #イ

元記事を表示

ニューラル機械翻訳ライブラリのざっくりとした紹介

# はじめに
機械翻訳研究の世界最大のワークショップ、WMTに2020年から英日翻訳が追加されたり、DeepLが日本語対応したり、日本語機械翻訳への注目が高まっています。そんな中で機械翻訳モデルを試しに使ってみたい、学習してみた、そんな人もいるでしょう。私もこの分野は素人ですが今後使いたくなるかもしれません。今、どんな機械翻訳のライブラリが研究で使われているのか、自分のために調べました。なお筆者はFairseqと昔のOpenNMTしか使ったことがありません。

# どんなライブラリが使われているのか
機械翻訳コンペ、WMT2019の[Findings](http://www.statmt.org/wmt19/pdf/53/WMT01.pdf)によると
– Marian 30%超
– Fairseq 18%
– OpenNMT 16%
– Tensor2Tensor 14%
– Sockeye 14%
だそうです。それぞれ独自の機能(手法やモデルの実装)があるのですが、普通のTransformerはどれでも使えます。

## [Marian NMT](https://marian-nmt

元記事を表示

100日連続実装生活 1日目

#はじめに
今日から頑張って連続100日を目指して、pythonでなんらかの実装をしていこうと思います。
毎日1つでもやっていけば、成長できるのではないかと考えました。
最初のうちはUdemyの講座を見ながら実装なので、値を少し変えたり、少し工夫をしながら公開していこうと思います。
~~100日後に成長してるワニを目指して…~~

#1日目
##ロジスティック回帰
ロジスティック回帰モデルは分類を主に目指しているモデルです。
尤度というもっともらしさを数値から推測して、
尤度関数を最大化するように、最急降下法を使っていきます。
##実装するもの
Udemyの[人工知能・機械学習エンジニア養育講座](https://www.udemy.com/course/machine-learning-3algo/)を参考にして、
タバコとお酒の摂取量から、生活習慣病かどうかを分類するものを実装していきます。
##指針
健康な人に対するオッズを使用して、リスクの相乗モデルの関数を作成して、そこからシグモイド関数を導出してモデル構築します。
`シグモイド関数:1/1+e^-x`
`目的の関数:x=

元記事を表示

pip install で依存ライブラリのインストールに失敗したときの対処

## 環境
Python3.4.3
Windows10 64bit

## やったこと
“`
$ pip install Sphinx
~~ 中略 ~~
Collecting colorama>=0.3.5; sys_platform == “win32” (from Sphinx)
Downloading https://files.pythonhosted.org/packages/31/cb/88c908c1be067fb6bacd3d7488ccab1a212533767b951933aac3d22648e2/colorama-0.4.2-py2.py3-none-any.whl
colorama requires Python ‘>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*’ but the running Python is 3.4.3
“`
インストール失敗。
Downloadingの行からcolorama-0.4.2がインストールされていることがわかるが、最後の行でpython3.4は対応していないことがわ

元記事を表示

Youtubeのチャンネル登録者数を取得する

[Youtube Data APIを用いたバーチャルYoutuberのデータ収集 \- Qiita](https://qiita.com/kon2/items/f09def292c3b0be2bb8e) の写経

[Channels  \|  YouTube Data API  \|  Google Developers](https://developers.google.com/youtube/v3/docs/channels?hl=ja)

“`py:nijisanji.py
from googleapiclient.discovery import build

YOUTUBE_API_KEY = ‘

def youtube_channel_detail(channel_id, api_key):
api_service_name = ‘youtube’
api_version = ‘v3’
youtube = build(api_service_name, api_version, developerKey=api_key)

元記事を表示

pythonで自作パッケージをsetup.pyで作成する流れ

## はじめに

pythonで自作パッケージを`setup.py`で作成する流れです。
意外と`module not found`のエラーで手こずってしまったのでこちらに忘れないようにメモを残していきたいと思います。
今回はとくにPyPiなどにあげることはせず、単純にローカル環境で`pip install`する手順を整理する感じです。

## 流れ

1. `sample.py`、`__init__.py`、`setup.py` の内容を記述する
2. `pip install` してローカルにパッケージをインストール
3. `foo.py`の内容を記述して走らせる

## ディレクトリの構造

以下の構造にて

– `sample.py` に入っている関数を`pip install`でインストールして
– `foo.py`でその関数たちを走らせるとします。

“`
Documents
└ tasks_project
├ src
│ └ tasks
│ ├ __init__.py
│ └ sample.py # sample.p

元記事を表示

Aurora Serverless が起きるまで待つ

例えば AWS Lambda + Amazon CloudWatch Events で定期的にどこかからデータをひっこ抜いてきて適当に Amazon RDS にでも突っ込んでおくかという場合に、普通の Provisioned インスタンスだと少なくとも数千円/月はかかってしまうが Aurora Serverless にすれば使っていないときは勝手に寝てくれるので格安で済むのではないか。[^pricing]

[^pricing]: [Amazon Aurora Serverlessの利用費を試算してみた | Developers.IO](https://dev.classmethod.jp/articles/calculate-amazon-aurora-serverless-costs/)

ただしこのアイデアにはひとつ問題があって、**Aurora Serverless が起きるのが遅い**ということ。

DB クライアントから接続を試みると寝ていた Aurora Serverless は起動し始めるが、接続を受け入れられるようになるまでの間にクライアントがタイムアウトしてしまうな

元記事を表示

OTHERカテゴリの最新記事