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

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

Python コードの書き方

#はじめに
動くコードは書けるが、基礎となる部分が曖昧だったのでまとめることにしました。
Python 3.8.2

#ステートメントの区切り
ステートメントとは命令文の構成単位

Pythonのステートメントの区切りは、セミコロン「;」もしくは改行

“`python:how_to_code.py:how_to_code.py
a = 10; b =20; c = a + b
print(c)

a = 30
b =40
c = a + b
print(c)
“`

#ステートメントの改行
折り返す際は「\」を入力

“`python:how_to_code.py
a = 1 + 2 + 3 + 4 + 5 \
+ 6 + 7 + 8 + 9 + 10
print(a)
“`

#コメントアウトの書き方
すでにコメントアウトしてきたが、「#」を書くとコメントアウトすることができる
複数行コメントアウトする際は以下のように記載する

“`python:how_to_code.py
#一行のコメントアウト

“””
複数行の
コメントアウトの
書き方
“””
“`

元記事を表示

ETL処理を用いて、デイトレードの取引データを加工→蓄積する流れのまとめ

# 概要
データ分析のインターンのおかげでETL処理を組むことができるようになりました。
今回はこの技術を用いて、為替のデイトレードで得た取引履歴の、データ加工と蓄積の流れを構築したいと思います。

# できるようになること
– AWSでETL処理が書けるようになる
– データストレージの使い方が少しわかる

# 補足
今回はGlueやLambdaを用いない、データ分析の半自動化を目指しています。とはいえ、スクリプトさえできてしまえば自動化も簡単なので別記事でその方法を書こうと思います。

# 利用サービス
– AWS S3
– Amazon SageMaker
– HighLow Australia (証券会社)

# ETL処理フロー
データフローの全体像はこちらです。
![90c4106b14b7c44cf7695b5985ccf523[1].png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/845778/f11c7ca9-5dfb-b660-ae8f-2ca673ce436d.png)

S3のD

元記事を表示

【図解解説】JOI2021-2022 一次予選 第2回 問題3 次の文字

## 図解解説シリーズ
競技プログラミングを始めたばかりでAtCoderの解説やJOIの解説ではいまいちピンと来ない…という人向けに、図解を用いて解説を行います。

## 問題文
### 情報オリンピック日本委員会に掲載されている問題

https://www.ioi-jp.org/joi/2021/2022-yo1/2022-yo1b-t3.html

### AtCoderに掲載されている問題
入出力など実際に確認して自分の作成したプログラムを採点することができます。

https://atcoder.jp/contests/joi2022yo1b/tasks/joi2022_yo1b_c

## 図解解説
今年度の一次予選のC問題は、以下の4つのスキルを確認する問題になっています。
1.入力・出力を正しく利用できる
2.算術演算子を正しく利用できる
3.条件分岐(if)を正しく利用できる
4.繰り返し処理を正しく利用できる

