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

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

PythonでSSH経由し外部のMySQLデータベースを操作してみる

ローカルで外部のデータベースを操作したい時に、いつもSequel proなどのツールでSQL文を実行するようにしていますが、動的にSQL文を作成したいや結果確認も一気にやりたい時になると、少し不便かなーと感じています。
Pythonを使ってみたらどうかなと思い、かつ最近もJupyterを試してみたいので、今回はJupyterを使って、SSH経由でMySQLデータベースを操作してみまして、その方法をメモしました。

## やりたいこと
– 踏み台(bastion)経由してMySQL DBに接続する
– 更新対象のレコードを抽出し、更新SQL文を動的に作成する
– データ更新を行い、進捗を表示する
– 確認しやすくため、更新されたレコードの更新前の情報を保持する

## 環境
今回は、
PC:MacBook pro
OS:macOS 10.15.2
Jupyter(python3)で試してみました。

## 実装
流れとしては

– 必要なmoduleを用意
– 検索関数、更新関数、進捗表示関数の作成
– 各関数の実行
– 結果の表示

### 必要なmoduleを用意
まず、必要なmod

元記事を表示

【初心者向け】回帰モデルの自前データで止まっている人向け(statsmodels(第1回目))

### 【初心者向け】回帰モデルの自前データで止まっている人向け(statsmodels(第1回目))
ほぼ、備忘録

**サンプルデータで止まっている人向け、statsmodels(OLS)入門**

statsmodelsで回帰のサンプルをやってみて、自分で作ったデータで止まっている人向けの入門記事です。

最近、データの予測をはじめまして、時系列の分析としてfacebookのprophetは、やってみたところ、用意したデータも少なく、精度はまだ未知数ですが、ともかくひとまず動きました。基本だと思われるstatsmodelsやsklearnで回帰を始めたところ、自分でデータを作ったところで、エラー等が出て止まっておりました。

statsmodelsの公式サイトを見たり、色々なサイトを参考にして、少しずつ進めていったところ、なんとかほぼ想定どおり動いたようです。

モデル適用のところで、渡すデータで止まっていました。
自作のデータで、なんとか想定に近い動きになった為、投稿したいと思います。

このスクリプトで想定しているケースは、架空

元記事を表示

RaspberryPi でラジコン受信機PWM信号の読み取りと、サーボへの出力

#はじめに

ラズパイでラジコンしたい!という話の中で、プロポの受信機からのPWM信号をラズパイで読みたい場合と、ラズパイからPWM信号を出してサーボを制御したい場合とあると思います。

ここでは両方解説します。

詳細な解説は無いです。私がベストプラクティスと思う方法を紹介するのが趣旨です。
外付けハードウェアを最小限にすること、環境構築が簡単なことに重点を置いてます。

#プロポの受信機からのPWM信号をラズパイで読む

![pwm-in.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104360/8c471ccc-3318-5ccd-561f-3f414aa5eb76.jpeg)

(図は受信機が省略されてます)

普通にそこら辺のGPIOライブラリを使ってパルス幅の計測をすると、所望の精度が得られず途方に暮れてしまいます。RTOS(リアルタイムOS)でないと無理なのだろうか。多くのLチカ卒業生が壁にぶち当たり(以下略)

