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

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

【Python】辞書型変数(dictionary)

#辞書型変数とは
辞書型変数は、複数の値をもつリストのような変数である。
リストではindexによってリスト内の要素を参照することができる。
一方で、辞書型変数ではkeyによってvalue(値)を参照することができる。
以下の例でリストと辞書型変数の違いを確認して頂きたい。

“`python:dict.py
list={“apple”,”banana”,”chocolate”}
print(list[0])
>>>apple
dict={ “a”:”apple” , “b”:”banana” , “c”:”chocolate” }
print(dict[“a”])
>>>apple
“`
上例で、変数名=dictが辞書型変数である。
a→apple
b→banana
c→chocolateに対応する。
a , b , c のことをkeyといい、
apple , banana , chocolate のことをvalueという。

#辞書型変数の宣言の仕方(dict関数,zip関数)
辞書型変数は**dict関数、zip関数**を使っても宣言できる。
書きやすいと感じる方法で宣言して

元記事を表示

[Python3]ファイル(text, json, csv)の読み込み方の基本をまとめる

色々な方法があるが、基本的な手順は同じである。

1. ファイルをオープンする。
2. データを読み込む。

1番目は変わらない。2番目の読み込み方に色々な方法がある。

– ファイルの種類により使用する関数を変える
– ファイルの読み込み方を変える(ファイル全体、1行ずつ)

ファイルの読み込み方の概要をつかんでおいて、必要なものを深く調べるという学び方ができるようメモをまとめた。

# 環境
– Python 3.7.4

# フォルダ構成
“`
data_read_test
├──data
│ ├──test.json
│ └──test.csv
├──data_read_test_1.py
├──data_read_test_2.py
├──data_read_test_3.py
├──json_read_test.py
└──csv_read_test.py
“`

#ファイルオープンの方法
##組み込み関数open()
組み込み関数`open(path, mode)`を使う。
`path`には読み込み対象ファイルのパスを設定する
`mode`は、ファイルをオープンす

元記事を表示

[Python3]チームのために簡単なコーディングルールをまとめる

ある小さなチームのPython3での開発のコーディングルールをまとめる。
タイトルにある「簡単な」の意味は、あまりプログラミングスキルが高くないチーム向けに基本的なことをざっくりとまとめているということ。
チームの進行度やスキルレベルの成長に合わせて進化させられたらいいな。

# 環境
– Python 3.7.4
– pytest 5.2.2

# フォルダ構成
– フォルダ構成を一定にしてプログラム開発する習慣をつける
– プログラムとセットでテストも作成する習慣をつける

“`
(project name)
├── (project name) ………… プログラムのソースコード
│ ├── logs ………………. ログ出力先フォルダ
│ ├── data ………………. 連携ファイル格納先フォルダ
│ └── *.py
└── tests ………………… 単体テストのソースコード
└── test_*.py
“`

# 命名規則
– Pythonの標準的な考え方やルール

元記事を表示

Pythonでアルゴリズム(深さ優先探索、dfs)

#はじめに
 pythonで深さ優先探索をする場合、再帰ではパフォーマンスに不安があると聞いたので、stackで実装をしようと思いその備忘録として記事に残そうと思いました。
 学習の手助けになれば幸いですし、何かアドバイスなどありましたら是非コメントを頂きたいです!

#テーマ
 今回は、深さ優先探索の中でも代表的なテーマである、ある頂点をスタートして、各頂点まで到達するのにかかる時間について考えます。(時間というよりは順番?)その際、到達した時刻を調べる**行きがけ順**、最後に通過する時刻を調べる**帰りがけ順**、両方を**タイムスタンプ**でまとめて記録するという3つの場合を扱います。最後に通過するというのは、その頂点より下の頂点すべての探索が終わった直後のことを指します。
 dfsの詳しい解説は省きますが、スタート地点から行けるところまで深く行き、それ以上進めなくなったら前の分岐点まで戻り同じことを繰り返していきます。ここで、頂点番号が若い方を優先的に探索するとします。

#入出力
###入力
 1行目に頂点の個数を整数で、その後N行に頂点番号、隣接する頂点の個数、隣接する頂

元記事を表示

MATLABからPythonライブラリを利用したかった話

# はじめに
## この記事について
MATLABとPythonにはそれぞれ有利な点があります。
MATLABは行列演算に強く,日本語のドキュメントやSimlinkの存在などが強みです。
一方で,Pythonは無料で使用でき,scikit-learnなどの豊富な機械学習ライブラリが魅力です。
ですから,これらを使い分けたい場合もあります。