問題文を整理するために、具体的な数字を用いて、図示して考えてみます。
![スライド1.PNG](https://qiita-image-store.s3.a

元記事を表示

Pythonのオブジェクトへの参照とガベージコレクション

# 概要
CPythonの実装を読んでいて、Pythonのオブジェクト(内部で`PyObject`と言われるやつ)への参照の数を管理する場面が多いことに気付きました。なぜそのようなことをするのか気になったので、記事にまとめてみました。

# なぜPythonのオブジェクトは参照の数を持つのか
Pythonのガベージコレクションは、`①オブジェクトの参照のカウントに基づいたもの`と、`②世代管理に基づいたもの`、の二種類があります。
前者の方式を実現するために、Pythonのオブジェクトはすべて、自身が他のいくつの変数から参照されているかと言う情報を保持しています。

ちなみにこの参照数の情報は、Pythonの`sys`モジュールの`getrefcount`という関数で見ることができます。

“`python
import sys

test_val = {“test”:”test”} # 変数の作成
print(sys.getrefcount(test_val)) # 2 -> 変数自身と、getrefcount関数からの参照

copy_val = test_val

元記事を表示

pythonでファイルの中からランダムで一つの音源をとってくるプログラム

#目的と準備
ランダムでひとつのmp3を
とってきてほしい
という願望がでてきたため

準備として
音源をまとめたディレクトリを作っておく
今回はjapanese50onという
五十音をいれたものを使った

#音声ファイルを一つとってくる
以下のサイトを参照した

https://www.higashisalary.com/entry/python-random-choice

“`
import glob
import os
import random
list=glob.glob(‘japanese50on/*.mp3’)
data=random.choice(list)
“`

このコードではjapanese50onのなかにある
mp3のファイルから一つをランダムに
とりだすということを行っています
dataのなかには相対パスで書かれた
ランダムなmp3の名前が入っています

#音声ファイルをコピーする

以下のサイトを参照した

Pythonにおけるcopyfileの利用方法について現役エンジニアが解説【初心者向け】

“`
import shutil
shutil.copyfile

元記事を表示

patchworklibを使って複数のplotを組み合わせる

# patchworklib
この記事は、[matplotlibのsubplotはもうやめたい その2](https://qiita.com/ponnhide/items/62b7e062e79b0eca6daa)の続きである。
最近、matplotlibで作ったplotを簡単に並べるためのツール[patchworklib](https://github.com/ponnhide/patchworklib)を公開した。ここではその利用法を簡単に解説する。
正直なところ、自分がmatplotlibのplotを並べるために使っていた自分用ツールを公開しているだけなので、他の人にとって使いどころがあるのかについては、あまり自信がない。。。しかし、subplotで時間を浪費している方々の役に立つのではないかと思う。  
ツールを作った経緯についてはは前の記事を参考にしてほしい。

# インストール
installは
`git clone https://github.com/ponnhide/patchworklib.git`
でgithubのレポジトリをクローンしてもらって、
`python

元記事を表示

pythonでひとつ前のtxtファイルのデータを読み取ってlistの次の要素をtxtファイルに出力してくれるプログラム

#前回

前回こういうものを作りました

https://qiita.com/akechiakechi/items/86316b7d1b872f3b5a47

#今回やること
今回は前回のプログラムを少し変えて
ひとつ前のtxtファイルのデータを読み取って
listの次の要素をtxtファイルに出力してくれるプログラムをつくります

#例えば
letter.txtの中に「あ」とだけ書かれていて
このプログラムを実行すると
50音順で次の「い」がletter.txtに上書きされる
というものです

#テキストファイルを読み込む
以下のサイトを参考にしました

https://atmarkit.itmedia.co.jp/ait/articles/2104/13/news024.html

まずコードをのせます

“`py
f = open(‘letter.txt’)
letter = f.read()
f.close()
“`
これをすることによって,letter.txtの文字を読み取って
letterの中に文字列として入れてくれます

#50音の何番目なのかを知る
以下のサイト

元記事を表示

Pythonで人検知の通知機能プログラムを作成してみる

## はじめに
使っていないラズパイ(3b+)が家にあったため、これを使って何か役立つIoT機器でも作ってみようとかと思い、『ラズパイを使って通知機能付き防犯カメラ』を作成してみようと試みたが、ラズパイへの`OpenCV`のインストールで手こずっている。
インストール不具合は現在調査中なのだが、ラズパイはすぐにCPUが熱くなってしまい、インストールのし直しなどに時間がかかりそうなので、先に`OpenCV`と`YOLOv5`を使い通知機能のプログラムを別のPCで作成してみることにした。

## 実施環境
■ OS
 Windows 10 Pro 

■ 各種SW&パッケージのバージョン(今回インストールするもの含む)
 python 3.9.5
 pip 21.3.1
 opencv-python 4.5.4.60
 YOLOv5
 line-bot-sdk 2.0.1 ※通知はLINEより行うため
 
■ その他
 Webカメラ

## メモ内容

###① まずは環境準備
色々なパッケージが必要となりローカル環境が散らかりそうだったため、自分は仮想環境上で環境を構築している。(手順

元記事を表示

Object Detection

TORCHVISION.MODELSに用意されている RetinaNet を使用して推論を行います。
今回は物体検出の大枠の理解をゴールとします。

また Object Detection を行い、画像内に写っている車の数をカウントしたいと思います。object の数のカウントに加えて Image Classification モデルを組み合わせると、検知した車の車種を識別できたりもします。
Object Detection の目的は検知するだけでなくその後の活用方法も様々です。

“`Python
import torch
import torchvision
!pip install -q pytorch_lightning
import pytorch_lightning as pl
“`
##データの準備
今回は画像1枚だけ推論を行います。
![car.jpg.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2034987/20efae18-22b7-cecd-a4f4-8ff5099e76

元記事を表示

pythonでランダムで50音の一文字をテキストファイルに出力してくれるプログラムを作ろう!!

#目的
タイトルに書いた通りの
プログラムが必要になったからです
最後の項目にいくと
コピーだけすればいいようになっているので
すぐに使いたい方は
最後だけ見てくれればいいと思います

#ファイルの出力方法
以下のサイトを参照しました

https://work-life-enj.com/python-write-text-csv/

以下のようにすると
同じディレクト内に
out.txtとしてssssと書いてあるテキストファイルが作られます
aの中身を別の文字にすると別の文字がout.txtに上書きされます

“`py
f = open(‘out.txt’, ‘w’)
a = “ssss”
f.write(a)
f.close()
“`

#リスト内からランダムに一つを選ぶ
以下のサイトを参照しました

https://www.delftstack.com/ja/howto/python/python-randomly-select-from-list/

https://www.delftstack.com/ja/howto/python/how-to-convert-a

元記事を表示

PlayWrightを使ってみたが、Codegenで生成されたプログラムのままでは動かないことがあることが分かりました。

「Playwright」というツールが、「Selenium」や「puppeteer」と比べてもだいぶ使い勝手が良さそうなので、使ってみました。

インストール方法や簡単な利用方法については、↓これらの記事がとても参考になりますので、是非見てください。

https://qiita.com/mainy/items/3a9de19f440991f67f34

https://qiita.com/KWS_0901/items/e5f7d88f14d479746698

私も、上記の記事を参考にWindows10のマシンに環境構築しまして、実行してみました。

私の環境はこんな感じです。
・OS:Windows 10
・Python 3.10
・Playwright 1.17.0-rc1

↓のコマンドでAmazonさんのページで試してみました。

“`
>playwright codegen https://www.amazon.co.jp/ -o test.py
“`

普通に1つのブラウザ上でテキスト入力させたり、ボタンやリンクのクリックなどの動作については、この「codegen」

元記事を表示

PythonのGILを取り除く試み

こんな記事を見つけたので気になって調べてみました。

https://www.infoworld.com/article/3637073/python-stands-to-lose-its-gil-and-gain-a-lot-of-speed.html

この記事は、Pythonの開発者専用のメーリングリストに、Sam GrossというFacebookの開発者が投稿した、GILを外したCPythonの実装(nogil)の提案について書かれています。

https://mail.python.org/archives/list/python-dev@python.org/thread/ABR2L6BENNA6UPSPKV474HCS4LWT26GY/

彼は、Global interpreter lock (GIL)を外したCPythonの概念実証のための実装とメモを投稿しました。メモのリンクはこちらです。

https://docs.google.com/document/d/18CXhDb1ygxg-YXNBJNzfzZsDFosB5e6BfnXLlejd9l0/edit

##

元記事を表示

Pandasで列を抜き出すときはreindexを使った方がいいと思った話

# 要約
事前に列の存在をチェックしないでPandasのDataFrameから列を抜き出すのはやめよう.
DataFrameから列を抜き出す際は,

– 事前に列の存在を確認してから抜き出す
– reindex関数を使って抜き出す

のどちらかにしましょう.

# よくあるサンプル

“`Python
import numpy as np
import pandas as pd

df = pd.DataFrame(
np.arange(12).reshape(3, 4),
index=[“X”, “Y”, “Z”],
columns=[“A”, “B”, “C”, “D”]
)

print(df)
# A B C D
# X 0 1 2 3
# Y 4 5 6 7
# Z 8 9 10 11

# AとB列だけ抜き出す
df_AB = df[[“A”, “B”]]

print(df_AB)
# A B
# X 0 1
# Y 4 5
# Z 8 9

元記事を表示

【PyTorch】AttributeError: ‘GeneralizedRCNNTransform’ object has no attribute ‘fixed_size’

# TL;DR
GPU環境で学習したモデルを`torch.save`で保存し、CPU環境で`torch.load`で読み出し推定を行うとエラーが発生する場合がる。

**解決方法**
`torch.load`ではなく各種学習モデルのクラスからインスタンス化して`load_state_dict`で学習したパラメータを読み出す。

# 詳細

[[PyTorch] TORCHVISION OBJECT DETECTION FINETUNING TUTORIAL](https://pytorch.org/tutorials/intermediate/torchvision_tutorial.html)を基に物体検出を試す

## 環境

CPU側

– anaconda3 Python 3.8.10
– pytorch 1.10.0-py3.8_cpu_0
– torchvision 0.11.1-py38_cpu

## 原因

`torch.save, torch.load`でモデルを保存・読み込みすると、`__init__()`経由でインスタンス化されず`None`のクラスメンバが

元記事を表示

WindowsでTensorflowがGPUを認識しないとき

## 前提
Windowsにて、pipで入れたtensorflowがGPUを認識してくれない。
CUDA、CUDNNはダウンロードしてpathを通してある状態。

## 原因
Windows Storeから入手したPythonでは、TensorflowがGPUを上手く認識してくれない模様。
[重要] しかもWindowsが勝手に設定したエイリアスで、pythonと打つとStore版を使うようにしてくるので、それをoffにする必要あり。

## 解決法
1. 「アプリと機能」から「アプリ実行エイリアス」を開く。
画像の真ん中です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212534/115164e6-29f4-f5fe-5804-39a70213d875.png)

2. PythonとPython3がMicrosoft Store版のPythonに紐づけられているので、オフにする。
画像の状態にしてください。
![image.png](https://qiita-image-st

元記事を表示

作成したスクレイピングツールをHTTPで呼び出したかった

### 前回までのあらすじ
[前回の記事](https://qiita.com/zeeksan/items/934f3dd62c894520ef96)
メルカリのスクレイピングツールはできたけど、
ローカル環境でコマンド実行するだけなのはちょっともったいない。
なので今回は、対象URLをURLパラメータとして付与して、
ブラウザからWebサーバ(Apache)にリクエストを投げたら
実行結果が表示されるように改修とか環境構築とかやってみたよ。

### やらなきゃいけないこと

1. サーバの用意
– 初期設定
– firewalld、SELinuxの無効化

1. 諸々インストール
– Python3
– google-chrome
– Apache(httpd)

1. 資材配置
– httpd.confの確認、必要に応じて修正
– 作成資材を規定の場所に配置

1. 実行結果確認
– ツール修正
– ローカルPCから接続確認
※セキュリティ的な点は全く考えてないので、必要に応じて対策してね。

#### 1.環境構築

元記事を表示

Pythonデータ分析試験に合格したので勉強方法を残しておく

# はじめに

[Pythonエンジニア認定基礎試験に合格した](https://qiita.com/h-ueno2/items/a461765bac4f04080f10)のでデータ分析試験も受けてみました。

# Python 3 データ分析試験

初めに簡単な試験概要を公式サイトより引用します。

https://www.pythonic-exam.com/exam/analyist

>試験名称:Python 3 エンジニア認定データ分析試験
(英名:Python 3 Certified Data Analyst Examination)
資格名:Python3 エンジニア認定データ分析試験合格者
(英名:Python 3 Data Analyst Certification)
概要:Pythonを使ったデータ分析の基礎や方法を問う試験
問題数:40問(すべて選択問題)
合格ライン:正答率70%

試験はCBT方式です。
試験時間は60分ありますが、20分程度で終わりました。
といっても早く解いたから何かボーナスがあるわけじゃないので、見直し等じっくり時間をかけても良いと思いま

元記事を表示

リクルートからA3RTのドメイン変更メールが来たのでline-botを修正する

#はじめに
今年の8月末にa3rtからメールが、、

“`
A3RTご利用中の皆様

いつもご利用いただきありがとうございます。
引き続き旧ドメインを利用中の皆様に改めてのお知らせとなります。

1. ドメイン変更に伴うアプリ修正依頼
弊社組織変更に伴い、ドメインが変更となります。
 旧ドメイン)a3rt.recruit-tech.co.jp
 新ドメイン)a3rt.recruit.co.jp
2021年9月30日までは併用期間として両方使える状態ですが、
2021年10月1日以降、旧ドメインは廃止、新ドメインのみ利用可能となる予定です。
お手数ですが、ブックマーク、APIコール時のドメイン変更対応をお願いします。
なお、Image Influence, SQL Suggestの2サービスについては、旧ドメインのみ対応とし、新ドメインでの提供はいたしません。

2. Image Influence, SQL Suggest機能提供終了
上記機能は、2021年9月30日の旧ドメイン停止をもって提供を終了させていただきます。
以上、2点となります。

サービス側都合での修正依頼・提供終了

元記事を表示

推しからおはようメッセージを受け取るBOTを作ったよ

#はじめに
python初学者です。
楽しくpythonを学習できる方法はないかと模索していると、bot開発が楽しそうなので試してみました。
どうせなら推しから毎朝、自動メッセージが送信されるように作成してみました!

#実行環境
python : 3.8
github actions

今回の環境は、自前でサーバを用意することなくサーバレスに実行できる構成です。

#ファイル
* info.json
* main.py

この2つだけ!

#ソースコード
“`python:main.py
import json
from linebot import LineBotApi
from linebot.models import TextSendMessage

file = open(‘info.json’, ‘r’)
info = json.load(file)

CHANNEL_ACCESS_TOKEN = info[‘CHANNEL_ACCESS_TOKEN’]
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)

def main(

元記事を表示

DeepL APIを利用した翻訳ハンズオン

# はじめに
前回に引き続き『APIって、どんな動きをしているの?』と構築を交えながらAPIについて学習していきたいと思いたち自分自身の2番煎じ投稿です。下記参考資料を読みながら手を動かしてAPIを構築しました

# 参考資料
参考リンクにはAPIのHTTPリクエスト・レスポンスなどの記述の方法などの説明があり、API分からなかったコチラを読めばOKかと
どちらもハンズオンを進める中で大変理解が捗りました

[__APIの仕組みが分かる・使いこなせる人材になれる記事(Pythonコード付き)__](https://qiita.com/Saku731/items/6ae290f72e98723f165d)
[__HTTPとPOSTとGET__](https://qiita.com/Sekky0905/items/dff3d0da059d6f5bfabf)
[__YahooAPIを利用した天気予報ハンズオン__](
https://qiita.com/i3no29/items/304328c641ab0dc8f041)

# 構成図
![スクリーンショット 2021-11-27 16.2

元記事を表示

OTHERカテゴリの最新記事