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

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

Power QueryでPythonに引数を渡して実行する

Power QueryでPythonにパラメーターを渡して実行する方法があります。試しにこんなコードを書いてみます。

“`argv2table.py
import pandas as pd
import csv
my_argv = [r’MY_ARGVS’]
l = list(csv.reader(my_argv, delimiter=’ ‘))[0]
df = pd.DataFrame(l, columns=[‘argv’])
“`
ここで注意したいのは、冒頭の“MY_ARGVS“の部分は後々置換対象となるので、コード中に二度と登場させてはいけないということです。

Power Queryではこう書きます

“`
(argv) =>
let
Source = Text.FromBinary(File.Contents(“c:\temp\argv2table.py”)),
rep = Text.Replace(Source, “MY_ARGVS”, argv),
pyexe = Python.Execute(rep)

元記事を表示

ESP32をPythonで動かすためにMicroPythonをWindowsで入れる

ESP32はarduinoベースのファームウェアが最初から入っている。これをPythonで書けるようにファームウェアを変更する。

MicroPython参考

###コマンドプロントからpipを利用してesptool.pyをインストールする。
micropythonを入れるための下準備。
`pip install esptool`

###インストールしたesptoolからespのフラッシュを消去。
参考ページには
esptool.py –port /dev/ttyUSB0 erase_flash
とコマンドが書いてあったがここでエラーが発生。
Windowsの場合はポートの名前が違う。
デバイスマネージャからESP32をつないでいるポートを見るとCOM5とあったので、こちらで通してみたところ通った。
Linux/macとポート番号の指定の仕方が違うので戸惑った。

`esptool.

元記事を表示

Power Queryテクニック集その1

自分がよく使っているPower Queryのuse caseをまとめてみました。まだ覚えたてなので、いろいろつたない点もありますが、お気づきの点がございましたらご指摘ください。

## Mの特徴
とりあえず、Mの特徴をざっくりまとめます。

* 大文字小文字を区別する
* データ型の扱いが厳密
* インデックスが0から始まる
* すべての式は同時に評価される

最後の点はちょっとわかりにくいですが、要は上から順番に実行されるのではなく、表計算ソフトのように依存関係に従って処理されるということです。

## データ型
こちらもざっくり。詳しくはMSのreferenceを見るのが一番良いです。
### リスト
リストというのは値の集合で0から始まるインデックスがついています。リストを作るには以下のように“{}“で各要素を並べるだけです。あらかじめ決まっているリストは直接書いてしまったほうが早いこともあります。

“`
{1, 2, true, “abc”, 3.1}
“`
リストは順番のある値の集合なので、0から始まるインデックスを後ろにつけて取り出せます。

“`
{1, 2,

元記事を表示

pythonのプロパティのあれこれ n

#はじめに
pythonの「property」について理解できていなかったので、
いろいろ調べたことをまとめていきたいと思います。

#そもそもプロパティってなんだっけ?
[簡単Python](https://www.amazon.co.jp/%E3%81%8B%E3%82%93%E3%81%9F%E3%82%93-Python-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-%E6%8E%8C%E7%94%B0-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4774195782)には、

>値をしっかり管理したいけど、インスタンス変数のように自然に値にアクセスできるようにもしたい。
この両者のいいとこ取りをしたのが、「プロパティ」。

と書かれています。
要は外から簡単に値を変得られない上に、取り出しは簡単にしたい時に役立つものと思ってもらったら良いです。

“`
def プロパティ名(self):
処理

‘プロパティの値を取

元記事を表示

データサイエンスはじめて1か月以内で参加したコンペで銀メダル(上位3%)とるまで!

# はじめに

 データサイエンス・機械学習っておもしろそうだけど、どうやって勉強すすめたらいいんだろう?というところから2月に勉強をスタートし、勉強のinputだけではなく実践したいと思って3月にKaggleのコンペに参戦!
 その結果がなんと、***銀メダル (+上位3%)***をとることができました!
 この記事では、そんな自分の勉強してきた過程とコンペを進めてきた流れをまとめてみようと思っているので、一例として見てもらえると嬉しいです!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/474340/b34040d5-8bc4-bc7b-9596-b695128ce036.png)

#概要
➀コンペの紹介
➁コンペ終了までの流れ
 (コンペ参加する前→コンペ参加後)
③コンペ中にしていたその他の勉強

