- 1. スピアマンの順位相関係数についていろいろ
- 2. PandasによるDataFrameの値更新について
- 3. pandasによるDataFrame型の値取り出しについて
- 4. Python 3 エンジニア認定基礎試験に合格しました。
- 5. 命名規則あれこれ
- 6. 【Python】日本語全角/半角変換ライブラリmojimojiで報告されているIssueと拙作Habachenでの対応について
- 7. 無相関検定(母相関係数=0の検定)の逆
- 8. 世にも奇妙な物語: due to a circular import
- 9. Locustで負荷テストを行った
- 10. 統計ライブラリ pingouin で多変量正規性検定
- 11. Python3コマンドが使えない!
- 12. boto3でLambdaを実行する時のタイムアウト設定
- 13. 【pykakasi】pykakasiをpyinstallerでexe化しても使えるようにする
- 14. 現在ニートを名乗っているフリーター23歳による入茶記事
- 15. 【Python】Linterとして選ばれたのは「Ruff」でした
- 16. 競プロ典型 90 問 004 – Cross Sum(★2)
- 17. python でプライベート変数を扱う
- 18. Stable Diffusion Web UI導入でつまずいたところ
- 19. Tello-Console 取得メソッド一覧
- 20. Pythonでdict型(辞書型)のデータをインデント付きの見やすいJSONに変換してprintする
スピアマンの順位相関係数についていろいろ
## はじめに
投稿された記事に下手にコメントをつけると,うざがれたり,ブロックされたりするので,別個記事を書きます。
## スピアマンの順位相関係数とは
さて,今回は「スピアマンの順位相関係数」です。わざわざ「スピアマンの」とあるのは,他に「ケンドールの順位相関係数」というのもあるからです。
いきなり,端的に言ってしまえば,「スピアマンの順位相関係数は,元のデータ(たとえば x, y の2つ)それぞれについて平均順位をつけ,その平均順位に基づき「ピアソンの積率相関係数」を計算したものです。またまた「ピアソンの積率」というのがついていますが,普通に「相関係数」として扱われているものの正式名称は「ピアソンの積率相関係数」なのです。
統計学のお話をするときに,やたらと数式を書きまくって煙に巻くということが多々ありますが,新規に開発した手法ならまだしも,もう100年以上も前に確立された手法を数式を用いて説明(証明)しようとするのは無意味でしょう。
それよりは,それぞれの手法の前提とか使用できるデータの条件とか結果の解釈に主眼を置くべきでしょう。もっとも,然るべき参考書やサイトならば
PandasによるDataFrameの値更新について
# 背景
pandasの特定行の値を更新したいが反映されないケースがあったので調査した。# 調査結果
下記のミスケースでは、
master_df の一部を選択してコピーを作成し、そのコピーに対して “customer_name” の値が “XYZ” に変更されることを意味します。しかし、元の master_df は変更されず、警告も表示されません。つまり、意図した変更が元のデータフレームに反映されないという問題が発生します元のデータフレームに対して、.loc や .iloc を使用してデータを選択し、その選択されたビューに対して変更を加える必要があります。
“`py
print(master_df[master_df[“customer_id”] == “IK152942”][“customer_name”])#ミスケース
master_df[master_df[“customer_id”] == “IK152942”][“customer_name”] = “XYZ”
print(master_df[master_df[“customer_id”] == “IK15
pandasによるDataFrame型の値取り出しについて
# DataFrame型の値取り出しについて
DataFrame型の値を取り出して利用する際に、型でエラーになることが多かったのでノウハウを残す。エラー理由は下記の条件分だけでは該当数列すべてが抽出され(今回のケースでは1行しかないが)、class ‘pandas.core.series.Series’ 型なっていたことである。
そのため、.valuesを用いることで class ‘str’ の値を取り出すことができた。“`py
import pandas as pdmaster_df = pd.read_csv(“customer_master.csv”)
#値のみが取得できていない
target_data = master_df[master_df [“customer_id”] == “IK152942”][“customer_name”]
print(type(target_data))
print(target_data)#値が取得できている
print(type(target_data.values[0]))
print(target_data.valu
Python 3 エンジニア認定基礎試験に合格しました。
#### はじめに
タイトルにあるように「Python 3 エンジニア認定基礎試験」に合格しました。
このページには試験勉強に利用したものを記載します。#### 読み飛ばしても問題ない内容
そもそもなぜPythonの資格を取ったのか、と。
配属先で「Python使うことになるよー」と話しが出たため、Pyhton知識ゼロのやまだは勉強することにしました。#### 勉強に利用したもの
– 参考書
– スッキリわかるPython入門(著者:国本大悟さん/須藤秋良さん)
– 理由:Javaの参考書も同じシリーズを利用していたため。読みやすい。
– ネット
– DIVER INTO CODE
– 模擬試験を受けられる。
– 隙間時間にも利用できた。移動時間とかとか。
– 会員登録が必要(無料と有料、両方ある。山田は無料を利用)
– PRIME STUDY
– 模擬試験を受けられる。
– メールで試験結果を受け取れ、間違った問題は赤字で表示される(受け取りによっては黒字かも。。)
– Colabor
命名規則あれこれ
## 目的
毎回命名規則なんだったっか…となるのでまとめます## ケース
|ケース|例|
|–|–|
|スネークケース|snake_case|
|パスカルケース|PascalCase|
|キャメルケース|camelCase|
|チェインケース|chain-case|
|アッパースネークケース|UPPER_SNAKE_CASE|## Python
|項目|ケース|
|–|–|
|変数|全て英小文字 or snake_case|
|定数|UPPER_SNAKE_CASE|
|関数|全て英小文字 or snake_case|
|クラス|PascalCase|
|モジュール|全て英小文字 or snake_case|
|パッケージ|全て英小文字|
|ファイル名|全て英小文字 or snake_case|https://atmarkit.itmedia.co.jp/ait/articles/2308/08/news020.html
## JavaScript
|項目|ケース|
|–|–|
|変数|camelCase|
|定数|UPPER_SNAKE_CASE|
|関
【Python】日本語全角/半角変換ライブラリmojimojiで報告されているIssueと拙作Habachenでの対応について
## はじめに
– mojimoji とは
https://qiita.com/ikuyamada/items/fea6c8f81e7cac7cf318
https://github.com/studio-ousia/mojimoji
– Habachen とは
https://qiita.com/Hizuru/items/6b91d00fbe13ebb43867
https://github.com/Hizuru3/python-habachen
mojimoji と Habachen は、いずれもネイティブ拡張を用いた CPython 上で動作する日本語の全角/半角変換ライブラリです。 Habachen は私が開発しています。
以前書いた [Habachen の紹介記事](https://qiita.com/Hizuru/items/6b91d00fbe13ebb43867)ではそのパフォーマンスに焦点を当てていますが、元々は mojimoji の不満点を解消した CPython 用の日本語文字列変換ライブラリを自前で作り上げることが目的で[^1]、高速化は二の次で
無相関検定(母相関係数=0の検定)の逆
## 無相関検定(母相関係数=0の検定)の逆
### 無相関検定
無相関検定は,サンプルサイズと標本相関係数を与えて,母相関係数=0 の検定を行い $p$ 値を返す。
“`python
import numpy as np
from scipy.stats import tdef rtest(n, r):
“””
引数
n: サンプルサイズ
r: 標本相関係数
戻り値
検定統計量 t0 と p 値(両側検定)のタプル
“””
t0 = abs(r)*np.sqrt(n – 2)/np.sqrt(1 – r**2)
return (t0, 2*t.sf(t0, n – 2))
“`
サンプルサイズが 10,標本相関係数が 0.5 のときの $p$ 値(両側検定)“`python
print(rtest(10, 0.5))
“`(1.6329931618554523, 0.14111328124999997)
### 無相関検定の逆
サンプルサイズと有意
世にも奇妙な物語: due to a circular import
それは突然明らかになった。
ある日,import pandas as pd をやったときに,エラーメッセージを吐いた。
“`
>>> import pandas as pd
Traceback (most recent call last):
File ““, line 1, in
File “/Users/*****/pandas.py”, line 2, in
print(pandas.__version__)
^^^^^^^^^^^^^^^^^^
AttributeError: partially initialized module ‘pandas’ has no attribute ‘__version__’ (most likely due to a circular import)
“`どうせ,pip のやり直しで片付くだろうと uninstall して install し直したりしたけど解決しない。しばらく放っておいて,「さてしもあるべからずとて」,エラーメッセージをよくよ
Locustで負荷テストを行った
# Locustで負荷テストを行った
postmanでは複数同時テストができないためLocustを使用した# install
“`
pip install locust
“`# App内にfileを設置
“`
App/Web/views/locust.py
“`# locust.pyでテストコードを作成
毎秒の時間を出力するコード
“`
from locust import HttpUser, TaskSet, task
import datetimeclass Test(TaskSet):
@task
def load(self):
print(datetime.datetime.now())class Test2(HttpUser):
tasks = {Test:1}
“`# 出力コマンド
App/Web/views/の階層まで移動し
“`
$locust
“`
を叩くと出力されます。こちらを流用し個々のテストの出力を行えます。
人数や何秒ごとかなどの詳細な設定も行えますので便利です。
統計ライブラリ pingouin で多変量正規性検定
## 結論
pingouin なら 1 行で簡単に多変量正規性検定ができます。“`python:HZtest.py
import pingouin as pgpg.multivariate_normality(data, alpha=0.5)
“`## 問題
python で統計解析を行いたいとき、SciPy を使うのがメジャーだと思います。
最初にデータが正規分布に従うかどうかを見ることが多いかと思いますが、SciPy ではシャピロウィルク[1, 2]がよく使われます。“`python:Shapiro.py
from scipy.stats import shapiroshapiro(data)
“`この方法だと使えるデータは 1 つであり、複数の変数を見たいときには 1 つ 1 つ見ていく必要があります。
## pingouin
以上の問題に対し、pingouin ですと、Henze-Zirkler tes[3] で多変量の正規性を検定することができます[4]。“`python:HZtest.py
import pingouin as pd
Python3コマンドが使えない!
# 環境
windows11
# 状況
環境Pathを通して,Pythonが使えるようになったのに,`Python3 -u`で実行しようとしたら使えなかった.
しかし,`Python -u`なら動いた.
# 解決策
まさかの方法でした.`C:\Users\ユーザー名\AppData\Local\Programs\Python\Python310`の中にある`Python.exe`ファイルをコピペして`Python3.exe`に名前を変更することで解決しました.
# 後記
調べてもあまり情報が出てこなくて困りました.ある記事では,「Pythonコマンドを使えばよいではないですか」と書かれていました.確かに,その通りなのですが,Python3コマンドを使いたいかったのです…
どなたかの役に立てばうれしいです.
boto3でLambdaを実行する時のタイムアウト設定
## この記事で学ぶ事
タイトル通りですが、boto3でLambdaを実行する時のタイムアウト設定についてです。
(Lambdaを実行って表現は正しいのかな、、、)
私はこの情報を知れた事で業務で抱えていた問題が解決できたので誰かのお役に立てばと思っています。## 解決したい事
boto3でLambdaを実行している処理で原因不明の異常が出ていた。
この異常が出ていればタイムアウトかもって情報じゃなくて申し訳ないです。
自信の状態と照らし合わせてみて下さい。## 設定方法
“`python3
import boto3
from botocore.config import Configconf = Config(region_name=”ap-northeast-1″, read_timeout=300, retries={“max_attempts”: 0})
lambda_client = boto3.client(“lambda”, config=conf)
“`
– 設定項目
– リージョンをap-northeast-1
– boto3からLambd
【pykakasi】pykakasiをpyinstallerでexe化しても使えるようにする
# pykakasi…exe化するとエラーがでる
pythonの状態で動かしているとpykakasiが動くのにexe化するとファイルが見つからない的なエラーが発生して動かなくなる。exe化した状態でも動かせるようにできたので、備忘録として残しておく。# 原因
エラーが発生する原因はpykakasiが*.dbファイルを読み込んでいるが、そのパスに__name__が使われていることである。下にパスを取得する部分のプログラムを示す。
“`python3:
class Configurations:data_path = pkg_resources.resource_filename(__name__, “data”)
jisyo_hepburn_hira = “hepburnhira3.db”
jisyo_passport_hira = “passporthira3.db”
jisyo_kunrei_hira = “kunreihira3.db”
jisyo_itaiji = “itaijidict4.db”
jisyo_kanw
現在ニートを名乗っているフリーター23歳による入茶記事
# ABC233で入茶達成しました!!!
参加数24回での入茶で凡人による入茶記事なので、
僕に似たスペックの人には少しは参考になると思います。![スクリーンショット 2023-10-09 11.20.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2664972/7a4f4d54-c5b1-0449-294f-f5ccb26ef9dd.png)
# スペック紹介
## 最終学歴: 高校卒
最終学歴は高卒ですが、
大学受験の勉強(私立文系)はかなりしていたので、勉強はそこそこできていました。
センターや模試などでは英語7割,国語7割,世界史8割ぐらいでした。勉強自体に苦手意識はないです。
## 勉強: 数学はどの程度できた?
高校2年生まで理系だったので1Aに関してはそこそこできましたが,
2B,3に関しては全くできません。
模試(進研模試です)では1Aは6割ぐらいだったと思います。
2Bに関しては記憶がないです。多分5割ぐらい?# 入茶までにしたこと
### 1.基本的なアル
【Python】Linterとして選ばれたのは「Ruff」でした
# はじめに
2022年頃まで、Pythonの開発でLinterやFormaterを導入する場合、以下のツールを採用することが多く見受けられていました。| ツール | 用途 |
| — | — |
| [Flake8](https://flake8.pycqa.org/en/latest/) | Linter |
| [Pylint](https://pylint.readthedocs.io/en/stable/) | Linter |
| [isort](https://pycqa.github.io/isort/) | Import Sorter |
| [Black](https://black.readthedocs.io/en/stable/) | Formatter |そんな中、これらのツールに対して一石を投じるようなツールが登場しました。それがRuffです。
本稿は、そんなRuffを導入する際の足がかりとして参考になれば幸いです。# Ruffについて
Rustで書かれた非常に高速なPythonのLinterです。https://astral.sh
競プロ典型 90 問 004 – Cross Sum(★2)
## 競プロ典型 90 問 004 – Cross Sum(★2)
競プロの初めて向けの10問を解いたので、90問をチャレンジ!
★2でもめちゃくちゃ難しいんよな。。。
## 問題H 行
W 列のマス目があります。
その縦横の合計を出してほしい。## 説明
縦横の合計を足すのですが、
重複しているところを引くことが必要になります。これを包除原理というらしい。
H行とW列を足しても、重複があるため、(H+W)-1 が成り立つ。Aは[[1,2,3],[1,2,3],[4,5,6]]みたいなリスト。
前処理として、縦のみ。横のみのリストを作成する。
### zip(*A)
zipは*演算子を使えば展開してくれる。
リストを展開して、各リストの要素を対応するものとして組み合わせる。
各リストの同じインデックス同士が組み合わさるみたい。
→各リストの同じインデックスインデックス同士という事は縦軸で合わさる。
縦の合計ができる。参考:
https://qiita.com/kubochiro/items/5daedd51654a8155bc06## ソースコード
`
python でプライベート変数を扱う
### はじめに
まず前提として、Python では厳密に可視性を制御することはできません。
それを踏まえた上で、Python においてプライベート変数を扱う方法をまとめました。プライベート変数の定義方法として、以下の二つが存在します。
– _single_leading_underscore
– __double_leading_underscore以下でそれぞれを詳しく見ていきます。
### _single_leading_underscore
#### 概要
オブジェクト名の先頭に ‘_’ を __1つ__ 付けると、import されなくなります。以下はアンダースコアを 1 つ付けたものと付けていないオブジェクトを定義したモジュールであり、これらを import できるかを見てみます。
“`Python:module.py
class PublicClass:
def no_underscore_method(self):
return ‘public_class_no_underscore_method’de
Stable Diffusion Web UI導入でつまずいたところ
昨今熱いAI業界にて、Stable DiffusionのWebUIがあると聞いたので導入を試みてみたが、詰まったところがあったので記録
# TL;DR
– 初手導入時にPythonバージョンが違うと、入れ直してもダメ
– Pythonインストール後に一から改めて、.bat(Macなら.sh)の実行をやり直す必要がある# 導入に際して
基本に関してはググれば出てくるのが割愛
自分も見つけた数点の記事を参考に実行していったやることとしては、基本的には
– Python3.10.6のインストール(済んでいればスキップ)
– 設置用ディレクトリを用意する
– stable-duffusion-webuiの[GitLab](https://github.com/AUTOMATIC1111/stable-diffusion-webui)から `git clone` する
– cloneしたディレクトリのstable-diffusion-webuiディレクトリに入りwebui-user.bat(Macならwebui.sh)ファイルを実行これだけで完了である(時間はある程度かかる)
Tello-Console 取得メソッド一覧
# 取得メソッド一覧
取得メソッドとは、ドローンからステータスを取得できるメソッドです。以下のメソッドは、リクエストされるとドローンに指定されたステータスを要求します。– [get_flighttime](https://qiita.com/GAI-313/items/eb21809a45154a1b0084#get_flighttime)
ドローンの飛行時間を取得します
– [get_tof](https://qiita.com/GAI-313/items/eb21809a45154a1b0084#get_tof)
ドローンの対地高度を取得します
– [get_battery](https://qiita.com/GAI-313/items/eb21809a45154a1b0084#get_battery)
ドローンのバッテリー残量を取得します
– [get_imu](https://qiita.com/GAI-313/items/eb21809a45154a1b0084#get_imu)
IMUセンサーからドローンの姿勢を取得します# get_flighttime
この
Pythonでdict型(辞書型)のデータをインデント付きの見やすいJSONに変換してprintする
Pythonの改修をしている時に「渡ってきてるdictの要素なんだろうな」と思ってとりあえずprintしたら複雑な階層構造のdictがダーッと1行で出力されて非常に困ってしまったので、見やすく表示する方法を備忘として残しておく。
# 環境
“`
$ python –version
Python 3.12.0
“`# やり方(実行例)
Pythonを対話モードで起動して以下を実行すれば良い。
“`python
import json# JSONに変換して出力したいdictをここに定義
target_dict = {‘food’: {‘fruits’: {‘red_fruits’: [‘apple’, ‘strawberry’, ‘cherry’], ‘yellow_fruits’: [‘banana’, ‘pineapple’, ‘lemon’], ‘green_fruits’: [‘kiwi’, ‘grape’, ‘green apple’]}, ‘vegetables’: {‘leafy_greens’: [‘spinach’, ‘lettuce’, ‘kale’