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

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

【Tkinter】spinboxの使いかた

<初めに>
TkinterのGUIを最近よく製作するようになり
オプションを覚えるのが大変なので、今回はspinboxの忘備録を投稿します
誰かのメモ程度に役立てば!(^^)!

“`
import tkinter as tk

spinbox = tk.Spinbox(frame_name, from_=0, to=120, increment=10, wrap=True, state=”readonly”)
“`

*frame_name
spinboxを設置するフレーム名

*from_
spinboxの最小値

*to
spinboxの最大値

*increment
値の間隔

*wrap
True →spinbox内が最小値の時に、繰り下がりボタンを押すと最大値になる
False →最小値の時に、繰り下がりボタンを押しても何も起きない。

*state
spinboxに直接入力が出来ないようにする
※ユーザーによっては、明後日の数値を入れられる恐れを回避する

<最後に>
spinboxの最低限のオプションをメモしました…!
これ以外にも沢山オプションあるので、気になる方

元記事を表示

飛んでいる飛行機をOpenCVで検出する

**PythonのOpenCV**を使って動画から映像を取得し、**飛んでいる飛行機を検知**します。

今回はピクセルを比較する方法で**動体検知**します。
とてもシンプルな手法ですが、飛んでいる飛行機を検知する上では**意外と正確**に検知出来たので記事にしました。

# 結果


0の0乗は何か?

0の0乗は何かを検索するといろいろな意見が出てきます。

「1だ」「いや0だ」「いやそもそも定義できない」など。

そこでpythonでy=0^xのグラフを描いて検証しました。

指数関数のグラフを描くのに下の記事を参考にしました。

https://qiita.com/Cesaroshun/items/8dd2321f909ae6ec7566?fbclid=IwAR0KZ0LEwvo83bI-ffrDceNvY_DoOR32qbNYUq27Jn-Dqw5A_nsfSR7bdIo

コードは以下です。

“`python:o^o
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, 10, 0.1)
y = 0**x
plt.plot(x, y)
plt.ylim(-1.5, 1.5)
plt.show()
“`

出力結果は下になりました。