そんなときのために,[MATLABからPythonを直接呼び出す機能](https://jp.mathworks.com/help/matlab/getting-started-with-python.html)があります。
(逆に[PythonからMATLAB関数を呼び出す](https://jp.mathworks.com/help/matlab/matlab-engine-for-python.html)こともできますが,今回は触れません。)

ただ,調べてみても[公式のドキュメント](https://jp.mathworks.com/help/matlab/getting-started-with-python.html)があまり実用的では

元記事を表示

[Python3 入門 2日目] 2章 数値、文字列、変数

#Pythonのデータ型
・ブール型(TrueまたはFalseの値を持つ)
・整数型(43,23000000などの小数点以下がない数値)
・浮動小数点数(π=3.1415….のように小数点以下の部分がある数値、あるいは10e3のような指数表現。10e3は10の3乗という意味で1000を意味する。)
・文字列(文字の並び)

#2.1 変数、名前、オブジェクト
Pythonは全てがオブジェクトとして実装されている。(Rubyもそうだったな)
##オブジェクトとは?
データを入れてある透明な箱のようなもの。
オブジェクトには、上記のようなデータ型があり、そのデータで何ができるかが決まる。
そして、型にはボックスに入っているデータの値を変更できる(ミュータブル)、変更できない(イミュータブル)も決める。

###オブジェクトイメージ(対話インタープリタで実践)
1. 7という値に対してaという名前の変数を与える。 ⇨ 整数値7を入れたオブジェクトの箱が作られる。
※変数はただの名前であり、代入しても値はコピーされない。あくまでデータを入れているオブジェクトに名前を付けるだけ。名前は値自

元記事を表示

【matplotlib.pyplot】レイアウトを整えるためのチートシート

jupyterなどでmatplotlibで書いたグラフを発表などで使う際に、レイアウトがひちゃかちゃで悲しくなることはありませんか?
そんな時に参考にしたくなるようなチートシートを作ってみました。

[公式ドキュメンテーションはこちら](https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.html#module-matplotlib.pyplot)

# 1.プロットする

“`python
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)

plt.plot(x, y);
“`

最後の行のセミコロンはjupyterでの不要な出力を省略するために書いています。

出力はこんな感じ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54175

元記事を表示

【Python】JSONファイルに登録されたWebサイトのページを一括表示するツールを作成したこと&引っ掛かったところについて

#1.この記事について
###きっかけ
ECサイトや作品投稿サイトなどで同じ検索タグのページを一気に開くGUI型のツールが欲しかった。

※chromeなどではブックマークでフォルダにまとめて入れて一挙に開くことは可能だが、
変更したり追加したりするのはjsonとかのほうが手早いし、そのためにブックマークの編集を頑張るのもめんどくさかった。
あとはTkinter実装の再練習も含めて。

######※スクレイピングは用いていません(今後連携することも考えていますが…)。
######※したがってseleniumも用いていません。

######[※最新のツールとソースコードはGitHubに上げてます(後述)](#5終わりに)

#2.やりたいこと
・(jsonクラスは以前に作ったものを改良&共通部品化)
・Tkinterのコンボボックスのハンドリングクラスを実装&共通部品化
・mainメソッドでGUIを設定し、データを読み取り、GUIで選択されたwebページを開く

#3.使用したツール・環境
・Windows10
・Python 3.7.0
・開発はPycharm

#4.作成し

元記事を表示

ngrok と Python で 単に webhook を受け取ってみる

## tl;dr
* botの作成などに webhookにより送られてくるtoken が必要な場合がある
* webhook には外部に公開するサーバーが必要であるが、極力かんたんに webhook を受け取ってみる
* 単に listen するだけでなく、 200 OK を返すだけのサーバーなどは Python を使えば簡単に作ることができた

## 題材
* LINE の Messaging API の Webhook を題材にします。
* これは、JSON形式のデータが POST で送信されます。
* 今回は LINE 側へ Webhook が受信できると申告できるよう 200 OK を返します。

## 流れ
1. Python で 何を受けても 200 OK を返すようなサーバーを作る
1. ngrok で 外部からのアクセスを受け取れる環境を作る
1. ngrok に付属している Inspectツールで 受け取った Webhookの中身を見てみる

## Python で 何を受けても 200 OK を返すようなサーバーを作る
* GETやPOSTに応じて振る舞いを変更した

元記事を表示

Pythonで日付から曜日を取得する際に`locale.Error: unsupported locale setting`が出た

# Pythonで日付から曜日を取得したい

以下のようなイメージ
`2019-01-07 00:00:00`⇒火曜日

## 実行環境
* Windows10 Pro
* Python 3.7.4

## やったこと

こちらの記事を参考になりそうだったので、ほぼコピペして実行。
[Pythonで日付から曜日や月を文字列(日本語や英語など)で取得](https://note.nkmk.me/python-datetime-day-locale-function/)

localeモジュールでロケールを変更すれば取得できるらしい。

>“`python:time_test.py
>import datetime
>import locale
>
>dt = datetime.datetime(2018, 1, 1)
>print(dt)
># 2018-01-01 00:00:00
>
>print(dt.strftime(‘%A, %a, %B, %b’))
># Monday, Mon, January, Jan
>locale.setlocale(locale.LC_TI

元記事を表示

SQLAlchemy(automap) + GraphQLでN+1問題を解決する

何も考えずにgrapheneを使いSQLAlchemy(automap)でGraphQLを使うとN+1問題に遭遇すると思います。
回避しようとGraphQLのSchemaでresolveでいちいち書いたりするのは非常に生産性が悪く、また対応漏れを防ぐのが難しいと思います。
それを定義せずに回避する組み合わせがあったので書いてみます。

# 欲しい物
– 既に存在するRDBMSから自動でModelを生成できる
– Grapheneのスキーマにバインドできる
– relationshipで関係するリレーションを取得するときにN+1問題を起こさない

# 環境

– Python 3.7.6

### requirements
– Flask==1.1.1
– Flask-GraphQL==2.0.1
– SQLAlchemy==1.3.11
– graphene==2.1.8
– **SQLAlchemy-bulk-lazy-loader==0.9.9**

# 解決法

**SQLAlchemy-bulk-lazy-loader** を使いましょう。

### 1. ライブラリの読み

元記事を表示

gitのbranch名,tag名をpythonで取得する

# はじめに

機械学習系でmodelと中間生成ファイル,精度などの結果を同時に管理したいとき,Githubでbranchを切ってコードを管理するだけでなく,S3などのストレージを用いて管理したい欲が深いです。

## 既存のツール

既存のツールで同様の課題を解決したかったら,[mlflow](https://github.com/mlflow/mlflow)を使うのが良さそうです.

ただ,mlflowでversion管理するにせよ,[flask](https://github.com/pallets/flask)などで自作管理アプリを開発するにせよ,gitのbranch名とS3のobject名は統一した方がいいという気持ちがありました.

また,過去に切ったreleaseタグにcheckoutして当時の推定値を再現したい欲もあります.

ということで現在のbranchと,remoteのreleaseタグを全取得するPythonコードを書きました.

“`Python
import subprocess
import pandas as pd

def get_current

元記事を表示

pythonによる数値の数え上げの方法

pythonによる数値の数え上げの方法

(4 6 12 9)のように任意の数字の個数を数えるためのプログラムです。
文字列である数字をリスト型に直し、len関数で要素の数を数える方法です。

a = (‘4 6 12 9’)
b = a.split()
print(len(b))

元記事を表示

関数のキーワード引数とデフォルト引数

“`py
def player(job=’戦士’, weapon=’鋼の剣’, money=’2600′):
print(‘職業は’ + job + ‘です。’)
print(‘武器は’ + weapon + ‘です。’)
print(‘所持金は’ + money + ‘ゼニーです。’)
print()

player()
player(weapon=’木の杖’, money=’2500′, job=’魔法使い’)
player(job=’勇者’, money=’14500′)
“`

“`:実行結果
職業は戦士です。
武器は鋼の剣です。
所持金は2600ゼニーです。

職業は魔法使いです。
武器は木の杖です。
所持金は2500ゼニーです。

職業は勇者です。
武器は鋼の剣です。
所持金は14500ゼニーです。
“`

player()ではデフォルト引数
job=’戦士’, weapon=’鋼の剣’, money=’2600’が入る。

player(weapon=’木の杖’, money=’2500′, job=’魔法使い’)では
キー

元記事を表示

【Python】変数の型変換

#変数の型
変数の型と表記しているが、厳密にはデータの型である。
ただし、データは変数に格納され、扱われるので、変数の型と表現したい。
変数の型は、**type(変数名)**で確認することが出来る。
本記事ではデータの型変換(=**キャスト**)について紹介する。

“`python:type.py
a=”1″
b=1
print(type(a)) #output=str
print(type(b)) #output=int
“`

上例のように同じ1でも**数字**として扱うか、**数値**として扱うかで**PC内部での扱われ方も変わる**。
上例は一例にすぎず、type関数を使うと**int**、**str**、**list**や**DataFrame**など様々な結果が返ってくる。

#型変換
型変換を行うことによって、演算を行うことが出来るようになる。
例えばテキストデータを読み込んだデータが文字型として扱われおり、そのデータを使って算術計算を行いたい場合に型変換は必須である。(他にも型変換を用いる機会は多々存在する。)

**変換方法は関数名(変数)**である。
★単一変

元記事を表示

Python OpenCV (-215:Assertion failed) !_src.empty() エラーについて

#概要
pythonにて画像認識のプログラムを読み込んだ際に
(-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor’というエラーが出た。

Colorと色が関係しているのかと思いきや違った

#原因
img = cv2.imread(‘画像ファイル名.jpg’)

ファイルのパス指定が出来ておらずファイルを認識していないという意味のエラー

#解決方法
ファイルの指定先を絶対パスにする。

“`python:readcv.ipynb
‘img = cv2.imread(r’C:\Users\ユーザー名\Anaconda3\envs\pytorch04gpu\Lib\site-packages\cv2\data\画像ファイル名.jpg’)’
“`

元記事を表示

No module named ‘distutils.util’でget-pip.pyで使えない

解決

“`
sudo apt-get install python3-distutils
“`

元記事を表示

開発合宿でGCPのautoML(ベータ版)を触ってみた話

この記事は [Opt Technologies Advent Calendar 2019](https://qiita.com/advent-calendar/2019/opt-technologies) 2日目の記事です。公開は諸事情により7日目です。

弊社では毎年開発合宿([去年の様子](https://tech-magazine.opt.ne.jp/entry/2018/12/10/170000))でエンジニアがYATTEIKIを発揮します。最近はビジネスサイド参加者が増えていて活発っぽい。時代はAIバブルですが Google の [Cloud autoML](https://cloud.google.com/automl/?hl=ja)を触ってみたら楽にAIな開発ができたので、機械学習なんもわからんマンでもできる実装手順を紹介します。

# はじめに
〜ランチ中〜
弊社データサイエンティスト「[kaggle](https://www.kaggle.com/) のachievement機能みたいに社員を格付けしたい」
私「どうして」
弊社データサイエンティスト「人類は評価される

元記事を表示

GCPのコンピューティングサービスの比較【サーバレスに使いたい】

# 概要

 去年GCPを利用していて、最終的にCloud Runに行き着いた理由を示します。ここで挙げるGCPのサービスは以下の通りです。

– GAE(Google App Engine)
– GCE(Google Compute Engine)
– Cloud Functions
– Cloud Run

前提条件は以下の通り。

– アプリケーションとして管理
– 料金は安く
– サーバレス
– Pythonを使用

 ここでの観点は「実装のしやすさ」「料金の安さ」「管理のしやすさ」です。ここでの管理のしやすさとは、「**アプリケーションとしての管理のしやすさ**」としています。結論から述べると、この観点においてCloud Runが良いのかなと思っています。Beta版であることを気にしないのであれば、これで十分だと思います(2020年1月7日現在)。

 また、GKEをここで出してないのは私がコンテナ技術に疎いのと、先にCloud Runを触ったからです(ちなみにCloud Runもコンテナサービスです。私は一応以前に勉強していたので、そこそこ振り返って実装できました。ただ、初

元記事を表示

【Python】リストの扱い

#リスト
**リストとは変数やデータをひとまとめにしたもの**。
イメージ的には複数の変数をつくるような感じ。

#宣言
宣言の仕方は、**変数名=[]**。

“`python:list.py
list=[]
#これでリストの宣言ができる
#リストの中身は空
“`

値を持ったリストを直接生成することもできる。

“`python:list.py
list=[1,2,3,4,5]
#これでリストの宣言ができる
#リストの中身は[1,2,3,4,5]
“`

#要素へのアクセス
変数名[x]でx番目の要素にアクセスできる。
(※要素は**0番目から始まる**。)
また、変数名[-1]で最も後ろの要素にアクセスできる。

“`python:list.py
list=[1,2,3,4,5]
print(list[0])
#output=1
print(list[-1])
#output=5
“`
#要素の追加
**変数名.append()**で要素を追加できる。追加された要素は一番最後の要素となる。

“`python:list.py
list=[1,2,3,4,5]
pri

元記事を表示

OTHERカテゴリの最新記事