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

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

Pythonで可愛い子の画像集め(Seleniumでスクレイピング)

## はじめに

機械学習の勉強していたとき「学習させる画像をスクレイピングで集めたいな」と思い立ちました。
機械学習・AI関連の勉強しているときに「学習データどう集めよう問題」はよくあるのではないかと思います。
本記事がそのような人たちのお役立ちになれば幸いです。

なお、記事内ではアイドルの画像を収集していますが、コマンドライン引数で収集画像を指定できる作りにしています。

## やりたいこと

* PythonでWebスクレイピングして画像収集
* Python + Seleniumで実装
* コマンドライン引数に収集したい対象を指定したら、「[プリ画像](https://prcm.jp/)」サイトから画像をダウンロード

以下のように実行すると、

“`
python XXX.py 乃木坂46 100
“`

このように画像が集まります。

![nogizaka.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2080707/424f97e9-9f4c-0a8b-8a31-a639fb13a6

元記事を表示

メモ〜jenkinsを用いたpython unittestの定期実行

今回のお題

今回は、jenkinsを用いてpythonのunittestを自動化していきます。

前回の続きです。

https://qiita.com/keishi04hrikzira/items/180611da1858a83aff4f

目次

– workspaceの追加
– ビルド内容の指定
– 実行タイミングの指定

workspaceの追加

まずは最初にworkspaceの追加を行います。

テストを手動で実行する場合、まずはターミナル上でテストファイルのディレクトリで移動すると思います。

jenkinsに作業を任せる場合もそれと同じで、まずは実行対象のテストのありかを教えてあげる必要があります。

まずはいつものようにジョブの新規作成を選択し、適当な名前をつけてください。

区分は`フリースタイルプロジェクト`で大丈夫です。

次に以下の画面で高度な設定を押してください。

[![Image from Gyazo](https://i.gyazo.com/1af58516a74995f7c35d0c47b9210995.png)](https://gyaz

元記事を表示

【Project Euler】Problem 70: アナグラムのファイ関数

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題:アナグラムになるファイ関数の最小値

原文 [Problem 70:Totient permutation](https://projecteuler.net/problem=70)

**問題の要約: $1

元記事を表示

pythonのparameterizedについてまとめる

今回のお題

今回はpythonのunittestで用いられる`parameterized`というパッケージを取り上げます。

parameterizedはパラメータを用いたテストを可能にするものです。

例えば以下のような関数を定義し、それをテストするとしましょう。

“`python:関数定義
def add(a, b):
return (a + b)
“`

“`python:テスト
class MyTestCase(unittest.TestCase):
def test_add(self):
assertEqual(add(3, 5), 8)

if __name__ == “__main__”:
unittest.main()
“`

add関数は引数aとbがどんな数字であっても成り立ってほしいですが、上記の例では`3 + 5 = 8`しか確認できていないので厳密性が担保できているとは言い難いです。

そのような場合にパラメータを用いることで複数のケースでのテストを容易にするのが、今回のテーマである`parameterized`です。

元記事を表示

【裏技】AtCoderでコンパイラコマンドを変更する

# はじめに

AtCoderでコンパイラコマンドを変更できたらなあ,ということはありませんか?
そんなときのための裏技です.

# フォーマット

以下を**Python**で実行することで,自由なコンパイラコマンドでコードをコンパイルできます.

“`py
import sys
import os

# 実行前であることを判定
if sys.argv[-1] == ‘ONLINE_JUDGE’:
import subprocess

# ファイルの名前
filename = ‘mycode.cpp’
# コンパイラコマンド
command = ‘g++ -std=gnu++17 mycode.cpp’
# コード
mycode = r”’
#include
using namespace std;
int main() {
cout << "Hello world!" << endl; } ''' # ファイルを作成し,コードを記述 with open(filename, 'w') as f: f

元記事を表示

pythonのunittestについてまとめる

今回のお題

今回はpythonの`unittest`についてまとめます。

`unittest`とはpythonの標準モジュールの一つであり、ここにはテストコードの実行に必要なクラスや関数がまとめられています。

すなわちこのモジュールをimportすることで手軽にテストコードの実装が可能になるというわけです。

本記事で扱うこと

– unittestの基本的な仕組み
– unittestの実行方法
– unittestの結果の見方

本記事で扱わないこと

– DOM操作関連
– パラメータテスト
– テストで用いるDBの設定方法

アプリケーションにテストを実装するとなるとDBの設定などでややこしくなるので、まずはテストのスクリプト単体で動作させることを目指します。

また、パラメータテストについてはパッケージのインストールが必要なので別で取り上げます。

unittestの仕組み

unittestの仕組みをごく単純化すると、

– テストコードが書かれたファイルを用意する
– そのファイルを`% python3 ファイル名.py`として実行する

これだけです。

元記事を表示

【AtCoder解説】PythonでABC226のA,B,C,D,E問題を制する!

**ABC226**の**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**

元記事を表示

[atcoder] ABC226 涙の反省記事

こんばんは。たゅと申します。

ABC226にpython3で参戦。

https://atcoder.jp/contests/abc226/tasks

三完で入茶させてクレメンスと息巻いていたところ、なんと__ABを通すのに40分+5ペナ__という最悪の事態に。

![2021-11-07 22.40のイメージ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623784/165efb71-830e-91fc-dede-ed5b7ec8485e.jpeg)

Cは推定茶色中盤diffだったので、むしろよく粘ったと自分では納得しています。しかし、ABでここまで詰まることは完全に想定外だったので、コンテスト中は狂いそうでした。

この悔しさをなんとかポジティブな方向に昇華するために、記事を書いております。

概要としては、
__ABC226のA,B問題について、python3で解説します。__
Cも後で解答を見て余裕があれば復習として追記したいと思います。

## A問題
https://atcod

元記事を表示

djangoの開発環境でポートを解放したい

タイトル通りです。
これを叩こう。

“`
kill `lsof -ti tcp:8000`
“`

元記事を表示

AtCoder ABC226 挑戦!(Python)

ABC226、コンテスト8回目の挑戦です!
C問題が手も足も出ませんでした。。。解説を見ても何を言ってるのかまったくわからず、アルゴリズムの勉強が必要だと感じました。武器が足りない。

AtCoder Problemsを見ると、Difficulty=539となってて、今までのC問題が、300-400くらいだったのを考えると、やはり体感通り難しかった模様。(めちゃくちゃ難しいというレベルではないようだが) レートも、ABしか解いてないけど、20くらい上がってた。

“`ruby:ABC225A
X=input()
from decimal import Decimal, ROUND_HALF_UP, ROUND_HALF_EVEN

print(Decimal(str(X)).quantize(Decimal(‘0’), rounding=ROUND_HALF_UP))
“`
最初round()関数でやってたら、なぜかWA。
pythonのround()関数は、銀行丸めという方法なので、エラーが出た模様。

“`ruby:ABC226B
N=int(input())

L_list

元記事を表示

MacBook Pro (M1 Pro 10 Core)の実力

# はじめに

2021年10月に発売されたMacBook Proを購入したので、今まで使用していた2013年のMacBook Proと処理時間を比較してみました。結論を先に言ってしまうと、その早さに驚愕です。

||MacBook Pro 2013|MacBook Pro 2021|
|-|-|-|
|PC|MacBook Pro (Retina, 13-inch, Late 2013)|MacBook Pro (14インチ、2021)|
|CPU|2.6GHz デュアルコアIntel Core i5|Apple M1 Pro|
|Memory|8GB|16GB|
|OS|macOS Big Sur (11.6)|macOS Monterey (12.0.1)|
|Python|3.8|3.9|

# プログラムの説明

8607社の株式の時系列データを下記計算式にフィットさせaの値を求めます。

“`math
y = e^{ax}
“`

データを正規化するために、x=0のとき、y=1となるうようにデータを調整しています。1銘柄に対して、2011年から2016年、2012年か

元記事を表示

Python機械学習/summarytoolsでデータの概要把握

# Summary
summarytoolsパッケージ内のdfSummaryを使ってデータ概要を可視化する方法について解説.

# パッケージインストールとインポート
“`py
# ! pip install summarytools
from summarytools.summarytools import dfSummary
import pandas as pd
import seaborn as sns
“`

# データの準備
今回は,seaborn内のタイタニックデータを使用.

“`py
data = sns.load_dataset(‘titanic’)
data.head()
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/17f448b9-b213-df5d-62a3-f88298a58c5a.png)

# データ概要の可視化
`dfSummary`でデータ概要を可視化

引数の詳細
元記事を表示

図解でわかる asyncio 入門

# 前置き
業務で大量のWeb APIを並行で投げる必要があり、良い方法がないか探したところ、asyncio が良いソリューションだったため勉強した。勉強したことをまとめて、アウトプットするということで情報をここで公開する。これから asyncio を学習する人の役に立つとうれしい。

## 想定読者
– 並列・並行処理の概念はわかっているが、asyncio の処理がいまいち理解できてないので理解したい人

## 検証環境
– Python 3.9.4
– Jupyter Notebook 上で検証

# asyncio とは
asyncio ([→公式ドキュメント](https://docs.python.org/ja/3/library/asyncio.html)) とはざっくり言ってしまうと、**`async/await` 構文を使ってシングルスレッドで並行処理を行うためのライブラリ**。
Python には並列処理・並行処理を行うためのライブラリがいくつかあるが、**シングルスレッドで動く**のがポイント。下記図のように、あるライブラリではマルチプロセスで動作し並列処理を行い、

元記事を表示

手元のテキストデータでワードクラウド描こう(パート2)~TF-IDF編~

#はじめに

https://qiita.com/hima2b4/items/824566897de593d882d7

前回、WordCloudの記事を書いたあと、「TF-IDF」という文書中に含まれる単語の重要度を評価する手法の存在を知りました。
ワードの出現頻度TFとワードのレア度IDFを掛け合わせたもので、出現頻度が高くかつレアなワードほど大きい値を示すもののようです。

これを知ると、出現頻度だけじゃなく、TF-IDFでもワードクラウドが描きたくなり、やってみたという記事です。

TF-IDFは、scikit-learnにTfidfVectorizerというライブラリで計算できるのですが、対象品詞の設定やこのライブラリで計算したTF-IDFをうまくワードクラウドに持ち込むことができず、このライブラリの使用は断念。
 
以下のサイトに公開されているTF-IDFマニュアル計算コードに手を加えさせていただき、

– ワードクラウド描画可能な形式にTFIDF計算結果を加工、TF-IDFのワードクラウドの描画を可能に
– 対象品詞に基礎型の動詞と形容詞を追加
– nlplotというラ

元記事を表示

OS/実行環境の情報を取得する【Node.js/C#/Python】

Node.js/C#/Pythonの3言語にてOS/実行環境の情報の取得方法を調べたのでここに備忘録を記す。

# Node.js
“`js
“use strict”;
const os=require(“os”);

(function(){
// プラットフォームID
console.log(process.platform);
// OS名
console.log(os.type());
// OSバージョン
console.log(os.release());
// OSアーキテクチャ
console.log(process.env.PROCESSOR_ARCHITEW6432||process.arch);

// Node.jsバージョン
console.log(process.version);
// Node.jsのアーキテクチャ
console.log(process.arch);
})();
“`
[ideone](https://ideone.com/k2EVS

元記事を表示

exec関数を使って、ファイル読込で取得したPythonコードの文字列を実行

:::note warn
個人的なメモ
別ファイルの処理を呼ぶ際は通常、import文を使いますが、
exec関数を使って、擬似的に値のやり取りをする方法を書きます。
:::

# やりたいこと
1.exec関数を使う前に別ファイルで使う変数を擬似的に宣言
2.exec関数を通して変数を授受し、グローバル変数の如く扱う
3.結果を表示

# ソースコード

## Pythonから読み込むテキストファイル

“`text:input.txt
dictionary[“key1″]=”value1”
dictionary[“key2″]=”value2”
dictionary[“key3″]=”value3”
dictionary[“key4″]=”value4”
dictionary[“key5″]=”value5”
“`

## Pythonソースコード
“`python:execution.py
from os.path import dirname
with open(dirname(__file__) + ‘/input.txt’) as f:
vari

元記事を表示

tensorboardでとりあえずグラフだけ可視化したいときのwith構文

tensorflowの計算グラフを描画するwith構文です。このスコープ内のtf.functionなどをtensorboardに描画します。

(tensorflowの解説についての記事を書いている途中なのですが、先にこれだけ載せておきます)

“`python
import contextlib
import datetime

import tensorflow as tf

@contextlib.contextmanager
def draw_graph(name: str = ‘myfunc’):
“””
計算グラフをtensorboardに描画する。
ログは`./tf_function/(name)_YYmmdd-HHMMSS`のフォルダに格納される。
args:
name: str(optional)
“””
stamp = datetime.datetime.now().strftime(“%Y%m%d-%H%M%S”)
logdir = f’tf_function/{name}_{stamp}’

元記事を表示

差圧センサDLHR-F50DをRaspberry Pi + Pythonで使えるようにする

All sensors (Amphenol)製 差圧センサー DLHR-F50D-E1BD-C-NAV8 をRaspberry Pi + Pythonで動かしてみた記録です。

## はじめに
差圧を計測してあれこれ検出するデバイスを作ってみたくて、買ってきたセンサーで値を取得するところまでの記録となります。
I2Cでアドレスを指定せずにデータを読み書きした経験がなく、「アドレスは指定するもの」という思い込みで`read_byte` の存在を知らずステータスの読み出しではまりました。

## 環境

– Raspberry Pi 4 model B 4GB(Raspberry Pi OS arm64 Release:10 Codename:buster )
– Python: Python 3.9.2

## センサーの選定

趣味の工作なので手に入るならOKな感じで選びます。

###要求
| 項目 | 説明 |
|:-|:-|
|高感度 |数Paを検出したい |
|測定周波数 |40Hz |
|ポート |チューブ接続が可能 |
|電源電圧 |3.3Vで

元記事を表示

Python+OpencvでPathfinder:Kingmakerのポートレートを作成する

## 概要
Owlcat gamesからD&D派生のパスファインダーTRPGを元にしたCRPGが発売されている。

ゲームそのものは素晴らしい出来なのだが、いかんせんポートレートの数が少ない。
公開されてるModは趣味が偏ってるし、自前のポートレート作成を簡単にやりたいんじゃ。
ロードス島とかゴブスレ再現パーティーで冒険したい。

~~あとアンフェア難易度の癒しが欲しい~~

## 作業環境

ハード:
CPU : 11th Gen Intel(R) Core(TM) i7-11370H @ 3.30GHz 3.00 GHz
GPU : NVIDIA GeForce RTX 3070 Laptop (コードでは未使用)
RAM : 40.0GB

ソフト:
OS : windows10 64bit
pyenv : 2.64.8
python : 3.8.9
Visual Studio Code : 1.60.2

使用ライブラリ:
numpy : 1.21.2
opencv-python : 4.5.3.56

## ポートレートの仕様について

+ Fulllength, Me

元記事を表示

機械学習で地震データ分析 備忘録

#概要
気象庁の地震データについてEDAもどきを行う。
今回の結果を踏まえ、最大震度予測や時系列方向の予測なども次回行いたい。

– 実施時期: 2021年11月
– OS: Ubuntu20.04 LTS
– Python: Python3.8.10

##モチベーション
![Screenshot from 2021-11-07 15-36-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/205257/71490705-433d-a8c5-da66-f1ec23ad43e1.png)
最近アップされた下記投稿の地震データをplotlyに入れて日本列島を眺めながら、
「緯度経度を指定したら地震発生確率とか、その時の震度が予測できるんじゃね?」
と思ったので、やってみる。

https://qiita.com/T_programming/items/2dae8f40941ff3581036

##内容
前述の方が気象庁の全生データをcsvファイルにマージされていたので、それを使用させていただく。
ただ

元記事を表示

OTHERカテゴリの最新記事