![0power0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

pythonで前月の最終日からNヶ月前の初日にデータを区切る

# 最初に

機械学習やデータ分析で、特定の期間にデータを絞りたいなという時があると思います。

アドホックに絞る場合はPySparkや素のSQLで簡単に絞れますが、これを自動で、動的に絞りたいときはどうするか?

ということで、コーディングしてみました。

# ゴール
「プログラムを実行する日」を起点として、「その前月の最終日」から「3ヶ月前の月の初日」の2つを取得したいと思います。

# 流れ
## 「プログラムを実行する日」を取得する
つまり本日のdatetimeを取得します。
“`python
from datetime import date

current_datetime = date.today()
print(current_datetime)
>>> 2022-10-02
“`
## 「その前月の最終日」を取得する
### プログラム実行日の前月データ
relativedeltaメソッドを使います。
“`python
from dateutil.relativedelta import relativedelta

one_month_ago_datetim

元記事を表示

初投稿! python スクレイピングした情報を地図上に表示させる

初めてのqiita投稿

はじめまして!
日々プログラミングを勉強している大学生です!
日々のプログラミング学習で学んだことをアウトプットするためにqiitaに投稿をしようと思いました。
まだまだプログラミングやコンピュータについての知識が乏しいので誤った記載、改善すべき点についてご教授頂けると幸いです!

今回作った物について

今回はユーザーから県庁所在地を入力してもらい、その地域の気温を地図上に表示するというアプリを作りました。
作成の目的は今まで学んだライブラリを組み合わせてのアプリ開発をしようと思い、作ったので実用性はないと思います。

使ったライブラリ

folium(地図作成)
webbrowser(作成した地図を表示するため)
geocoder(逆ジオコーディング)
tkinter(入力を受け付けるウィジェット作成)
requests(APIから気温を所得)
sys(エラーが生じたときに実行を停止するため)

“`python:
location_names=[‘大阪市’,

元記事を表示

Colab環境などで、moviepyでエンコーダに nvenc / h264_nvenc を指定してもNoneTypeとしてエラーになり、GPUでエンコードできない

# 結論から先に言うと

moviepyが使用するffmpegが正しく指定できていなかった
以下のコードで明示的にしていしてやる
“`Python
from moviepy.config import change_settings
change_settings({“FFMPEG_BINARY”:”ffmpeg”})
“`

# 起こった事象
Google Colab上でGPUを有効にしたうえで、moviepyの動画エンコードを実施した。
GPUエンコードがされるように `h264_nvenc` を指定したが、該当のエンコーダが無いエラーが表示された
ffmpegコマンドで確認しても、使用可能なエンコーダに含まれているが使用することができなかった

# 解決策
moviepyのissueに同様の事象に対する解決策が記載されていた
参照しているffmpegが異なっていたのか、明示的に使用するffmpegを指定することで解決した
冒頭のコードを、最初に呼び出すことで解決した

https://github.com/Zulko/moviepy/issues/264#issuecomme

元記事を表示

Pythonで和暦西暦変換を7行で書く

和暦から西暦への変換。最も簡単なコードが欲しかったのでいろいろ探すのが面倒で自分で作った。

“`wareki2seireki.py
import re
def wareki2seireki(wareki_s, def_value=0):
era_dic = {“明治”: 1868, “大正”: 1912, “昭和”: 1926, “平成”: 1989, “令和”: 2019}
s = re.match(r'(明治|大正|昭和|平成|令和)([0-9]+|元)年’, str(wareki_s))
if s is None: return def_value
y = int(s.group(2)) if s.group(2) != ‘元’ else 1
return era_dic[s.group(1)] + y – 1

print(wareki2seireki(‘昭和60年’))
print(wareki2seireki(‘令和元年’))
“`

元記事を表示

Python Pandas基礎 -データ並び替え-

### 初めに
PythonのPandasについて初学者なりにまとめたいと思います。
学習に使っているのはこちらのキノコードです。

https://kino-code.com/category/introductory-course-pandas/

### 使用するExcelファイル

こちらを[リンク先を保存](http://kino-code.com/wp-content/uploads/2020/08/sample.xlsx)してローカルに落として利用しています。

### データの並び替え
#### シート名を指定してExcelを読み込む
Excelファイルをデータフレームとして読み込むには、read_excel関数を使用します。
read_excel関数の第1引数に、読み込みたいExcelファイル名を指定します。
続いて、第二引数のsheet_nameにシート名を渡すことで、指定のExcelシートを読み込むことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17

元記事を表示

【スクレイピング】Seleniumを使用したブラウザ操作自動化

# はじめに

– **Seleniumとは**
– Webブラウザの操作を自動化するためのフレームワーク

# 0. 前提
– Pythonをインストールしていること

https://qiita.com/rexid/items/8b2f0dd4f7ca03c13a7a

# 1. ファイルを準備

– Selenium用のフォルダ及びファイルを作成(なんでも良いです)
– VSCodeなどのエディタで開いておく

“`terminal:例
(base) sample@SampleMBP ~ % cd Desktop
(base) sample@SampleMBP Desktop % mkdir Selenium
(base) sample@SampleMBP Desktop % cd Selenium
(base) sample@SampleMBP Desktop % touch sample.py
(base) sample@SampleMBP Selenium % pwd
/Users/username/Desktop/Selenium
(base) sampl

元記事を表示

Googleニュースをpythonで取得する(RSS利用)

Googleニュースをpythonで取得したくて、試した内容を備忘録的にメモしておきます
## ライブラリを使ってみた(断念したもの)
まず初めに以下のライブラいを試してみました
https://pypi.org/project/GoogleNews/
しかし取れるデータが2年前くらいになってしまったので使用を断念しました。
(日本のニュースだと駄目なのかな?)

## 最終的に使ったもの
色々調べると以下のサイトでGoogleNewsのRSSが取れることを知りました。
https://qiita.com/KMD/items/872d8f4eed5d6ebf5df1

その後にfeedparserを使いました。
“`
$pip install feedparser
“`
そしてRSSのデータは日付が以下のような形式のため、datetimeを使って変換しました。
“`
Sun, 02 Oct 2022 03:28:43 GMT
“`

最終的なものは以下のもの(シンプルなもの)
“`
import feedparser
import datetime

keyWord = ‘田

元記事を表示

平均値と分散の逐次計算(オンラインアルゴリズム)

# 概要

平均値と分散の逐次計算を愚直にやると誤差が出るという話。

https://qiita.com/Ushio/items/f5630d87f55c7afa984e
上記のPython版(Welfordアルゴリズム + カハンの加算アルゴリズム)

# 結論

“`python
class Kahan:
def __init__(self, s=0.0, c=0.0):
self._sum = s
self._c = c

def add(self, x):
y = x – self._c
t = self._sum + y
self._c = (t – self._sum) – y
self._sum = t
return self

def __iadd__(self, other):
return self.add(other)

def __rsub__(self, other):

元記事を表示

自作PythonラッパーでGoogleグループのメンバーシップをより便利に管理する

## Googleグループのメンバーシップを管理する方法

Googleグループを管理するのは

1. Workspaceのadmin SDKを利用する

https://developers.google.com/admin-sdk/directory/v1/guides/manage-groups

2. CLI `gcloud`を利用する

https://cloud.google.com/sdk/gcloud/reference/identity/groups/memberships

3. Cloud Identity APIを叩く

https://cloud.google.com/identity/docs/how-to/setup

3つの方法があります
CLI `gcloud`はCloud Identity APIを叩いているので、方法2と方法3は実質同じです。

方法1との違いはなんでしょう?
ドキュメント読んで実際に試したところ、大きな違いは
1. WorkspaceはGCPで作ったサービスアカウントをメンバーとして追加できない(それはそう)
2. `gcloud

元記事を表示

【LightBGM入門】住宅価格、Tipsそしてタイタニック生存予測で遊んでみた♪

今回は、社会復帰のために以下のサイトを参考にLightBGMで遊んでみた。
参考は、➀がボストンの住宅価格、➁がseabornのtitanic、そして➂がseaborn datasetつながりでtipsのdata取得の参考です。
なお、ボストンの住宅価格は、参考➃の事情があるので、ここではカリフォルニア住宅価格を使って予測してみました。
参考
➀[Kaggler がよく使う「LightGBM」とは?【機械学習】](https://rightcode.co.jp/blog/information-technology/lightgbm-useful-for-kaggler)
➁[LightGBMを超わかりやすく解説(理論+実装)【機械学習入門33】](https://datawokagaku.com/lightgbm/)
➂[学習用データセット – seaborn【Python】](https://biotech-lab.org/articles/1408)
➃[機械学習の回帰データとしては、ボストン住宅価格データではなく、カリフォルニア住宅価格データを使おう](https://zenn

元記事を表示

40代プログラミング初心者が考えるスキルアップする勉強方法

プログラミング初心者ならきっと使えると思う勉強方法

ただダラダラやるよりも楽しくプログラミングスキルが身につくと思います
実際に私も実践中

## 本で学習あるある コードが間違っている

初心者は本があっていると思うから、コードミスで永遠と悩んで進まなくて諦めちゃうってことあると思います!

正誤表とかあるじゃん!って思うかもしれないが、初心者はそんなの知らないし!

あと、プログラミング言語がバージョンアップしたりすると動かなくなったりする

**そこで私は思った! コードはしっかり意味を理解しないといけない**

そして次のステップを進むことになった

## 教科書が最高のコードではない 自分でよりわかりやすく書き直す

教科書のコードは初心者にもわかりやすく書くことを意識していると思います

だからこそ、改善点はあると思います!

– 関数を使ってシンプルにしてみる
– いろんな組み込み関数を使ってみる

もしかしたらこんなことできるかも?ってことを検索してみる

競技プログラミングのこーどをみてるとなんで1行で書けるの?
すごいなあぁ~って思うようになって、色々調べる

【解決法】ModuleNotFoundError: No module named ‘chromedriver_binary’

– ファイル実行

“`terminal
$ python3 ファイル名
“`

– 失敗

“`terminal:例
sample@SampleMBP Selenium % python3 sample.py
Traceback (most recent call last):
File “/Users/username/Desktop/Selenium/sample.py”, line 1, in
import chromedriver_binary
ModuleNotFoundError: No module named ‘chromedriver_binary’
“`

`chromedriver_binaryが見つからんぞ。`と。

# 解決までの手順

## 1. ブラウザ上でChromeのバージョンを確認

ツールバーから「GoogleChromeについて」をクリック
![スクリーンショット 2022-10-02 19.15.07.png](https://qiita-image-store.s3.ap-northeast-1.am

numpy.lib.stride_tricks.as_stridedの使い方と仕組みを簡単に

# できること
numpyがサポートするndarrayオブジェクト(配列)をバイト単位で変形できる。reshapeメソッドでは形状の変更のみだが、as_stridedメソッドを使うとより手の込んだ変形ができる。

“`python:
a = np.arange(10, dtype=np.float64)
b = as_strided(a, (5, 2), (8, 8))
print(a)
“`
->
“`math
\begin{pmatrix}
0 & 1 \\
1 & 2 \\
2 & 3 \\
… & … \\
8 & 9 \\

\end{pmatrix}
“`

# ライブラリの使い方

①インポート
“`python:
import numpy as np
from numpy.lib.stride_tricks import as_strided
“`
②メソッド呼び出し
“`python:
as_strided(ndarray, shape, strides)
“`

戻り値:ndarrayオブジェクト(※注意)

引数について:
nd

PythonでTwitter APIを利用するまで (Auth 2.0 with PKCE 認証)

# はじめに
最近やりたいことが多くてツイッターする暇がないので、自分の代わりにツイッターやってくれるプログラムを組みたくて手を付けました。
将来的にはチャットBOTや情報収集AIのようなものも考えたいので、その分野に明るいPythonを選択。
認証部分はAuth 1.0aとAuth 2.0で選択ですが、やるなら最新であり他のサービスでも考え方が流用できるAuth 2.0を選択。

公式docが分かりにくいうえにPythonの公式サンプルがない部分もあり、また有志のPythonサンプルは昔のコード(Auth 1.0a利用)のものしか見つからなかったので、標準モジュールの中身を見たりテストプログラム走らせたりしながら動くものを作りました。
Auth 2.0利用のサンプルコードはいくばくか需要があるのではないかと思い、折角ですし作ったコードについて記事を書いてみます。

# 開発環境
+ Windows 11 home
+ Anaconda 3-2022.05 (Jupyter Notebook 6.4.8)
+ Python 3.9.14
※ 認証確認ソースコードの方はPytho

Python用標準入力チートシートまとめ

# はじめに
python用の標準入力でよく使うものを集めたチートシートです。
便利そうなものがあれば随時更新してゆきます。

# 標準入力のコーディングに必要な関数
### input()
入力で与えられるフォーマットを文字列で取得する
“`
# 以下入力pを与えられるとすると
p

# pを取得してsに値を入れる
s = input()

# 出力
print(s) 
>>> p (str)
“`
input関数で取得した時点ではstr(文字列)なので、計算などで使用する場合は型を変えてあげる必要があります。
“`
# 入力

i = int(input()) # 3を取得してint(整数)に変更してiに値を入れる

print(s) # 出力: 3 (int)

“`
### split()
文字列を分割する関数です
“`
# 以下入力 a と b をスペースを挟んで与えられるとすると
a b

# a と b を取得して s にlist形式で入れる
s = input().split()

# 出力
print(s)
>>> [‘a’, ‘b’]
“`
spli

PythonでEmbulkを動的に実行する

# はじめに
ETLツールの一種であるEmbulkでは、データ転送の処理をyamlで設定して実行します。
動的に処理内容を変更したい場合、yamlの一部を環境変数に置き換えることができます。

しかし、処理内容を実行ごとに変化させたい場合、環境変数で設定をするのは面倒です。例えば、出力するファイル名に実行時間を加えたい場合などには、環境変数を逐一変更することになります。
この記事では、Python用のテンプレートエンジンであるjinja2を使って、簡単にyamlの設定ファイルを動的生成する方法について紹介します。より作り込んだシステムが必要な場合には、Digdagなどのワークフローエンジンを使うことが良いです。

## そもそもEmbulkとは
EmbulkとはOSSのバッチ型のデータ転送ツールです。ストリーミングデータを対象にしたfluentdと対になるようなツールです。コンパクトながら、たくさんの入出力のデータソースに対応しておりとても便利です。

https://www.embulk.org/

日本人の古橋さんという方が主導で開発されているようです。とてもありがたいです。下のリ

西暦10^4300年問題

# CVE-2020-10735とその「修正」

2022年9月7日に[Python](https://www.python.org/)のセキュリティアップデートがリリースされました。

– [Python Insider – Python releases 3.10.7, 3.9.14, 3.8.14, and 3.7.14 are now available](https://pythoninsider.blogspot.com/2022/09/python-releases-3107-3914-3814-and-3714.html)
– [窓の杜 – 「Python」に定例外のセキュリティアップデート](https://forest.watch.impress.co.jp/docs/news/1438284.html)
– [yKesamaru @ Zenn – Python: int/str 型変換における破壊的変更のお知らせ](https://zenn.dev/ykesamaru/articles/2175b317a5410e)

修正された脆弱性は[CVE-2020-10