- 1. python学習 – 1日目
- 2. 【AtCoder解説】PythonでABC254のA,B,C,D,E問題を制する!
- 3. PyenvでAtcoder用のPythonバージョンを管理する
- 4. scipy.stats: クラスカル・ウォリス検定 kruskal
- 5. scipy.stats: ウィルコクソンの符号付順位和検定 wilcoxon
- 6. pythonでのsqlite3データベース作成
- 7. xml.etree.ElementTree で XML の基本的なことを少し触ってみる
- 8. scipy.stats: マン・ホイットニーの U 検定(ウィルコクソンの順位和検定) mannwhitneyu
- 9. scipy.stats: コルモゴロフ・スミルノフ検定 kstest
- 10. pip search で ERROR: XMLRPC request failed [code: -32500] の解決法
- 11. Python3 基本構文
- 12. PHPのソケット通信(Client)でESP32と疎通してみる
- 13. GCP(Google Cloud Platform)のFunctionsにおけるOPENCVの使い方
- 14. Python で Twitter の位置情報収集
- 15. pytest fixtureでユニットテストの前処理をする
- 16. 初心者で Python を使いたい人で環境構築に困った場合メモ
- 17. 【Jupyter Notebook】Bad file descriptorエラーを解決する
- 18. Python環境構築[Mac(M1)]
- 19. scipy.stats: 1 標本 t 検定 ttest_1samp
- 20. djangoのmodelsで生のSQLを実行する
python学習 – 1日目
# はじめに
python初心者がこっそり学習する。
まずはなるべく毎日30分でも触ることが目標。# pythonの環境構築
こちらは別記事で実施する予定。
環境構築で挫折したくないので。。
今回は構築しなくても、ブラウザでpython実行できる[Google Colaboratory](https://colab.research.google.com/)を利用する。
[使い方](https://www.python.jp/train/experience/colab.html)の記事を参考にしました。# pythonのバージョン
python3を使用する。
ちなみにpython2系は2020にサポート終了済み。
私のようにこれから始める方は、python3系を選ぶのが良いと思います!# Pythonのコーディングルール
[PEP8](https://pep8-ja.readthedocs.io/ja/latest/)をまずは参考にするのが良さそう。# コメント
コメントは、コードが実行される時に無視されるもの。
メモやコードの説明に使う。
コードの全行にコメントつけ
【AtCoder解説】PythonでABC254のA,B,C,D,E問題を制する!
**ABC254**の**A,B,C,D,E問題**を、**Python3**でなるべく丁寧に解説していきます。
ただ解けるだけの方法ではなく、次の3つのポイントを満たす解法を解説することを目指しています。
– シンプル:余計なことを考えずに済む
– 実装が楽:ミスやバグが減ってうれしい
– 時間がかからない:パフォが上がって、後の問題に残せる時間が増えるご質問・ご指摘は**コメント**か**ツイッター**、**マシュマロ**、Discordサーバーまでお気軽にどうぞ!
**Twitter: [u2dayo](https://twitter.com/u2dayo)**
**マシュマロ: https://marshmallow-qa.com/u2dayo**
**ほしいものリスト: https://www.amazon.jp/hz/wishlist/ls/2T9IQ8IK9ID19?ref_=wl_share**
**Discordサーバー(質問や記事の感想・リクエストなどどうぞ!) : https://discord.gg/jZ8pkPRRMT**
よかったら**LGTM**
PyenvでAtcoder用のPythonバージョンを管理する
## 動機
AtcoderではPythonのバージョンが最新でなかったり、使用できるライブラリが限定されていたりして、ローカル環境とは勝手が違います
現在(2022/06/04)Cpythonでのバージョンは`3.8.2`でPypyでのバージョンは`3.6.9`(Pypy自体は `7.3.0` )ですが、
自分の場合は、AHCの時にPypyで3.8から追加された`typing.Literal`を使おうとしてWAしたことが2回あるので、いい加減に手を打つことにしました今回は仮想環境は`pyenv local`だけで擬似的に対応できそうだったので使わないことにしました
## 環境構築
最初に言っておきますが、
ローカルでPypyを使うWindowsの方はこの方法はつかえない(後述)ので、ローカルではCPythonを使うことになりますここからはWin10の場合の説明です
Mac等の場合はリンクを貼るだけにします### Pyenvのインストール
[Macの場合はこちら](https://github.com/pyenv/pyenv#homebrew-in-macos)Wind
scipy.stats: クラスカル・ウォリス検定 kruskal
# scipy.stats: クラスカル・ウォリス検定 `kruskal`
独立標本の代表値の差の検定を行うノンパラメトリック検定である。
`kruskal(*args, nan_policy=’propagate’, axis=0)`
“`python
from scipy.stats import kruskal
import numpy as npx = np.array([2.9, 3.0, 2.5, 2.6, 3.2])
y = np.array([3.8, 2.7, 4.0, 2.4])
z = np.array([2.8, 3.4, 3.7, 2.2, 2.0])
“`“`python
kruskal(x, y, z)
“`KruskalResult(statistic=0.7714285714285722, pvalue=0.6799647735788936)
“`python
a = np.array([41, 36, 12, 18, 28, 23, 19, 8, 7, 16, 11, 14, 18,
scipy.stats: ウィルコクソンの符号付順位和検定 wilcoxon
# scipy.stats: ウィルコクソンの符号付順位和検定 `wilcoxon`
`wilcoxon(x, y=None, zero_method=’wilcox’, correction=False, alternative=’two-sided’, mode=’auto’, *, axis=0, nan_policy=’propagate’)`
`zero_method` はデフォルト以外に 2 つあるが,一般的ではないのでデフォルトのままがよいであろう。
`mode` は `’auto’`, `’exact’`, `’approx’` の 3 通りであるが,`’exact’` か `’approx’` を明示的に指定したほうがよい。
`correction` は `mode=’approx’` のときに連続性の補正をするとき `True` を指定する。デフォルトは `False`。
`alternative` はデフォルトで両側検定 `’two-sided’`。片側検定の場合には対立仮説の方向により `’greater’` か `’less’`
“`pytho
pythonでのsqlite3データベース作成
# 目的
SQLiteでデータベース、テーブルの作成、編集をしてみたかったので、試してみました。
後に記事にしますが、これを使用して、物品管理ができるプログラムを作成していきます。# 開発環境
Python version:3.9.7
OS: windows 10.0# プログラム
データベース名は、“`book_list.db“`、テーブル名は、“`bookitems“`にしています。
“`make_table“`では、テーブルの作成と値の設定しています。“`reset_status“`では、デーブル内で設定したstatusを初期状態に戻す操作をしています。この操作は、“`bookitems“`が作成されていない時に実行すると走行するようにしています。“`make_db.py
import sqlite3def make_table(cur):
# make the table
cur.execute(
‘CREATE TABLE bookitems(name TEXT , code INTEGER, status
xml.etree.ElementTree で XML の基本的なことを少し触ってみる
# 目的
[Windows 10 + Excel2016_x86 VBA で XML の基本的なことを少し触ってみる](https://qiita.com/tabizou/items/10eb832352a6b31888c7)
で使用したXMLファイルをPythonで基本的な操作を実行してみる。対象となるXMLデータ(addr2.xml)
“`xml
東京都/世田谷区/池尻/四丁目/35番
池尻4-35-25
wgs1984
4
池尻4-35-
139.673965
35.654259
scipy.stats: マン・ホイットニーの U 検定(ウィルコクソンの順位和検定) mannwhitneyu
# scipy.stats: マン・ホイットニーの U 検定(ウィルコクソンの順位和検定) `mannwhitneyu`
“`python
from scipy.stats import mannwhitneyu
“``mannwhitneyu(x, y, use_continuity=True, alternative=’two-sided’, axis=0, method=’auto’, *, nan_policy=’propagate’)`
– `use_continuity` : `method` が `’asymptotic’` の場合は,デフォルト(`True`)で連続性の補正を行う。
– `alternative` : デフォルトで両側検定 `’two-sided’`。片側検定の場合には `’less’`, `’greater’`。
– `method` : デフォルトは `’auto’` であるが,明示的に指定するほうがよい。
* `’asymptotic’` : 同順位補正をして標準正規分布で漸近検定。
* `’exact’` : 同順位補
scipy.stats: コルモゴロフ・スミルノフ検定 kstest
# scipy.stats: コルモゴロフ・スミルノフ検定 kstest
“`python
from scipy.stats import kstest
“``kstest(rvs, cdf, args=(), N=20, alternative=’two-sided’, mode=’auto’)`
★ 1 つの連続変数の分布(分布関数 $F(x)$)が特定の分布関数 $G(x)$ と同じかどうかの 1 標本検定
★ 2 つの連続変数の分布(分布関数 $F_1(x)$,$F_2(x)$)が同じかどうかの 2 標本検定引数
– rvs : 配列,文字列,関数
* 確率変数の観察値の一次元配列(ベクトル)
* 関数(キーワード引数 `size` を持つこと)
* 文字列の場合は `scipy.stats` での関数名(乱数生成のために使われる)
– cdf : 配列,文字列,関数
* 確率変数の観察値の一次元配列( この場合は `rvs` も一次元配列で,2 標本検定が行われる)
関数(累積密度関数 `cdf` を計算する)
pip search で ERROR: XMLRPC request failed [code: -32500] の解決法
# 結論
“`sh
$ pip3 install pip-search
$ pip_search mecab
“`:::note warn
インストールするパッケージ名は `pip-search` であるのに対し、コマンド名が `pip_search` であることに注意してください。
:::# 起きたエラー
pipで検索しようとしたら、エラーが発生しました。
“`sh
$ pip3 search mecab
ERROR: XMLRPC request failed [code: -32500]
RuntimeError: PyPI’s XMLRPC API is currently disabled due to unmanageable load and will be deprecated in the near future. See https://status.python.org/ for more information.
“`インストールは問題なくできていました。
“`sh
$ pip3 install numpy
Successfull
Python3 基本構文
# Python3 基本構文
Pythonを書く機会があったのでよく使う構文をまとめます。
## 0. インデント
Pythonではインデントを落とした部分が処理ブロックになるので、`if 条件:`や`for ~ in ~:`などの後はインデントを落としましょう。
## 1. 変数定義
Pythonは動的型付け言語なので、変数宣言時に型宣言は必要ありませんが、**定義した変数が何型(整数, 浮動小数, 文字列, 真偽値, …)なのか常に意識して書く**と、コーディング時にキャスト(型変換)が必要かどうかの判断が容易になったり、他言語でも型で苦労することは無くなると思います。
“`python
# ==================================
# ————- 変数定義 ————
# ==================================# Integer(整数)型
num1 = 10
num2 = -3# Float(浮動小数)型
num3 = 1.5
nu
PHPのソケット通信(Client)でESP32と疎通してみる
# はじめに

こんな感じのを作る
各バージョンはこちら
“`sh
$ apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built: 2022-03-16T16:53:42$ php -v
PHP 7.2.34-28+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Nov 19 2021 06:36:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group$ cat /etc/os-release
NAME=”Ubuntu”
VERSION=”18.04.6 LTS (Bionic Beaver)”
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME=”Ubu
GCP(Google Cloud Platform)のFunctionsにおけるOPENCVの使い方
# GCPのFunctionsで開発をする際に困ったOPENCVの使い方メモ
## 1.本記事について
:::note
本記事は著者がGCPでOPENCVを利用して画像処理をしようとしたときにもがいた先にたどり着いた解決方法を記したものです。
なお、社会人になりたてで、開発経験がまだ薄いので、間違ったりしてるところがあればご教授お願い致します。
:::
## 2.本記事で使ったもの
- Functions
- GCPの中にあるツールの一つでサーバレス開発で使用する。
https://cloud.google.com/functions?hl=ja
- storage
- GCPの中にあるツールの一つでデータの保管、トリガーとして利用したりできる。
https://cloud.google.com/storage?hl=ja
- OPENCV
- よく使われる画像処理関係のオープンソース
https://opencv.org/
- GoogleVi
Python で Twitter の位置情報収集
# はじめに
一身上の都合で、緯度・経度からなる手軽なGIS(Geographic Information System)データが欲しいという状況になった。そこで注目したのが、Twitter の位置情報付きのつぶやきである。あるキーワードに該当するような位置情報付きのつぶやきを集めれば、それは立派なGISデータになる。そこで、Twitter API に登録し、できる限り無料枠内で tweet の情報を集める方法を紹介したいと思う。# Twitter API の認証情報の取得
こちらについては、すでに既存の記事に詳しい方法が載っているので、そちらを参考にしてほしい。– [Twitter APIで遊んでみた ~1. 各種キーの申請と取得~](https://tech-lab.sios.jp/archives/21238)
– [2021年度版 Twitter API利用申請の例文からAPIキーの取得まで詳しく解説](https://www.itti.jp/web-direction/how-to-apply-for-twitter-api/)上記の記事にもあるが、Tweet の
pytest fixtureでユニットテストの前処理をする
Pytestによるテスト実行前に「環境設定をテスト用に差し替えたいなあ…」と思うことがありました。(接続先データベース等)
pytestコマンドの実行前に手動で環境変数を書き換えることも可能ですが、煩わしいので自動化したいです。
そこで今回はpytest fixtureでテストの実行前に自動で環境変数を書き換えました。
pytest fixtureを使えばテストの実行前に特定の処理を自動で実行することができます。### 環境
Python3.8.10
pytest
flask### ソースコード
“`py:__init__.py
from http.client import BAD_REQUEST, INTERNAL_SERVER_ERROR, NOT_FOUND
from dotenv import load_dotenv
from flask import (Flask)
from app.presentation.shared.exceptionhandler.notfoundexception import NotFoundException
fro
初心者で Python を使いたい人で環境構築に困った場合メモ
# 新たなプログラム言語を始めるにあたって何が障害?
私はずばり「**環境構築**」だと思っている。
新たなプログラム言語を習得するとかって、いろいろと用意することがあった記憶がある。
少なくとも私はそれが一番初めに来るのが嫌だった・・。
「まずは動くもの作りたいし、仕組みもシンプルなほうがよい。」
性格的に、なんでそう動くの?どんな仕組みでって考える人は、初めのハードルが高い気がする。(私見)幸い私の場合は Python を業務ですぐに習得しなければならない事情があったので、とりあえず、動く環境で動かしてみることを続けた。
その間、Python のバージョンアップや周辺環境の変化によりいろいろな選択肢が出てきて、いまでは環境の仕組みがわからなくても何とかなる。しかも、Pythonのような人気がある言語の場合は、ぐぐーったら環境構築の記事はごまんとある。新旧織り交ぜて・・・
これらのサイトをいろいろと読んでいて、一つ思ったのが[**公式サイト**に書いてあるじゃん](https://www.python.jp/index.html)
しかも、Pythonは比較的初心者に
【Jupyter Notebook】Bad file descriptorエラーを解決する
# 内容
タイトル通りですが、解決できる対象の環境は**ディレクトリ名に日本語が入っている**(Windows OSでユーザー名に日本語が入っている等)場合です。
エラー内容としては`jupyter notebook`コマンドからノートブック立ち上げ→カーネル立ち上げ→`Bad file descriptor`でノートブックが強制終了してしまうことを指しています。(以下のようにノートブック立ち上げ後に`Bad file descriptor`で落ちてしまう)
# 解決方法
`pip install notebook`実行時にインストールされる`pyzmq`をアンインストール
“`:python
pip uninstall pyzmq
“``pyzmq==19.
Python環境構築[Mac(M1)]
# 目次
1. Pythonインストール
1. Visual Studio Codeインストール
1. Visual Studio Code設定
1. 仮想環境構築
1. 仮想環境運用# 1. Pythonインストール
以下の公式ホームページより、インストールできます。https://www.python.org/downloads/
# 2. Visual Studio Codeインストール
以下公式ホームページより、インストールができます。https://code.visualstudio.com/
# 3. Visual Studio Code設定
vscodeの拡張機能より、Pythonをインストールします。# 4. 仮想環境構築
vscodeで任意のフォルダーを開き、ターミナルで以下を実行します。
>“`bash
>python3 -m venv .venv # .venvという名前の仮想環境を作成
>. .venv/bin/activate # 仮想環境(.venv)に切り替え
>“`
>which pipで有効化されているpipのパスが取
scipy.stats: 1 標本 t 検定 ttest_1samp
# scipy.stats: 1 標本 t 検定 `ttest_1samp`
`scipy.stats.ttest_rel` の項で既に書いたが,これはこれで改めて書き起こす。
1 標本 $t$ 検定は,2 つの局面で使われる。
1. 本当に 1 つの標本の,母平均の検定として
1. 本当は 2 つの対応のある標本の母平均の差の検定として後者の場合は `scipy.stats.ttest_rel` を使えばよいが,対応するデータの差をとって `scipy.stats.ttest_1samp` を使うこともできる。その際,差の母平均が 0 であるかの検定になる。
“`python
from scipy.stats import ttest_1samp
“``ttest_1samp(a, popmean, axis=0, nan_policy=’propagate’, alternative=’two-sided’)`
# 1. 母平均の検定
検定したい母平均を `popmean` で指定する。
例題: ある工業製品の重さは規格により 10g とされている。20
djangoのmodelsで生のSQLを実行する
# 環境
django : 4.0.3
python : 3.9.6
ubuntu : 18.04# 本題
生のSQLの実行自体は、公式ドキュメントを参考にしてrawメソッドを記載すればよいことがわかります。
公式ドキュメント : https://docs.djangoproject.com/ja/4.0/topics/db/sql/
ちなみに単純にrawを使う方法はviewsに書きます。自分はmodelsに書くと思っててハマりました(笑)。
下のは適当なサンプルです。
“`python
sql = “select * from テ-ブル名 where 1”
temp = モデル名.objects.raw(sql)
“`
SQL自体は適当に全件表示で書いてます。ただ、この方法だとviewsに記述するコード量が半端なくなっちゃいます。
俗にいうファットコントローラー問題ってやつです。
それを解消するためにmodelsに書きたいってなりました。さて、書き方についてですが、
結論から言うと「raw-sugar」ってのを使うといいみたいです。
手順
①raw-sugerを