Python関連のことを調べてみた2021年08月05日

Python関連のことを調べてみた2021年08月05日
目次

PythonでYYYYMMDD形式の文字列を取得する

## YYYYMMDD形式

“`
import datetime
format(datetime.date.today(), ‘%Y%m%d’) # -> ‘20210805’
“`

## YYYY/MM/DD形式
“`
import datetime
format(datetime.date.today(), ‘%Y/%m/%d’) # -> ‘2021/08/05’
“`

## フォーマット方法が知りたい

Pythonのドキュメントはこちら。
[strftime() と strptime() の書式コード](https://docs.python.org/ja/3/library/datetime.html?highlight=datetime#strftime-and-strptime-format-codes)

## なんでこんな単純な記事書いたの?

ググって出てきたコードがコピペで動かないやつばっかでイラっとしたから。

元記事を表示

qiita の投稿からランダムで1記事選んで twitter に自動で投稿する

2~3 年前くらいに twitter を始めましたが、とくに呟くことがないので qiita の記事をテキトーに投稿する bot 化させることにしました。
手始めにまずは、qiita の投稿からランダム1件記事を取得して twitter に投稿するスクリプトを python で書いてみます。

## qiita から記事を取得
まずは qiita へ投稿した記事の中からランダムに 1 件取得するスクリプトです。投稿を取得する処理は以前に記事にしたことがあるので、そちらを参考にして作っていきます。
https://qiita.com/kiyo27/items/e444c257ce7026c4572b

“`python:qiita.py
import urllib.request
import json
import os
import random

API = ‘https://qiita.com/api/v2’

def send_request(url):
req = urllib.request.Request(url)
req.headers = {

元記事を表示

Python初心者を脱するために作ったプログラムをまとめてみた

僕はデータエンジニアをやっていて、日頃からデータを収集したり自動化したりしています。
エンジニアになりたての頃に勉強のために作ったプログラムをまとめました。各リンクはGitHubに飛びます。
動かなくなっているものもあるかもしれませんが、誰かの役に立てば幸いです。

– [メルカリから商品情報をスクレイピングする](https://github.com/nakatatsu711/scraping_mercari)
– [Google検索を自動化する](https://github.com/nakatatsu711/scraping_google)
– [Yahoo検索を自動化する](https://github.com/nakatatsu711/scraping_yahoo)
– [【改良版】Yahoo検索を自動化する](https://github.com/nakatatsu711/scraping_yahoo2)
– [ランサーズの検索案件を自動化する](https://github.com/nakatatsu711/Archive/tree/master/automate_lan

元記事を表示

OpenCVでcv2.imshowのエラー

今まで問題なく使えていたOpenCVの仮想環境で下のエラーが発生

“`
The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function ‘cvShowImage’
“`

# 解決方法
一度アンインストールして再度インストール

“`console
$ conda uninstall opencv
$ conda install opencv
“`

conda uninstall opencvのコマンドだけだとアンインストールしきれないパッケージもあったので、conda listで確認して個別にアンインストールが必要になるかも。
※古いバージョンのパッケージが残っているとそっちにバージョンが引っ張られたりする。

元記事を表示

[06] subprocessの代替パッケージ「sh」を使ってみる … Git 操作をする

|本シリーズのトップページ|
|:–|
|https://qiita.com/robozushi10/items/fabde36bb9a312347bc7|

# はじめに

一般的に Python で Linux コマンドを使う場合は `subprocess` を使うこと多い.
が、標準パッケージでは無いものの subprocess の代替である「`sh`」(`amoffat/sh`) も便利である.[^1]

個人的な考えではあるが、「sh[^2]」は標準パッケージでは無いので、職場などで使い込むと
他者の迷惑になり兼ねない。しかし、適度に使う分には `subprocess` よりも速く実装できて
好都合なので書き残しておく.

ここでは **Git Contrib という機能を使って Git 操作を実現** する例を記す.
(ただし、Read Only 系の操作に絞る)

なお、ほとんど理解できていないが、Git が Contrib という名称で CLI を提供しており、
どうやら「sh」がこの Contrib を使えるようである.

この実装方法であれば

幅優先探索の使い道

幅優先探索は、深さ優先探索と並べて紹介されることが多いですが、アルゴリズムの中で出会う場面は深さ優先探索と比べると少ない印象です。

###グラフ探索
N個の頂点とM個の辺からなる有向グラフGにおいて、始点sから各頂点に接続可能かを判定する。

“`Python:GraphSearch.py
# グラフ探索:幅優先探索

# アルゴリズム定義
def BFS(G, s):
N = len(G)

seen = [False for i in range(N)]
todo = []

seen[s] = True
todo.append(s)

while todo:
v = todo[0]
del todo[0]

for x in range(len(G[v])):
if seen[G[v][x]]:
continue
seen[G[v][x]] = True

深さ優先探索の使い道

深さ優先探索は、幅優先探索と並べて紹介されることが多いですが、実際の使用場面でいうと深さ優先探索が圧倒的に多い印象です。

そんな深さ優先探索についてアルゴリズムをまとめます。
①組合せアルゴリズムへの適用
・ナップサック問題への適用
・編集距離への適用
②グラフアルゴリズムへの適用
・グラフ探索
・s-tパス探索
・トポロジカルソート
・ベルマンフォード法
・ワーシャルフロイド法
・フォードファルカーソン法

#①組合せアルゴリズムへの適用
###ナップサック問題への適用
N個の品物の重さと価値をweight[i], value[i]とし、ナップサックに入れられる重さの総和をWとするときに、ナップサックに入れられる価値の総和の最大値を求める。

“`Python:Knapsack.py
# ナップサック問題を解く動的計画法
# 計算量 :O(NW)

# アルゴリズム定義
def knapsack():
dp = [[0 for number in range(0, W+1)] for i in range(0, N+1)]

for i in range(0,

[05] subprocessの代替パッケージ「sh」を使ってみる … sudo をパスワード自動入力で使う

|本シリーズのトップページ|
|:–|
|https://qiita.com/robozushi10/items/fabde36bb9a312347bc7|

# はじめに

一般的に Python で Linux コマンドを使う場合は `subprocess` を使うこと多い.
が、標準パッケージでは無いものの subprocess の代替である「`sh`」(`amoffat/sh`) も便利である.[^1]

個人的な考えではあるが、「sh[^2]」は標準パッケージでは無いので、職場などで使い込むと
他者の迷惑になり兼ねない。しかし、適度に使う分には `subprocess` よりも速く実装できて
好都合なので書き残しておく.

[前項](https://qiita.com/robozushi10/items/4b613de3fd84776ff776)では `sh.contrib.sudo` を使ったが、パスワード入力が毎回発生してしまう.
そこで、本項では「**「sh」で sudo を使いつつパスワードを自動入力する方法**

【競プロ典型90問】001の解説(python)

## 概要
[競プロ典型90問](https://atcoder.jp/contests/typical90)の解説記事です。
解説の画像を見ても分からない(~~理解力が足りない~~)ことが多々あったので、後で解き直した際に確認できるようまとめました。

※順次、全ての問題の解説記事を挙げていく予定です。

## [問題001-Yokan Party](https://atcoder.jp/contests/typical90/tasks/typical90_a)

### 問題概要
長さLのようかんをK+1個に切り分けた時のピースの中で最も小さいピースの最大値を求める。
ただし、切り分ける場所は、N箇所のいずれか(A1 ~ AN)で指定されている。

### 制約

“`math

1 <= K <= N <= 100000 \\ 0 < A1 < A2 < ・・・ < AN < L <= 10^9 ``` ### 解き方 全ての切り分け方を求めてから計算する方法は、 N個の切れ目からK個選ぶパターン、すなわちnCk通りを調べることになり、NG。 そこで今回は、 1. X

[04] subprocessの代替パッケージ「sh」を使ってみる … sudo を使う

|本シリーズのトップページ|
|:–|
|https://qiita.com/robozushi10/items/fabde36bb9a312347bc7|

# はじめに

一般的に Python で Linux コマンドを使う場合は `subprocess` を使うこと多い.
が、標準パッケージでは無いものの subprocess の代替である「`sh`」(`amoffat/sh`) も便利である.[^1]

個人的な考えではあるが、「sh[^2]」は標準パッケージでは無いので、職場などで使い込むと
他者の迷惑になり兼ねない。しかし、適度に使う分には `subprocess` よりも速く実装できて
好都合なので書き残しておく.

[前項](https://qiita.com/robozushi10/items/dd9f1e72860ae727f77f)では `sh.find` を使ったが、探索権限が無いディレクトリにアクセスすると例外が発生してしまう.
そこで、本項では「**「sh」で sudo の使用する方法**」を記す.

Web上の画像をファイルに残さずOpenCV用に取り込む

#やりたかったこと
WEB上の画像をローカルに保存することなく、OpenCV用の形式(ndarray)に変換する関数が欲しかったので作った。

#開発環境
– Windows 10 Home 21H1 64bit
– Python 3.9.4

#コード
“`Python:imread_web
import cv2
import requests
import tempfile
import os

def imread_web(url):
# 画像をリクエストする
res = requests.get(url)
img = None
# Tempfileを作成して即読み込む
fp = tempfile.NamedTemporaryFile(dir=’./’, delete=False)
fp.write(res.content)
fp.close()
img = cv2.imread(fp.name)
os.remove(fp.name)
return img

# 使用イメージ
img = imre

初心者がデータサイエンス100本ノック(構造化データ加工編)をやってみた part4

この記事はデータサイエンスを勉強しながら、データサイエンス協会が提供するデータサイエンス100本ノック(構造化データ加工編)を解く過程を自分用にまとめたものです。

 P-001~P-016 [part1](https://qiita.com/pyon/items/c208e585e0cdfabc58bd)
 P-017~P-022 [part2](https://qiita.com/pyon/items/73bf9e8fe75f807aeea8)
 P-023~P-031 [part3](https://qiita.com/pyon/items/948ca309c7985fa2e855)
 P-032~P-039 [part4](https://qiita.com/pyon/items/e7146bbb728979430814)

+ パーセンタイル `quantile()`
+ データフレームの結合 `pd.merge()`
+ 欠損値を埋める `fillna()`
+ 重複した行を検出 `duplicated()`

# P-032 `quantile()`
“`python:

直近7日間のAWS利用料金をグラフ化してS3に保存する

# アーキテクチャ
以下のアーキテクチャでAWS利用料金をグラフ化してSlack通知させてみます。

![arch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59081/91a0fb55-56a5-397c-129e-5436f4712364.png)

# Lambdaを使ってAWSの料金を取得する
AWSの利用料金はCostExplorerの [get_cost_and_usage()](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ce.html#CostExplorer.Client.get_cost_and_usage) を叩くことで取得することができます。グラフ化するにはpandasとmatplotlibを使います。このときにpandasとmatplotlibはLambdaのレイヤーとして追加します。
ソースコード内の**ファイルアップロード先であるS3バケット名は適宜変更してください

[03] subprocessの代替パッケージ「sh」を使ってみる … findコマンド

|本シリーズのトップページ|
|:–|
|https://qiita.com/robozushi10/items/fabde36bb9a312347bc7|

# はじめに

一般的に Python で Linux コマンドを使う場合は `subprocess` を使うこと多い.
が、標準パッケージでは無いものの subprocess の代替である「`sh`」(`amoffat/sh`) も便利である.[^1]

個人的な考えではあるが、「sh[^2]」は標準パッケージでは無いので、職場などで使い込むと
他者の迷惑になり兼ねない。しかし、適度に使う分には `subprocess` よりも速く実装できて
好都合なので書き残しておく.

本項では「**「sh」で find コマンドする**」を記す.

この実装方法であれば シェルスクリプトに近い感覚で実装できるので、
subprocess よりも速く実装できるのではないかと思う.

# セットアップ

pip 等で `sh` をイ

Pythonを使ってロジスティック回帰の統計的検定:低体重児研究を例にstatsmodelsで係数の有意性とモデルの適合度を確認する

# はじめに

ロジスティック回帰に関する2本目の記事です。
前の[1本目の記事](https://qiita.com/shinji_komine/items/6820ee1bcff393d929ef)では、交絡因子や交互作用を理解するため、人工的なデータを使いました。交絡因子や交互作用といた用語になじみのない方は、この拙著などを参考にしていただければと思います。

この記事では、教科書「[ロジスティック回帰分析: SASを利用した統計解析の実際](https://www.amazon.co.jp/%E3%83%AD%E3%82%B8%E3%82%B9%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90-SAS%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F%E7%B5%B1%E8%A8%88%E8%A7%A3%E6%9E%90%E3%81%AE%E5%AE%9F%E9%9A%9B-%E7%B5%B1%E8%A8%88%E3%83%A9%E3%82%A4

[シリーズ 全6回] subprocessの代替パッケージ「sh」(amoffat/sh)を使ってみる

# はじめに

標準パッケージでは無いものの subprocess の代替である「sh」(amoffat/sh) も便利である.

個人的な考えではあるが、「sh」は標準パッケージでは無いので、職場などで使い込むと
他者の迷惑になり兼ねない。しかし、適度に使う分には subprocess よりも速く実装できて
好都合なので書き残しておく.

|コンテンツ|掲載時期|
|:–|:–|
|[[06] subprocessの代替パッケージ「sh」を使ってみる … Git 操作をする](https://qiita.com/robozushi10/items/56964235a84c649bc0e5)|2021/08|
|[[05] subprocessの代替パッケージ「sh」を使ってみる … sudo をパスワード自動入力で使う](https://qiita.com/robozushi10/items/650f8521ffabdfb5f01e)|2021/08|
|[[04] subprocessの代替パッケージ「sh」を使ってみる … sudo を使う](https://qi

[02] subprocessの代替パッケージ「sh」を使ってみる

|本シリーズのトップページ|
|:–|
|https://qiita.com/robozushi10/items/fabde36bb9a312347bc7|

# はじめに

一般的に Python で Linux コマンドを使う場合は `subprocess` を使うこと多い.
が、標準パッケージでは無いものの subprocess の代替である「`sh`」(`amoffat/sh`) も便利である.[^1]

個人的な考えではあるが、「sh[^2]」は標準パッケージでは無いので、職場などで使い込むと
他者の迷惑になり兼ねない。しかし、適度に使う分には `subprocess` よりも速く実装できて
好都合なので書き残しておく.

本項では「**手抜きをして『sh』を使う場合**」を記す.

この実装方法であれば シェルスクリプトに近い感覚で実装できるので、
[前項](https://qiita.com/robozushi10/items/815748c274a3a54af4

[01] subprocessの代替パッケージ「sh」を使ってみる

|本シリーズのトップページ|
|:–|
|https://qiita.com/robozushi10/items/fabde36bb9a312347bc7|

# はじめに

一般的に Python で Linux コマンドを使う場合は `subprocess` を使うこと多い.
が、標準パッケージでは無いものの subprocess の代替である「`sh`」(`amoffat/sh`) も便利である.[^1]

個人的な考えではあるが、「sh[^2]」は標準パッケージでは無いので、職場などで使い込むと
他者の迷惑になり兼ねない。しかし、適度に使う分には `subprocess` よりも速く実装できて
好都合なので書き残しておく.

本項では「**手抜きをせずに『sh』を使う場合**」を記す.
そして、本項の実装だと subprocess に置き換えるメリットは少ない かと思う.
逆に、 [次項](https://qiita.com/robozushi10/items/7fee38be93b4

Z3Py 例題 数独

# 問題
3×3のブロックに区切られた 9×9の正方形の枠内に1〜9までの数字を入れる。 ([Wikipedia:数独](https://ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC))

# 回答
“`example_sudoku.py
from z3 import *

problem = [
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 4, 3, 0, 0, 0, 6, 7, 0],
[5, 0, 0, 4, 0, 2, 0, 0, 8],
[8, 0, 0, 0, 6, 0, 0, 0, 1],
[2, 0, 0, 0, 0, 0, 0, 0, 5],
[0, 5, 0, 0, 0, 0, 0, 4, 0],
[0, 0, 6, 0, 0, 0, 7, 0, 0],
[0, 0, 0, 5, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 8, 0, 0, 0, 0]
]
X = [[Int(“x_%s_%s” % (i, j))for

Pythonで作る遺伝子発現ヒートマップ

#遺伝子発現ヒートマップとは
ヒートマップは、マイクロアレイやRNA-Seqの解析結果を視覚化する目的で使われます。全遺伝子のサンプル(実験区)ごとの発現の変化を視覚化するのに優れています。

遺伝子発現レベルに応じて色付けをしてサンプルごとの遺伝子発現レベルの変化を見ることができます。

このヒートマップにクラスタリング解析を組み合わせることで、よりグラフを見やすくすることができます。クラスタリング解析によって、遺伝子発現パターンが類似しているサンプル、遺伝子を見分けることができます。

![Heatmap.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471633/ddd24104-109b-b4c2-96e2-47a1ec83d9e6.png)
(wikipediaより)

論文でもよく見かける何やら作るのが難しそうな図は、Pythonの**bioinfokit**ライブラリを使えば簡単に作ることができちゃいます。

今回はこの遺伝子発現ヒートマップの作り方を備忘録的に書いていきます。

[bio