- 1. pandasをマスターしたい生活3日目
- 2. LocustとseleniumをDockerでこうちくする
- 3. Flask と Electron で作るデスクトップアプリ ③「FlaskとElectron構成の理由」
- 4. Seleniumで行う無限スクロールwebページのスクレイピング
- 5. 【Windows】初学者にもオススメのPython環境構築
- 6. 【E資格】各活性化関数の特徴と実装例
- 7. `apt upgrade`で”未解決の依存関係”というエラーが発生(Python3.9関連のパッケージ)
- 8. Python3エンジニア認定基礎模試試験3回目 -間違えた問題-
- 9. [Python, tkinter]画像ファイルをGUIで削除
- 10. 【画像検査】自作でAI外観検査システムを超速で作れた手順を解説【ラズパイ】
- 11. 【Pythonで実装】フェニック木(Binary Indexed Tree)が美しすぎて感動した話(部分和の計算と更新)
- 12. 【python-OpenCV】画像への文字入れの「位置指定」と「縁取り」を少しだけ便利にする関数作った
- 13. Latexの参考文献の順番を直すpythonプログラム
- 14. ツンデレ生成プログラム作った
- 15. Herokuでリダイレクトする方法(Python3・Flask)
- 16. Python3エンジニア認定基礎模試試験2回目 -間違えた問題-
- 17. ScrapyでImportError: cannot import name ‘HTTPClientFactory’が出る
- 18. サブプロセス Python編
- 19. Pythonからのdll読み込みでOSError: [WinError 126]が出た話
- 20. seleniumでいろいろAPIモドキ
pandasをマスターしたい生活3日目
## これまで
https://qiita.com/Hayaa6211/items/abbacfe935c9bd1fc78ehttps://qiita.com/Hayaa6211/items/4c3b847b7a9a57747d32
## よく使えるやつ
“`python
df.index #indexの表示
index = df.index.tolist() #indexの中身をリストにする
type(index)
>>> Listdf.columns #カラムの表示
columns = df.columns.tolist() #カラムの中身をリストにする
type(columns)
>>> List
“`### index,columns名の変更
“`df.rename(index={“index名”:”変更したいindex名”},columns={“columns名”:”変更したいcolumns名”})“`
“`python
df = pd.DataFrame({“A”
LocustとseleniumをDockerでこうちくする
## はじめに
研究の実験としてLocustを使った負荷試験を行ったのですが、WordPressの決済プラグインであるStripeがREST APIに対応していませんでした。そのためseleniumで直接クレジットカードの番号などを入力する必要があるました。
今回はseleniumとlocustをDockerで実行する方法を記述していきます!## 前提
– Dockerが入っていること!
– Docker Hubのアカウントを作っていること!## Dockerfile
“`Dockerfile
FROM locustio/locust@sha256:78148a8b40d012f29d7f274a72e347552e373d740275b7e2f455e70e11c4e9b1
USER rootRUN apt-get update
RUN apt-get install -y vim less psmisc
RUN sh -c ‘echo “deb http://dl.google.com/linux/chrome/deb/ stable main” >> /etc
Flask と Electron で作るデスクトップアプリ ③「FlaskとElectron構成の理由」
## はじめに
まだ、作品を作れていないので
なぜ、Flaskだけ、Electronだけを用いらないのかを紹介します。## なぜ Flask と Electron
以下の画像のように、プロセス間通信(ICP)を行う上でWebサーバーを使用してデスクトップGUIアプリケーションにバンドルすることで画面とサーバーが独立し操作でき、エンドポイントを変更する必要もなくなるので便利です。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1660691/0ceccf56-75e5-6d6d-c048-eb13ab461f83.png)
ここでWebサーバーはFlaskを、デスクトップGUIアプリケーションにElectronを選んだ理由を解説します。
### Webサーバー:Flask
Pythonを使うという前提で話します。
Webフレームワークで**WSGI**であることです。有名どころでいうと**Flask・bottle**が挙げられます。
**WSGI**とは、PythonでWebサ
Seleniumで行う無限スクロールwebページのスクレイピング
# 概要
スクロールしないと続きのコンテンツが表示されないサイトに対してスクレイピングを行う方法。
よく見る無限スクロール方法だと取得できない(効率が悪い)場合に直面したので記載する。# よくある無限スクロール方法
「Selenium 無限スクロール」とかでググるとたくさん出てくる
https://qiita.com/zeeksan/items/f26519cbd529f5b09cbf。
https://www.sukerou.com/2021/09/pythonselenium.html
画面を下までスクロールさせることで続きのコンテンツが表示されるので
大体が以下の流れでスクロールして表示されている情報を一括で取得している。
1. スクロール前のページの高さを取得
1. ページ最下部まで、徐々にスクロールしていく(サンプルでは80%)
1. 新しいコンテンツが読み込まれるのでスクロール後のページの高さを取得する
1. スクロール前後でページの高さに変化がなくなったら無限スクロール終了とみなしてループを抜ける“`Python
url = “https://xxxxxxxxx
【Windows】初学者にもオススメのPython環境構築
Python初学者のスシテンコです。
巷では「Pythonで機械学習を!」だとか「みんなプログラミングを覚えるべき!」だとか、そういったポジショントークがはびこっています。
そのため、「試しに学んでみようかな…」と悩んでいる方も多いかと思います。
かくいう私もその一人です。
しかしながら、Pythonを学ぶにあたって障壁となるのが「環境構築」です。
この環境構築ですが、ざっくり言うと「書いたコードを気軽に動かすために、パソコンに前提となるアプリや条件の記載されたコードやコマンドを用意する必要がある」のです。要は「Pythonでアレコレ試行錯誤して遊ぶまでがめんどくさい」のです。
ある調査では「プログラミングを学びたいけど、環境構築でつまづいて諦めた」という声が9割を越えたとの衝撃の結果もあります。
それぐらい環境構築はめんどくさいし、初学者がプログラミングを学ぶにあたっての障壁となりやすいのです。
ちなみに結論から申し上げますと、Pythonはこの環境構築をしくじると
何度もアプリのインストールをし直す
モジュールと呼ばれる機械学習が手軽
【E資格】各活性化関数の特徴と実装例
E資格に出題される活性化関数について、それぞれの関数の特徴についてまとめてみました。
## ステップ関数
ステップ関数は、入力値が0以上の場合は1、入力値が0未満の場合は0を出力する関数です。
この関数は、ニューラルネットワークが登場する前のパーセプトロンで採用されていた活性化関数ですが、現在の誤差逆伝播を行うネットワークにおいては後述のReLU関数に取って代わられています。
“`python
def step(x):
return 1.0 * (x >= 0.0)
“`## シグモイド関数
シグモイド関数は、入力値に対して0.0~1.0の値を出力する関数です。
ニューラルネットワークの活性化関数として用いられる場合は、厳密には「標準シグモイド関数」であり、本来のシグモイド関数はオイラー数eの指数に係数であるαが着きます。ニューラルネットワークの活性化関数として登場する場合、この係数αは1として定義され、記載が省略されます。
関数の微分値の最大値は0.25です。
“`python
def sigmoid(x):
return 1.0 / (1.
`apt upgrade`で”未解決の依存関係”というエラーが発生(Python3.9関連のパッケージ)
# 環境
* XUbuntu 18.04“`
$ uname -a
Linux example 4.18.0-16-generic #17~18.04.1-Ubuntu SMP Tue Feb 12 13:35:51 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux$ cat /etc/os-release
NAME=”Ubuntu”
VERSION=”18.04.6 LTS (Bionic Beaver)”
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME=”Ubuntu 18.04.6 LTS”
VERSION_ID=”18.04″
HOME_URL=”https://www.ubuntu.com/”
SUPPORT_URL=”https://help.ubuntu.com/”
BUG_REPORT_URL=”https://bugs.launchpad.net/ubuntu/”
PRIVACY_POLICY_URL=”https://www.ubuntu.com/legal/terms-and-policies/p
Python3エンジニア認定基礎模試試験3回目 -間違えた問題-
獲得点数 850/1000点
正答率: 85.0 % ( 34問 / 40問 正解 )
“`python
正規表現ツールを提供するモジュールを選択肢の中から選びなさい。A,re
“`“`python
以下のプログラムを実行した際の出力結果を選びなさい。
import json
x = {‘name’:’yamada’,’data’:[2,3,4]}
print(json.dumps(x))A,{“name”: “yamada”, “data”: [2, 3, 4]} #エンコードされて文字列になる
“`
“`python
以下のプログラムを実行した際に出力される例外の型を選びなさい
x = 10/0A,ZeroDivisionError
“`“`python
def dive_into_code(teacher, *mentor):#あふれた引数を受け取ってる
print(teacher)dive_into_code(‘Noro’, ‘Nakao’, ‘Miyaoka’)
A,Noro
“`“
[Python, tkinter]画像ファイルをGUIで削除
# Pythonのtkinterを用いて画像ファイルをGUIで削除
– 機械学習のデータセット作成の際など, データセットに相応しくない画像を削除するのに使用できます。## 実装
– **python**
– 使用ライブラリ
– **tkinter** : GUIのプログラムを作るのに使用
– **Pillow** : 画像を扱うのに使用## 使い方
1. [リポジトリ](https://github.com/yarakigit/rm_img_GUI.git)をクローン~~~ zsh
$ git clone https://github.com/yarakigit/rm_img_GUI.git
~~~1. ライブラリをインストール
~~~zsh
$ pip install -r requirements.txt
~~~
2. 実行
– **in_dir** : 削除したい画像があるディレクトリのフルパス
– **img_type** : 画像の種類
~~~zsh
$ python main
【画像検査】自作でAI外観検査システムを超速で作れた手順を解説【ラズパイ】
[過去記事](https://qiita.com/umapyoi/items/ddd45a47aa79ccbde28b)でも書きましたが、しばらく前に担当した案件で、ラズパイ(Raspberry Pi 4 Model B)でAI外観検査システムを3日で作りました。
かかった経費(人件費除く)は、3万円以下!(ちなみに、一般的な外観検査装置を購入すると数十万円~百万円以上かかります。)自作すれば予算の少ない小規模の工場でも外観検査を自動化できると思うので、私がAI外観検査システムを作成した時の手順を解説します!
(※今回、記事に掲載する写真を撮るために、自宅で改めて同じものを作ってしまいました!)![概要図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2535236/80c8aae8-48ec-4884-8486-bb33ad177f3c.png)
# 全体像
工場で生産する部品や製品などをカメラで撮影し、3パターン(良品、目視で再検査、欠陥品)に判定するシステムを作成します。
生産ラインに
【Pythonで実装】フェニック木(Binary Indexed Tree)が美しすぎて感動した話(部分和の計算と更新)
## はじめに
最近競プロ熱が再燃して精進している、いおと言います。
AtCoder緑色で、まだまだデータ構造やアルゴリズムを勉強中の身です。[典型90問](https://atcoder.jp/contests/typical90/tasks)で出会った「フェニック木」というデータ構造が美しすぎて感動したため、記事にすることにしました。
この美しさが少しでも伝わればと思います。
## フェニック木とは
>フェニック木 または Binary Indexed Tree (BIT) とは、部分和の計算と要素の更新の両方を効率的に行える木構造である。1994年に算術符号化を用いた圧縮アルゴリズムの計算を効率化するためにピーター・フェニックにより提案された木構造である
>*(WikiPediaより引用)*簡単にいうと、ある配列に対して部分和を効率的に求められる(計算量でいうと*O*(log n))上に、値の更新も効率的に行える木構造になります。
サイズNの配列で実現できる上に、実装がとっても簡単なのが魅力的!
例えば、`A[1,2,3,4,5,6,7,8]`という等差数列をB
【python-OpenCV】画像への文字入れの「位置指定」と「縁取り」を少しだけ便利にする関数作った
# はじめに
pythonで画像処理をする上で避けては通れないopenCV。
というかめちゃくちゃ便利なのでお世話になっているわけですが、
その中に`putText`という関数があります。要するに画像の中に文字入れをする関数で、画像とテキストを用意してあげれば誰でも簡単に文字入れが出来ます。
“`py:textInImage.py
import cv2
import numpy as npimg = cv2.imread(‘./neko.png’)
text = ‘happy!’
cv2.putText(img, text, (100,300), fontFace = cv2.FONT_HERSHEY_SIMPLEX, fontScale = 10.0, color = (0,0,255), thickness=5)
cv2.imwrite(‘nekoHappy.png’, img)
“`はっぴー!
Latexの参考文献の順番を直すpythonプログラムLatexのコードを入力として、参考文献の出てくる順番通りにbibitemを並べかえたものを出力します。
以下のリンクのDaveWさんの回答を基にしました。
https://tex.stackexchange.com/questions/17354/sort-thebibliography-by-citation-order/360587#360587?newreg=8fdd8ded0d3442b887449ab98c1c0ee6
“`python:sctex.py
import argparse#https://tex.stackexchange.com/questions/17354/sort-thebibliography-by-citation-order
#DaveW Mar 27, 2017 at 7:43parser = argparse.ArgumentParser(description=’latex citation sorter’)
parser.add_argument(‘filein’)args = parser.parse_args()
ツンデレ生成プログラム作った
ツンデレ生成プログラム作った
“`python
import random
td=[“ツン”,”デレ”]
txt=””
while “ツンツンデレデレ” not in txt:
txt += random.choice(td)
print(txt)
“`鳥になりたい
Herokuでリダイレクトする方法(Python3・Flask)
# TL;DR
– Herokuでは`.htaccess`によるリダイレクトが動作しなかった。
– `flask.redirect`を使ってゴリ押しする。# `.htaccess`について(不可)
[[Heroku]herokuでhttpでのアクセスをhttpsへリダイレクトさせる設定](http://kayakuguri.github.io/blog/2015/03/03/heroku-force-https/ “[heroku]herokuでhttpでのアクセスをhttpsへリダイレクトさせる設定 – KayaMemo”)など、複数のサイトを参考に以下のように作成・アップロードした。
“`.htaccess
# リダイレクトを設定する宣言
RewriteEngine on
# X-Forwarded-Protoが設定されているときに作動
RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
# HOST,URIを指定して転送
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L
Python3エンジニア認定基礎模試試験2回目 -間違えた問題-
獲得点数 725/1000点
正答率: 72.5 % ( 29問 / 40問 正解 )
“`python
仮想環境を生成、管理するのにつかわれているスクリプトを選択肢の中から選びなさい。A,pyvenv
“`“`python
Pythonの対話型インタプリタの中で存在するものを選択肢の中から選びなさい。A,IPython
“`
“`python
以下のプログラムを実行した際の出力結果を選びなさい
x = [“a”,”b”,”c”,”d”,”e”]
print(x[:-3])
#カンマを意識すると理解できる
A,[‘a’, ‘b’]
“`“`python
以下のプログラムをインタプリタにて実行した際の出力結果を選びなさい。
(1,3,5) < (1,2,3,4) A,FALSE ``` :::note info インフォメーション 1ステージの3-5より 1ステージの2-3-4は後であるか? と読み替えるとわかりやすい。 ::: ```python Pythonの関数について正しいものを選択肢から選びなさい。 A,
ScrapyでImportError: cannot import name ‘HTTPClientFactory’が出る
Scrapyをインストールして動かす際に少してこずった部分があったため共有しておきます。
# 環境
dockerコンテナ内で実行。
python-alpineを使用。
Scrapy 14.0# 問題
実行する際に、以下のようなエラーが出る。
“`
ImportError: cannot import name ‘HTTPClientFactory’
“`くわしく見てみると、Scrapyはtwistedという非同期処理ライブラリを使用しているらしい。
その中のインポートでエラーが発生している。該当箇所のドキュメントを見てみる。https://readthedocs.org/projects/twisted/
調べてみると、最新バージョンではHTTPCilentFactory クラスは消えていますね。
旧バージョンには存在しているためそちらを使います。# 解決策
pipで古いバージョンのtwistedを入れる。
自分は16で動きました。
サブプロセス Python編
# サブプロセス Python
PythonのSubprocessについてのまとめノートです。
尚、この記事のコードを試す場合、最低でもPython version 3.5以上の環境をお勧めします。一部3.7以上必要なものもあります。
## 動作環境
“`sh
name -srv
# Linux 5.4.0-121-generic #137-Ubuntu SMP Wed Jun 15 13:33:07 UTC 2022python –version
# Python 3.8.5“`
## Subprocessモジュールの概略
– **run()** : サブプロセスを起動させるための関数。
– 内部でPopenクラスのオブジェクトを生成する
– 最も基本的な使用方法は、コマンドを文字列のリストとしてrun()関数の引数に渡す [→コード例](#シンプルな呼び出し)
– 引数のうち、timeout, input, check, capture_output以外はそのままPopenクラスのコンストラクタに渡される
– class **Popen** : サ
Pythonからのdll読み込みでOSError: [WinError 126]が出た話
# 現象
ThorLab株式会社様が作られたdllライブラリを使って
電動フリップマウントを動かしていた時です.
Python3.10では問題なく動いていたのが,
Python3.6で実行すると`OSError: [WinError 126]`が起きました.# 解決策
大事なのは`os.chdir()`でした.
dllの入っているディレクトリに移動してから
`cdll.LoadLibrary`で読み込めば問題なく動きました.# 原因は?
わかる方いらっしゃったらご教示願います。
seleniumでいろいろAPIモドキ
seleniumを使って、httpリクエスト上げればいろいろ情報を拾ってくる機能を作って遊ぶ
かなり昔に書いたものですが、ほとんど修正無しで長期間動いているもの(=参照先Webページの仕様変更が少なく安定しているもの)を投稿。適当なwebサーバ(CGI有効化)を用意して、cgi-bin以下にseleniumを使うスクリプトを配置する。
“` python
#!/usr/bin/python3.9
# -*- coding: utf-8 -*-
import os, http.server, socketserverPORT = 80
os.chdir(‘/app’)class handler(http.server.CGIHTTPRequestHandler):
cgi_directories = [“/cgi-bin”]
httpd = socketserver.TCPServer((“0.0.0.0”, PORT), handler)
httpd.server_name = “webscraping”
httpd.server_port = PORT
htt