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

Python関連のことを調べてみた2022年06月07日
目次

GeoPandasをやるならFlatGeobufより効率の良いクラウドネイティブなGeoParquetを使おう

## GeoParquetとは

GIS界隈では、AIやビッグデータ処理などデータサイエンスの分野で利用されるようになっている高速かつ効率の良いデータ処理手法などを全て取り込めてる訳ではなく、若干遅れをとっている状態と言われています。

これは地理空間情報というもの自体が複雑な仕様をもつためかとおもいますが、近年はGISでもGB/TB級のデータを取り扱う機会が増えており、Hadoopに代表されるような表形式データの分散処理基盤などを有効活用できない点において、「どげんかせんといかんなぁ」と考える方々も増えています。

そんなモチベーションからここ最近活発に開発されている形式のデータがGeoParquetです。

GeoParquet: [https://github.com/opengeospatial/geoparquet](https://github.com/opengeospatial/geoparquet)

Apache Parquetという、こちらも近年活発に開発されている形式のデータを地理空間情報に応用しよう!として開発されているもので、シンプルに言えば「高効率に圧縮さ

元記事を表示

Pythonによる因果推論~回帰分析~

# はじめに
線形回帰による因果推論について、Pythonによる実装を交えてまとめました。回帰分析の特性の導出や理論的な背景については記述しておりません。内容について誤り等ございましたら、コメントにてご指摘いただけますと幸いです。

# 回帰分析の概要
回帰分析とは、説明変数$X$が1単位増減させたときに、被説明変数$Y$がどの程度変動するかを出力する分析手法です。

## 因果推論における回帰分析
因果推論の文脈では、何らかの処置を表す変数$Z$(以下、処置変数)が、被説明変数$Y$にどれだけの効果を与えているかを検証する際に回帰分析を利用します。例えば
$$Y = b_0 + b_zZ$$というような回帰モデルを作成し、
– 帰無仮説を「$b_z = 0$」として検定を行い、処置変数$Z$が被説明変数$Y$に**影響を与えていると言えるか**
– パラメータ$b_z$を推定して、処置変数$Z$が被説明変数$Y$に**どれくらいの影響を与えているか**

などを検討します。

処置変数$Z$と被説明変数$Y$の両方に影響を与える交絡因子が存在するであろう場合を考えると、上記のモデルに

元記事を表示

scipy.stats: アンサリ・ブラッドレイ検定 ansari

# scipy.stats: アンサリ・ブラッドレイ検定 `ansari`

`ansari(x, y, alternative=’two-sided’)`

独立二標本の等分散のノンパラメトリック検定である。

戻り値は,検定統計量と $p$ 値である。

同順位がある場合は,Warning が発せられる。

“`python
from scipy.stats import ansari
import numpy as np

x = np.array([111, 107, 100, 99, 102, 106, 109, 108, 104, 99,
101, 96, 97, 102, 107, 113, 116, 113, 110, 98])
y = np.array([107, 108, 106, 98, 105, 103, 110, 105, 104,
100, 96, 108, 103, 104, 114, 114, 113, 108, 106, 99])
ansari(x, y)
“`

/Library/Fram

元記事を表示

scipy.stats: フリードマン検定 friedmanchisquare

# scipy.stats: フリードマン検定 `friedmanchisquare`

`friedmanchisquare(*args)`

関連のある $k$ 標本の代表値の差のノンパラメトリック検定である。
引数の指定法は若干不自由である。
多くの統計パッケージでは以下のようなデータ行列を与える仕様になっていることが多いが,`friedmanchisquare` では,列ベクトルを複数与える)。

もともと,$k$ 個の配列(ベクトル)で用意されているなら別であるが。