調べた中で一番良かったのは、[pigpio](http://abyz.m

元記事を表示

【python3】pandas で平均と共分散行列をjson に保存

### 前書き

いつもエイや!でコードを書いていて平均と共分散を出力するのも何度も行っているのですが、メモしておきます。本当に中身は単純です。ひねりはありません。すみません。

状況:pandas データがあり、特定のデータX,Y,Z についての平均と共分散を求めたい

### 方針

1. x,y,z のみを含むDataFrame を作成する
2. 作成したDataFrame の平均と共分散を求める。
3. json ファイルに出力する。

### 実装

ポイントは、
– DataFrame でデータ名を指定して抽出するには、“`.loc“`を使います。
– DataFrame には mean() も cov() も corr() もあり、出力はDataFrame だったりするので、values でndarray を参照します。
– 辞書にlist として登録するには、ndarray のtolist() を利用できます。

“`python
from pandas import DataFrame
from numpy import random
import json

元記事を表示

ゼロから始めるLeetCode Day22「141. Linked List Cycle」

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

その対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。

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

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

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

前回
[ゼロから始めるLeetCode Day21 「448. Find All Numbers Disappeared in an Array」](https://qiita.com/KueharX/items/7ced157c3a103b0e39e0)

基本的にeasyのacce

元記事を表示

python3とFlaskでフロント実装の動作確認用APIサーバ構築

###概要
フロントの動作確認様に、WebAPIサーバをpython3で構築する。
その備考録

###前提
インストール済み

“`
>$ python3 –version
Python 3.7.7
“`

###Flaskのインストール

“`
$ python3 -m pip install Flask
Collecting Flask
Downloading Flask-1.1.2-py2.py3-none-any.whl (94 kB)
|████████████████████████████████| 94 kB 792 kB/s
Collecting Jinja2>=2.10.1
Downloading Jinja2-2.11.2-py2.py3-none-any.whl (125 kB)
|████████████████████████████████| 125 kB 6.5 MB/s
Collecting Werkzeug>=0.15
Downloading Werkzeug-1.0.1-py2.py3-none-a

元記事を表示

複数のPython バージョンをupdate-alternativesで管理する (Ubuntu)

サードパーティーのライブラリを使い分ける必要があり、以下のことを達成したい。

– (1) 複数のPythonバージョンを使い分けたい(Python 2.7, 3.6, 3.8など)
– (2) Pythonバージョンごとにnumpy等のメインとなる(プロジェクト同士で共有されるような)ライブラリを別々にインストールしたい。
– (3) Pythonバージョン内で、プロジェクトごとにPython環境を作りたい。

(同時進行しているプロジェクトに悪影響を出さないために、VirtualBoxを用いてMac上でUbuntuを動かし、実験しながら上記の目標を達成したい。)

その第1段階として、(1) (2)を行います。

# (0) 環境
– Ubuntu 20.04 (Mac上でVirtualBox6.1を利用)

# (1) 複数のPythonバージョンを使い分ける(Python 2.7, 3.6, 3.8など)

“`bash

$ sudo apt update && apt upgrade -y

$ sudo apt-get install build-essential

元記事を表示

ズンドコキヨシが停止するまでの平均ズンドコ回数について

#概要
ズンドコキヨシにおいて、平均何回ズンまたはドコをプリントしたら「キ・ヨ・シ!」に到るかについて、初等的な算出法が見当たらなかったので今更ながら記事にしました。

高校数学までの範囲で理解できる内容になっていると思います。

どういうプログラムだったか最早忘れたという方はズンドコキヨシまとめをご参照ください。

Enter無し一文字入力しようとすると文字が消えてまう現象

#一文字入力をしてみたい
input()関数はエンターキーを打たないと読み込んでくれないんです。
エンターキーを押すのを省きたいんですね。
ということでエンターキーを打つのを省く手段を検索しました。

“`python
import sys
import tty
import termios
def getch():
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
try:
tty.setraw(fd)
return sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
“`
macの場合これでできるらしい
参考元:https://torina.top/detail/428/

##実行

“`python
while True:
print(‘入力:’,end=”)
key = getch()
print(key)
# esc

元記事を表示

AtCoder Beginner Contest 167 参戦記

# AtCoder Beginner Contest 167 参戦記

700番台とか初めてなのでイヤッッホォォォオオォオウ!!

## [ABC167A – Registration](https://atcoder.jp/contests/abc167/tasks/abc167_a)

2分で突破. 書くだけ.

“`python
S = input()
T = input()

if S == T[:-1]:
print(‘Yes’)
else:
print(‘No’)
“`

## [ABC167B – Easy Linear Programming](https://atcoder.jp/contests/abc167/tasks/abc167_b)

3分半で突破. `sum(([0] * A + [1] * B + [-1] * C)[:K])` って書いている途中で K≤2×109 に気づいた. なんという時間の無駄.

“`python
A, B, C, K = map(int, input().split())

resu

元記事を表示

【Python】素人が機械学習を始めるにあたって

#はじめに
この記事はプログラミング初心者の筆者が機械学習をすすめる上で、参考になったことを備忘録がてら記すものです。

素人目線で参考になった情報などを記載していきます。

#機械学習のために参考になったサイトの紹介

何かとトレンドの機械学習を私も試してみたくなり、いちから挑戦しています。

###機械学習とはなんぞや

まず機械学習とは何かを簡単に学べるサービスの紹介です。

####其の一、aidemy
無料の会員登録が必要だが、動画で機械学習の入門を学べます。
無料のコンテンツはそこまで多くないが、まず概要をサクッとさらいたい人はよいかも。
Pythonの初心者コースもあるので、プログラムを触ったことがない人でもとっつきやすいかも。
>https://aidemy.net/

####其の二、codexa
>https://www.codexa.net/
同じく無料の会員登録が必要だが、こちらは線形代数や統計など機械学習に必須となる部分も無料で学べます。
(めちゃくちゃ助かりました)

#実際に手を動かすにあたって行ったこと
inputを上から行い、次はoutputというこ

元記事を表示

Nuxt&Django REST Framework構築マニュアル GET編①

# 概要

フロント:Nuxt
バックエンド:Django REST Framework(以下DRF)
で新しいプロジェクトなどを立ち上げた時に設定などをいちいち調べるのがめんどくさくなったため、まとめておきます。

ただ、設定ファイルだけを書くのでは個人的に記事として物足りない。

なので、ついでに基本的な操作であるAPIを叩いてデータを取得、そしてデータをPOSTするところまで書く予定です。
なお、今回はDBはSQLiteを使います。PostgreSQLやMySQLなど他のRDBが使いたい場合はDRF側のDBの設定を書きかえるだけなので、そちらの設定は各自よろしくお願いいたします。

ひとまずこの記事では、プロジェクトを作り、NuxtからDRFで作ったAPIを叩いてデータベースの一覧をGETするところまでです。

ソースコードは[こちら](https://github.com/Kuehar/nuxt-django)にあるのでわからないところは適宜見てください。

また、[Twitter](https://twitter.com/kueharx)かこの記事のコメント欄でわからないとこ

元記事を表示

なぜpythonでimportするとモジュールが使えるのか

ちょっと気になっていて調べたらなるほどとなったのでメモ

皆さん何気なく使っているimport文。
pipでインストールしたモジュールを使うために、pythonを勉強し始めたときに、きっと誰もが一度は使ったと思います。

“`
import os
import math
import cv2

“`

## 自分で書いたクラス、関数を呼び出したい

ある程度、pythonが書けるようになってくると、自分で書いたコードを分割したりして、管理したいと思うはずです。
例えば、util_func.pyという関数をたくさん定義したファイルを作っておいて、ほかのスクリプトでも使えるようにするみたいな感じです。

その時に、何の考えもなしに

“`
from util_func import f1
“`
みたいな感じに書くと、Module not foundというエラーが出たこと、皆さんありませんか?

そこで調べてみると、以下の様なコードを挿入すると大丈夫らしい。

“`
sys.path.append(os.pardir) #ファイル構成にもよりますが。。。
“`

実際にやっ

元記事を表示

【グラフ描画】複数系列の棒グラフをmatplotlibとseabornで書いてみた

# はじめに
複数系列の棒グラフの描画をmatplotlibとseabornで比較してみました。

結論から言うと、**seabornは便利ですね**という記事です

– 環境
– Windows-10-10.0.18362-SP0
– Python 3.7.6
– pip 19.3.1
– pandas 1.0.3
– matplotlib 3.1.2
– seaborn 0.10.0
– numpy 1.18.1

# 描画するグラフ
左側がmatplotlib,右側がseabornです。グラフだけ見ると同じですが、これらを描画するまでがseabornは楽です。
棒の色は同じ色を指定していますが、seabornのほうがちょっと淡いですね。こういうのももしかしたら設定がどこかにあるんでしょうか・・・
![グラフを描画してみた.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635079/5370f02a-0aaa-8cc1-aac2-00aadf693da4.png)

元記事を表示

【初心者向け】回帰モデルの自前データで止まっている人向け(statsmodels(第2回目))

### 【初心者向け】回帰モデルの自前データで止まっている人向け(statsmodels(第2回目))
ほぼ、備忘録

**サンプルデータで止まっている人向け、statsmodels(OLS)入門**

statsmodelsで回帰のサンプルをやってみて、自分で作ったデータで止まっている人向けの入門記事です。

このスクリプトで想定しているケースは、架空の飲食店(バーやスカイラウンジーの想定)で、商品の大分類や客単価、来店人数等が記録された架空の売上データがあったとして、売上が多い日には何か傾向があるのだろうか?という設定です。

***

【環境】
Linux: debian10.3
python: 3.7.3
pandas: 1.0.3
statsmodels: 0.11.1
jupyter-lab: 2.1.0

以下の様な、csvファイルがあったとして

Date,earnings,customer,earnings_customer,fortified_sweet,rum,brown_spirits,mojito_rebji

元記事を表示

ヤコビアン、多項分布

# はじめに
 久保川達也氏著「現代数理統計学の基礎」の4章を勉強していて、私が個人的に気になったところである
・ヤコビアン
・多項分布
について説明します。

# ヤコビアン
 $ $
 ヤコビアンは、変数変換をして(異なる座標系を考えて)積分するときに出てくることが多いです。例えば2次元極座標系から直交座標系に座標系を変換する場合、極座標系での微小面積は$rdrd\theta$と近似できて、直交座標系での微小面積は$dxdy$で、$$\iint f(x,y) dxdy=\iint f(r,\theta) rdrd\theta$$とし、3重積分の場合は$$\iiint f(x,y,z) dxdydz=\iiint f(r,\theta,\phi) r^2\sin \theta drd\theta d\phi$$として計算すると思います。実はこのときの$r$や$r^2\sin \theta$がヤコビアンというものです。私はヤコビ行列式をヤコビアンと呼んでいて、それは
$$|J|=|\frac{\partial (x,y,z)}{\partial (r,\theta,\phi)}|$$と

元記事を表示

Pythonのウェブプログラミング記事まとめ

# はじめに

私がQiitaに投稿したPythonのウェブプログラミングに関連する記事のまとめです。
今後もPythonのウェブプログラミングに関する記事を追加していくごとに、こちらのまとめも更新していきます。

# Flask

– [初期設定](https://qiita.com/yukiya285/items/024ce8acefeea55374e2)
– [データベース](https://qiita.com/yukiya285/items/b8857c3fee1657973c89)
– [アプリケーション](https://qiita.com/yukiya285/items/7ddcea565b04bce06f3b)
– [HTMLテンプレート](https://qiita.com/yukiya285/items/e2aa24be36fbe680c76f)

# Django

– [初期設定](https://qiita.com/yukiya285/items/90f1c0d0982b94edb4c5)
– [モデル](https://qiita.com/yukiya2

元記事を表示

pythonでプログラミング言語を作った

この記事で作るのは自作プログラミング言語というより**似非自作プログラミング言語**です。理由は後述。

# なぜ作ったのか
暇だからです。

# 難しい?
簡単です。200行弱でかけます。

# 何ができるの?
変数への代入とPrint, Inputしかできません。それ以上は自分で作ってみよう()

# なぜ似非?
ソースを見てもらえばわかると思うんですけど、これifとかでむりやり読み込んで実行してるだけで、構文解析?も何もしてないからです。

# 言語仕様
なまえはtslです。なんとなくです。
変数宣言はkotlinの`val`と`var`をパクってます。
コメントは//です。~~行の途中からコメントにするとかできません。~~**対応しました**
kotlinのsyntax適用してるので色ついてます。

“`kotlin
// 変数宣言
// イミュータブル
Val String str is “This is string” // This is String
// ミュータブル
Var String s is “This is string”
// print
Print t

元記事を表示

matplotlibにおいて確率密度関数とヒストグラムを重ねて描写する際の注意点

ヒストグラムと確率密度関数を重ねて描写したいと思ったときに最初きれいに重ねることができなかったのでそのときの解決策をメモとして残す。
#原因
numpy.randomで生成される乱数は生成数によっては面積が1よりも大きくなってしまうこと。
#解決策
– ヒストグラムを標準化
– 確率密度関数の面積をヒストグラムに合わせる

###ヒストグラムを標準化
“`python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
n = 2000 #データ数

data = np.random.randn(n)
plt.hist(data, range=(-3, 3), bins=60, alpha=0.5, density=True)
#階級幅0.1 総データ数2000, 縦軸を相対度数密度としたヒストグラム
x = np.linspace(-3, 3, 61)
#0.1刻みの数列を生成
plt.plot(x, norm.pdf(x), c=’r’)
“`

縦軸を度数ではなく相対度

元記事を表示

OTHERカテゴリの最新記事