#今回参加したコンペ
M5 Forecasting – Accuracy コンペ (2020年3月~6月)
![image.png](https://qiita-image-st

元記事を表示

contextlib.suppress

“`py
import contextlib
import os

try:
os.remove(‘somefile.tmp’) # 存在しないファイル
except FileNotFoundError:
pass

#上のtry,exceptと同じコードが短く書けます
with contextlib.suppress(FileNotFoundError):
os.remove(‘somefile.tmp’)
“`

元記事を表示

contextlib.ContextDecorator

“`py
import contextlib

# @contextlib.contextmanager
# def tag(name):
# print(‘<{}>‘.format(name))
# yield
# print(‘‘.format(name))

class tag(contextlib.ContextDecorator):
def __init__(self, name):
self.name = name
self.start_tag = ‘<{}>‘.format(name)
self.end_tag = ‘‘.format(name)

def __enter__(self):
print(self.start_tag)

def __exit__(self, exc_type, exc_val, exc_tb):
print(exc_type)
print(exc_val)
p

元記事を表示

辞書引きアルゴリズム入門

# はじめに
業務で自然言語処理をしていて何かと高速化を求められる場面が多く、辞書引きアルゴリズムという言葉に行き着いた。
自然言語処理界隈で深層学習が幅を利かせすぎているせいか、辞書引きアルゴリズムと聞いても同じようにピンとこない人の方が多そう。

# 辞書引きアルゴリズムとは
テキスト中の有り得る全ての部分文字列から辞書にある単語を引いてくるアルゴリズムのこと。
形態素解析とかの処理の裏側を支えている。
この道を極めるとMeCabとかJumanとかが作れるらしい。
例えば、abcという文字列が与えられた場合、部分文字列は以下のようになる。

– a
– b
– c
– ab
– bc
– abc

これらの部分文字列が辞書にあるかどうかを調べていく。
要するに文字列の中から辞書内の単語を引っ張ってくるアルゴリズム、といった感じである。

この部分文字列の列挙の計算量は$O(N\^2)$であるが、この時点でアプリケーションとして実用化には程遠い。($O(N)$が望ましい)

ちなみに、辞書はハッシュと呼ばれることもあるが、文字列のハッシュ値の計算に$O(N)$を要するので、結局$O

元記事を表示

(自分用)Django_1(基本のき/Hello World/テンプレート)

# 項目
1. Djangoプロジェクトを作る
2. サーバアドレスの指定
3. Djangoを動かしてみる
4. Hello World
5. テンプレート(html)呼び出し
6. テンプレートへpy側からデータ受け渡し

# 1.プロジェクトを作る
– プロジェクト = アプリケーションをまとめる単位
– APPの機能ごとにアプリケーションを作り、最後にそれを馬鹿でかいプロジェクトに纏めるとかが良いと思う
– 環境構築に関しては`Django_環境構築`みたいなのに後日書くかもしれんし書かないかもしれん

“`bash:ターミナル
# 一回Djangoのバージョンだけ確認しておく
$ python -m django –version

# myappってプロジェクトを作る、startprojectって入れる事でプロジェクトの中身もある程度用意してくれる
$ django-admin startproject myapp
“`
– これによって、自分が居たディレクトリの中に`myapp`ってディレクトリが出来ている
– `myapp`の中身
– `manage.py`:

元記事を表示

anacondaをインストールした後PATHを通すのに躓いた話

pythonの勉強のためanaconda3をインストールして、pythonを実行しようとしたら躓いた話。

anaconda3はインストール時にPATHを通すかどうか聞かれるがチェックを入れ忘れたままインストールしてしまったので、手動でPATHを設定しなければならなくなりました。

#PATHの通し方(Windows10)
Windows10ならPATHの設定は以下の手順でできます
・検索ボックスで「環境変数を編集」で検索
・「Path」を選択→「編集」
・「新規」を押してインストールしたディレクトリを追加
 自分は「E:\Apps\anaconda3\」にインストールしたため、ここを追加しました
・ついでにpip.exeのある「E:\Apps\anaconda3\Scripts」も追加

#PATHを通した結果…
以上でPATHが通ったため、コマンドラインで「python -V」でPATHが通ったか確認。
うまくいっていればインストールしたpythonのバージョンが表示されるはずが、なぜか「Microsoft Store」のpythonのインストールページに飛ばされる…

元記事を表示

Kaggle~住宅価格予測②~

# はじめに
[前回](https://qiita.com/ProgramWataru/items/e556a7162f0fb5473531)、線形回帰にて実装したが今回は非線形を用いての実装してみた。

引き続きこちらの記事を参考にデータ前処理を実装した。
[「データ前処理」- Kaggle人気チュートリアル](https://qiita.com/hkthirano/items/12e046b3e02961d8460d)

# モデルを作成
① 線形回帰(LinearRegression)
② Ridge回帰(Ridge)
③ サポートベクターマシン回帰(SVR)
④ ランダムフォレスト回帰(RandomForestRegressor)
こちらの4つについてモデルを作成した。

“`python
# 説明変数と目的変数
x = df_train[[‘OverallQual’, ‘YearBuilt’, ‘TotalBsmtSF’, ‘GrLivArea’]]
y = df_train[‘SalePrice’]

# モジュールをインポートする
from sklearn.model_

元記事を表示

ゼロから始めるLeetCode Day74 「12. Integer to Roman」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

[Python]PylanceのVS Code拡張機能をさっそく使ってみた。

VS Codeなどで使えるPylanceという拡張機能がリリースされていたので早速使ってみました。

参考 : [型ヒントでPython開発を加速 ~Microsoft、VS Code向けの拡張機能「Pylance」を発表](https://forest.watch.impress.co.jp/docs/news/1262974.html)

# (大雑把に)どんな拡張機能?

– マイクロソフト製のPythonの拡張機能です。
– Python拡張機能に入っているようなPythonの入力補完周りが有効になります。これはまあ大半のVS Code使ってPythonのコード書いている方はPythonの拡張機能入れていらっしゃるでしょうからそこまでは大きく変わりません。
– 以前書いたPythonの型チェック用のPyrightと同じように、コードを書きつつ型のミスや補完が効きづらい箇所で型アノテーションをすることで補完が効くようになってくれます(内部でPyrightが使われています)。
– Pyrightの記事: [入力補完を充実させ、より堅牢なPythonコードのための型アノテーシ

元記事を表示

Light CNNの実装(Python Keras)

#はじめに
本記事ではLight CNN(LCNN)という深層学習モデルを実装したのでまとめさせていただきました。
最初にLCNNとその特徴であるMax Feature Mapping (MFM)という技術について説明した後、実装と評価をしていきます。
コードは全てpython、LCNNの実装はTensorflow, Kerasを使って行います。
なお、LCNNを実装するためのコードはGithubに載せてるので参考にしてください。
Github URL : https://github.com/ozora-ogino/LCNN
#Light CNN
LCNNは2015年にSTC提案され、現在はSTCという機関により研究されている深層学習手法で画像分類や音声分類等の分野で使用されています。
LCNNは8層の畳み込み層から構成されており、各層における活性化関数でMax Feature Mappingと呼ばれるものを使っているのが大きな特徴となっています。
#Max Feature Mapping
MFMについては[こちら](https://qiita.com/ozora/items/c7d

元記事を表示

回帰の評価指標、RMSE(平均平方二乗誤差)の落とし穴!

#はじめに
 機械学習の回帰モデルの評価としてはRMSE(平均平方二乗誤差)がよく使われます。一方で、RMSEは外れ値に弱いということが紹介の中でよく書かれていますが気にせず使われている例が見られます。
 「それじゃあ一体どれくらい弱いのか?」というのを考えることでアンチパターンとして抑えておきましょう。
 先に結論を書くと**「目安として、平均の10倍以上の値が存在する場合は気をつけて使用する必要がある。その場合は対数をとったRMSLEを使用するのが良い」**となります。

#①RMSE(平均平方二乗誤差)とはどんなもの?
まあ、名前のとおりです。誤差、つまり実際の値と予測値の差分を二乗した後に平均してルートを取るというものです。

“`math
\textrm{RMSE} = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(y_{i}-\hat{y}_{i})^{2}}
“`
計算式は偏差値にかなり近くて、偏差が誤差に変わっただけです。なので上手く使えば「このモデルはだいたいこれぐらいの誤差を出すんだろうな」というイメージが作れます。

#②RMSEが

元記事を表示

cumprodとcummaxについて

#1 目的
cumprodとcummaxの使い方例を説明します。

#2 内容

cumprod ・・・ 配列の全要素について累積積を計算します。
cummax ・・・ 配列の全要素から最大値を取り出します。

“`python:test.py
import numpy as np
import pandas as pd

dat = [
[‘2019-07-01’,10],
[‘2019-07-02’,12],
[‘2019-07-03’,8],
[‘2019-07-04’,14],
[‘2019-07-05’,7],
[‘2019-07-08’,3]
]
df0 = pd.DataFrame(dat,columns=[“A”,”B”])

print(df0)

df1=df0[‘B’].pct_change()
df2=(1 + df1)
df3=(1 + df1).cumprod() #0番目からi番目の要素までの累積積を算出します。
df4=(1 + df1).cummax() #0番目からi番目の要素の中で最大値

元記事を表示

[光-Hikari-のPython]09章-01 クラス(オブジェクトの基礎)

#[Python]09章-01 オブジェクトの基礎
今まで、文字列や数値、データ構造の分野ではリストやタプルなどに触れました。データ構造の個所で触れましたが、これらは**オブジェクト**と言いました。

さて、このオブジェクトとは何でしょう。まずはオブジェクトについて説明して少し掘り下げていきたいと思います。

##オブジェクトとは
まずは**Python Console**にて以下のコードを入力して確認してみましょう。

“`.py
>>> S = ‘hello’
>>> type(S)

“`

**S**という変数に’hello’という文字列を代入しています。さて、次に**type()**関数により、**\**が出力されています。
これは、S変数がが現在**str型のオブジェクト**であることを意味しています。

では、strオブジェクトの詳細を見てみましょう。以下のURLから閲覧できます。
[https://docs.python.org/ja/3/library/stdtypes.html#text-sequence

元記事を表示

python dictとsorted関数について

pythonの勉強をしていると、sorted関数とはは避けて通れないものです。しかもよく忘れるので、メモっておきますね。ここは辞書に対してsorted関数を使っています。
気をつけるべきポイントはlambdaの後ろのyやxは別に何でもいいということです。例えば、lambda aaa:aaa[0]としても構わないのです。なぜなら、ここのyやxはただ前のlistの(例ではlistA, listB, listCのことです)中身なのですから。ここさえ押さえておけば大丈夫そうですよね。
以下の例を見てみてください。

“`python
listA = [3, 6, 1, 0, 10, 8, 9]
print(sorted(listA))
#结果1
#[0, 1, 3, 6, 8, 9, 10]

listB = [‘g’, ‘e’, ‘t’, ‘b’, ‘a’]
print(sorted(listB))
print(sorted(listB, key=lambda y: y[0]))
#结果2
#[‘a’, ‘b’, ‘e’, ‘g’, ‘t’]
#[‘a’, ‘b’, ‘e’, ‘g’, ‘

元記事を表示

VSCode + Python で, Jupyter notebook っぽいインラクティブ表示モードを使うメモ

## 背景

* Jupyter-lab で matplotlib などでプロットのインラクティブ表示などを使っているが, VSCode でも似たようなのがほしい
* `.ipynb` で VSCode で notebook モードにする手ははあるが, vim キーバインドが使えずつらい 😥
* 素の `.py` ファイル/プロジェクトでインタラクティブプロット表示とかしてほしい

## 方法

Working with the Python Interactive window
https://code.visualstudio.com/docs/python/jupyter-support-py

Python ファイルを作成し, `#%%` と打つだけで, notebook っぽい interactive mode いけました!
(`#` と `%%` には, スペースがあってもなくてもどちらでもかまいせん)

jupyter 関連インストールされていなければ, インストールしますかポップアップ出してくれます!

![Screenshot from 2020-07-02

元記事を表示

PDFをOCRしてDocumentsに変換する

# はじめに

本記事は、Python(Google Colab環境)でのPDFのOCR処理(Google Documentsへ変換)について解説します。

Google DriveにはPDFをOCR処理してDocumentsファイルに変換してくれる機能が存在します。
Pythonコードでの処理方法について記載します。

1. PDFからテキスト抽出を行う
2. テキスト抽出にはGoogle DriveのOCR機能を用いる
3. OCR処理によってGoogle Documentsへ変換し、テキスト抽出を行う
4. Documentsに変換された際のファイル名の英字が全角になる問題への対処

特に、4のファイル名の全角問題については情報がなかったため、同じ問題に悩まされている・悩まされた方へナレッジとして共有したいなと考えました。

# 技術要素

– Google Colaboratory (以下、Colab)
– python 3.x
– [googleapis/google-api-python-client](https://github.com/googleapis/googl

元記事を表示

OTHERカテゴリの最新記事