“`python
from scipy.stats import friedmanchisquare
import numpy as np
data = np.array([
[5.4 , 5.5 , 5.55],
[5.85, 5.7 , 5.75],
[5.2 , 5.6 , 5.5 ],
[5.55, 5.5 , 5.4 ],
[5.9 , 5.85, 5.7 ],
[5.45, 5.55, 5.6 ],

元記事を表示

AtCoder ABC 254 D – Together Square: 高速な素因数分解(SPF)を用いたO(NlogN)解法

解説のいくつかで触れられている解法とほぼ同じです。

# 平方数の性質
ある数$x$が$k$の平方数とは$x = k^2$です。$k$は$k = p_1^{n_1} \times p_2^{n_2} \times … \times p_n^{n_a}$というように、$a$個の素因数($p$)で表せるため、$x$は$x = k^2 = k = p_1^{2n_1} \times p_2^{2n_2} \times … \times p_n^{2n_a}$で表すことができます。すなわち、平方数とは素因数分解した際に、すべての素因数が偶数個含まれている数です。

# 積が平方数になるときと平方数にならないとき
まず、2つの正の整数$x,y$の積を考えます。この時、$a$個の素因数を使って$x \times y = p_1^{n_1 + m_1} \times p_2^{n_2 + m_2} \times … \times p_a^{n_a + m_a}$と表せます。$n$と$m$は対応する素因数$p_i$を$a$が$n_i$個、$b$が$m_i$個持つことを表しま

元記事を表示

NumpyでRNNの実装

# はじめに

時系列データの扱いに特化したディープラーニングのモデルであるリカレントニューラルネットワーク(Recurrent Neural Networks:RNN)に関する学習をしても,結局はTensorflowやKeras,Pytorchといったライブラリに頼った実装がほとんどです.
これらのライブラリを使用した実装は簡単ですが,実際にどのような計算が行われているのかは数式などを眺めることでしか理解できません.
そこで,今回はこれらのライブラリを利用せず,numpyのみで実装を行おうと考えました.

あくまでも,理解を深めるためにNumpyでRNNを実装しているだけなので,「理論が知りたい!」,「どうやったら精度が良くなるの?」という方にはお勧めしません.
「NumpyでRNN実装しようと思っているんだけど,参考になるサイトないかな〜」って人におすすめです.

# 目次

1. RNNの理論
1. Pytorchでの実装
1. Numpyでの実装
1. まとめ

# 1. RNNの理論

正直,理論面にそこまで詳しくないので,細かい式の導出だったりは専門書にお任せするとして,こ

元記事を表示

[Slack App] 動的にメッセージを更新するテクニック

![画面収録_2022-06-06_19_20_28_AdobeCreativeCloudExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/503266/a32f4d5b-1c6f-7576-eee4-105dc3973dac.gif)

# はじめに
本記事ではSlackアプリでの動的なメッセージ更新のtipsを紹介します。基本的なSlackアプリの作り方は割愛します。巷に良記事が溢れているのでそちらをご覧ください。
対象読者としてはある程度Slackアプリ開発をかじったことがある人を想定しています。

# 使用ツール
– [Bolt for Python](https://slack.dev/bolt-python/ja-jp/tutorial/getting-started)
– [Block Kit Builder](https://app.slack.com/block-kit-builder/TH5FKCE6T#%7B%22blocks%22:%5B%7B%22type%22:%

元記事を表示

asdf/pyenv/python-buildでPythonをインストールしようとするとModuleNotFoundError: No module named ‘_socket’が出る

# 問題

asdfを使ってPython 3.10.4をインストールしようとしたら、 `ModuleNotFoundError: No module named ‘_socket’` が出て失敗した。

# 環境と問題のコマンド

環境は以下のとおり。

* macOS Monterey 12.4
* asdf v0.10.1
* asdf-python 57a4d725e47b8624cc97cabcac2b064f0474b8b2

実行したのは以下のコマンド。

“`bash
asdf install python 3.10.4
“`

# 原因:pyenv(python-build)が悪い

asdf-pythonは内部的にはpyenvを使っている。
もう少し正確に言うと、pyenvはPythonをダウンロードしローカルビルドするためのツールコマンド `python-build` というものを持っていて、 asdf-pythonは `python-build` を実行することでPythonインストールを実現している。

なので探すべきはpyenvリポジトリーのissueだ。

元記事を表示

知財データAPI作成(3/n)-データベース部分

[前回](https://qiita.com/niship2/items/85f903ba8250efe41064)の続き
# 1.まとめ
知財データAPI作成ののため、特許データの入手とデータ更新の方法を整理した。

# 2.1 特許データの入手
大まかな流れは以下の①~④のとおり

#### ①[特許庁にデータほしい](https://www.jpo.go.jp/system/laws/sesaku/data/keikajoho/index.html)とお願いする(メールとか)
#### ②どれがほしいのか記入するフォームを送ってくれるので、指定して返信する。
#### ③同時に必要なデータ量を確保しているHDD等を担当部署に郵送する。
#### ④1月くらい(※)でデータを入れてくれたHDDが返ってくる

# 2.2 実際:
特許(知財系)データには大きく2つあり
* [書誌事項中心のbulkデータ](https://www.jpo.go.jp/system/laws/sesaku/data/download.html)
* [テキスト(要約、特許請求の範囲、実施例などの明細書)

元記事を表示

テンキーで操作するラズパイラジオ

# はじめに
●テンキーで操作するラズパイラジオ
ラズパイで使用可能なテンキー(エレコムのTCM011BK)を使用してます。
![スクリーンショット 2022-06-06 202155.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222582/d8422733-d623-da55-84f3-c49665fe41e6.jpeg)

# 環境
ラズパイZEROで構築しています。
radiko.shはhttps://github.com/jg1uaa/radish-play と同じものです。

# テンキーで操作するラズパイラジオプログラム(read_kbd.py)

“`Python
# Enterキーで再生停止です
# NumLock ONでもOFFでも同じラジオ局を割り当てています
# NumLock ON時のコードです。()内はOFF時のコードです。
# Tab コード:15(15)
# / コード:98(98)
# * コード:55(55)
# BS コード:14(14)
# 7

元記事を表示

[AWS Lambda] Pythonで外部モジュール(Pillow)を使う

# AWS Lambdaで外部モジュールを追加する方法を情報まとめた
AWS Lambdaだと使えないライブラリ(モジュール)がありますね。追加が必要な場面がありますので外部モジュールの追加についてまとめます。

![amazon_awslambda_logo_icon_167887.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260345/f2d6c424-010e-6845-9656-63ee0a4e6716.png)

今回LambdaでS3にアップされた画像いじりたいのでで`Pillow`使おうとしました。
モジュールをzipでアップすればいいのは知っていたのでpip installでデータ取得できたらzipにしてOKでしょ!
と思ってテストを実行したら

“`
[ERROR] Runtime.ImportModuleError: Unable to import module ‘lambda_function’: No module named ‘PIL’
“`

とエラー。pip in

元記事を表示

Pythonで遊んで株価を音声にしてみる(みたかった)

# 初めに
初心者がPythonで遊んだ備忘録。
Pythonも音声解析もなんもわからん…。

# モチベーション
最近、広告で[IG証券が株価を音楽にしている](https://ig-stockmusic.com/)のを見て(聞いて)、確かに株価も音声も一次元配列でいけるし、似てるな~と思い遊んでみたくなりました。
さらに軽く調べたところ、「[NumpyのarrayからPydubのAudioSegmentを作成する][NumpyPydub]」という記事から、Numpyのarrayから音声変換がお手軽にできそうということもわかりました。

[NumpyPydub]: https://own-search-and-study.xyz/2017/11/19/numpy%E3%81%AEarray%E3%81%8B%E3%82%89pydub%E3%81%AEaudiosegment%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B/

# 書いてみる
株価データはこちら

https://kabuoji3.com/stock/

より、2019年度の

元記事を表示

重心座標の計算速度(pythonコード比較)(3次元空間)

# 比較するコード
– `np.mean`
– `np.average`
– `np.sum`してから粒子数で割る(`jit`あり)

`np.mean`と`np.average`はnumbaにサポートされていない。
したがって `jit`で高速化できない。

# 方法
粒子数は 10,000個で、座標の値はランダム:`pos = np.random.rand(10000,3)`。
3つめの`np.sum`の関数は次の通り。
“`python
@njit
def calc_CoM(pos):
return np.sum(pos, axis=0) / len(pos)
“`

`%%timeit`を使用し、10,000回の繰り返しを100回実行した平均値を結果として次章に著す。

# 結果
| コード | 平均計算時間 | 1位との比 | ランキング |
|:———————-:|:——-:|:—:|:—:|
| `np.mean` | 125 μs | 5.2 | 3位 |
| `np.average

元記事を表示

Pythonによる各種入力チェック関数の実装

# 概要
Pythonによる各種入力チェック実装。
サーバーサイドでのチェックを想定しています。
実装するチェックは以下になります。
・必須チェック
・上限桁数判定
・型判定
・半角英数判定
・Base64判定

# ソースコード
“`python:checkUtil.py
import re

def checkRequire(checkStr: str):
# 必須チェック判定
return len(checkStr)!=0

def checkMaxNum(checkStr: str, maxNum: int):
# 上限桁数判定
currentNum = len(checkStr)
return currentNum <= maxNum def checkType(checkStr: str, type): # 型判定 if checkStr == None: return True return type(checkStr) == type def checkAlphaNum(checkStr: str): # 半角英数判定

元記事を表示

Pyhton3ではじめるシステムトレード:ヨーロピアンコールオプションの2項モデル

2022/6/6 18:30
# 時系列データの生成

あらかじめ定められた時点(満期)に、あらかじめ定められた価格(行使価格)で株式などの原資産を買うことのできる権利を売買するのがヨーロピアンコールオプションという金融商品です。このオプションの保有者は、満期($T$)に行使価格($K$)で原資産を買う権利を持っているので、満期時点の原資産の価格($S$)が行使価格よりも高ければ買う権利を行使して$S-K>0$の利益を得、そうでなければこの権利を放棄することで原資産を持つことにより被る損失を回避することができます。このようなオプションの評価は原資産価格を確率変数$S_t$とみなしてモデル化されます。満期時点の損益(ペイオフ)は$\max(S-K)$で与えられますので、その期待値を計算することで評価値を得ることができます。

 まずは現在の価格を$S$、1期先の価格を$uS$か$dS$とします。こらの事象が生起する確率は

“`math
\Biggl\{
\begin{array}{ll}
u & 確率 q & \\
d & 確率 1-q &

元記事を表示

scipy.stats: 相関係数 pearsonr, spearmanr, kendalltau

# scipy.stats: 相関係数 `pearsonr`, `spearmanr`, `kendalltau`

# 1. scipy.stats: ピアソンの積率相関係数 `pearsonr`

ピアソンの積率相関係数(いわゆる相関係数と略称されるもの)を計算する。

`pearsonr(x, y)`

“`python
import numpy as np

x = np.arange(15)
y = x**2
“`

戻り値は,ピアソンの積率相関係数と,無相関検定の結果の $p$ 値。

“`python
from scipy.stats import pearsonr

r, p_value = pearsonr(x, y)
(r, p_value)
“`

(0.9644093612193902, 6.916724428470378e-09)

戻り値には $t$ 値が含まれないので,本末転倒だが逆算する。

“`python
from scipy.stats import t
np.copysign(t.isf(p_value / 2,

元記事を表示

Python で Tweet の位置情報をヒートマップを用いて可視化しよう!(folium版)

# はじめに
[「Python で Twitter の位置情報収集」](https://qiita.com/ryamamoto0406/items/82e71076af387ee77762)で集めた Tweet の位置情報を可視化していきたい。今回はキーワードを “beer” として 2022年5月23日、24日、25日の間につぶやかれた位置情報を取得し、これを可視化してみる。データの取得方法については上記記事を確認されたし。

cartopy でヒートマップを作る方法は[Python で Tweet の位置情報をヒートマップで可視化しよう!(cartopy版)](https://qiita.com/ryamamoto0406/items/561b45fbcf65af41764c)に記載済み。前半部分は上記記事と全く同じ。

# データの読み込みと結合
まず収集したデータを読み込み、三つのデータフレームを結合する。

“`python:データ読み込みと結合
# 必要なモジュールのインポート
import pandas as pd

# データの読み込み
df1 = pd.read_c

元記事を表示

RuntimeError: cuInit failed: no CUDA-capable device is detected

#### RuntimeError: cuInit failed: no CUDA-capable device is detected がGoogle Colabで出たら。

“`
import numpy as np
import pycuda.gpuarray as gpuarray
from pycuda.elementwise import ElementwiseKernel
import pycuda.autoinit

————————-以下エラー——————————————
RuntimeError Traceback (most recent call last)
in ()
2 import pycuda.gpuarray as gpuarray
3 from pycuda.elementwise import Ele

元記事を表示

Python で Tweet の位置情報をヒートマップを用いて可視化しよう!(cartopy版)

# はじめに
[「Python で Twitter の位置情報収集」](https://qiita.com/ryamamoto0406/items/82e71076af387ee77762)で集めた Tweet の位置情報を可視化していきたい。今回はキーワードを “beer” として 2022年5月23日、24日、25日の間につぶやかれた位置情報を取得し、これを可視化してみる。データの取得方法については上記記事を確認されたし。

# データの読み込みと結合
まず収集したデータを読み込み、三つのデータフレームを結合する。

“`python:データ読み込みと結合
# 必要なモジュールのインポート
import pandas as pd

# データの読み込み
df1 = pd.read_csv(“./20220523_beer.csv”)
df2 = pd.read_csv(“./20220524_beer.csv”)
df3 = pd.read_csv(“./20220525_beer.csv”)

# データ結合
df = pd.concat([df1, df2, df3])

#

元記事を表示

一次相続と二次相続の最適化をPython で考察してみた

### 前書き
家族の長である父親が没したとき、その配偶者と子供達が父親の遺産を相続します。世間ではこれを一次相続と呼び、さらに父の配偶者が没した際には配偶者の遺産を子供達が相続し、それは二次相続と呼ばれています。さて、一次相続時に配偶者には大きな控除枠があり、1億6千万円又は法定相続分のいずれか多い金額まで非課税となります。そこで、その枠を目一杯利用して一次相続を節税すると、二次相続時に痛い目に合いますよと、あちこちで説明されています。例えば、YouTubeではプロの税理士さんが、一次相続と二次相続の注意点を説明している動画がたくさんあります。
さて、では実際に計算してみようと最初はスプレッドシートで作成し、それが言わばプロトタイプという感じになり、それをPython で表現したらどうなるだろうか? という興味からトライしたのが、この記事になります。
なお、私自身は、税理士ではありませんし、相続税をすみからすみまできちんと勉強しているわけでもありません。国税庁その他、税理士事務所のWEBサイトで開示されている情報や数式をそのまま適用して、ホビーとしてプログラミングを楽しんでいるアマチ

元記事を表示

OTHERカテゴリの最新記事