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

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

ボートレースの結果のファイルをスクレイピングでとってくる

# 目的
ボートレースの機械学習を行うため以下のリンクに載っている各種ダウンロードの**競争成績ダウンロード**と**番組表ダウンロード**の二つのデータを集めます。

https://www.boatrace.jp/owpc/pc/extra/data/download.html

ただこの二つをダウンロードするためには開催された`年、月、日付け`を**手動で選択する必要があり**、数年分のデータをダウンロードするとなるとかなり手間になってします。
そこでダウンロードする作業を**selenium**を使って自動化してみます。
またダウンロードするデータは`lzh`という圧縮ファイル形式になっているので解凍して別のフォルダの保存する作業も自動化します。

# 実装環境
* Windows10
* Anaconda
* Python=3.7.13
* VScode

# 環境構築
今回環境構築ではAnacondaをつかって行います。

“`:Anaconda Prompt
conda create -n selenium
“`
“`:Anaconda Prompt
conda

元記事を表示

B – Ringo’s Favorite Numbers AtCoder

## 問題
https://atcoder.jp/contests/abc100/tasks/abc100_b
## 回答

“`Python
d, n = map(int, input().split())

if n == 100:
print(101 * (100 ** d))
else:
print(n * (100 ** d))
“`

## ポイント

“`N * 100 ** D“`が答えになる。
Nの値で条件文を使い、Nが100のときには100で割り切れない101を使う。Nが100でなければNがそのまま使えるので、それぞれ100のD乗を掛ける。

問題がよくわからず。

元記事を表示

有限要素法の2次元アイソパラメトリック要素の形状関数による内挿を可視化した。

# はじめに

今回は、有限要素法のアイソパラメトリック要素の形状関数による内挿を可視化しました。

![bar3d.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/993303/92aa92bf-86dc-b8e2-fbe3-48676dd8f16f.gif)

![bar3d.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/993303/43c6f0d0-56f9-46dc-5999-bf1eddfee438.gif)

# 有限要素法について

前回、以下のように有限要素法の2次元アイソパラメトリック要素の形状関数による**座標変換**をPythonでアニメーションにしました。

![rasen.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/993303/133c7cb1-59aa-b419-5b5b-0c8d279dbed0

元記事を表示

GIF 画像データを作る

# GIF データ生成用クラス

bytearray の派生として [GIF 形式](https://qiita.com/ikiuo/items/69de0087e358a2ec6949)のデータを生成します。

“`python:mkgif.py
#!/usr/bin/env python3

class File(bytearray):
def __init__(self, version=b’89a’):
super().__init__()
self += b’GIF’ + version
self.logical_screen_width = 0
self.logical_screen_height = 0

@staticmethod
def fix_color(data):
color = []
for d in data:
if type(d) in (bytes, bytearray, list, tuple):

元記事を表示

pipに代わりpip2をインストール

最新のKali Linuxではpipがpython3用に使われてしまう。

そこで改めてpip2をインストールする。

“`
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py
“`

これでよし
![pips.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659122/95e4df5f-db9a-6f81-ba4c-cd255694db39.png)

元記事を表示

最適化① – ナンプレをortoolsで解いてみる

# はじめに
本稿では、PythonとGoogleのortoolsを用いて最適化を学んでいきます。
私のようなプログラマーが理解しやすいよう、用語も意図的にそちらへ寄せています。
同様にプログラムコードもなるべくそちらへ寄せています。
第一回の今回はナンプレをCP-SATで解きます。

# 環境
ローカル環境構築はそれだけで一本の記事になってしまいます。
本稿の本題ではないため、GoogleのColaboratoryを使用することで、
ローカル環境への構築などはすっ飛ばすことにします。

記事投稿段階では
**Python3.7**
**ortools9.3**
を使用しています。

# 1.ortoolsインストール
Colab上で以下を実行します。

“`
!pip install –upgrade –user ortools
“`
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517800/228f45f8-9bd2-153b-d41e-40ed82ae4273.png)

::

元記事を表示

画像2値化の前処理にCLAHEを使う

# 2値化は画像処理の基本だが・・・
オープンソース化が進み、高度な画像処理が誰でも簡単に試せるようになった昨今ですが、
2値化処理は画像処理の基本として必ずおさえておきたい技術です。

>画像の2値化処理とは、所定の閾値をもって画像を白と黒の2色に変換する処理です

– 2値化画像の入力を前提とする画像処理アルゴリズムが多くある
– 2値化画像を題材とした加工事例が豊富にある
– 通常画像の特定部位を2値化画像でマスキングすることで、領域を限定した加工もできる

思い通りの2値化画像を手にすれば、その後の画像加工のアイディアもグンと広がります。

しかし・・・ **「期待したような2値化が上手く出来ない!」**
これもまたよくあります(苦笑)

例えば、こんな画像で考えてみましょう。
![キャプチャ01.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626665/0bd09d0d-82a7-00b1-a55d-42493f53aebb.jpeg)
さて、このリング部分を2値化で捉えることを考えてみ

元記事を表示

About python class constant and scope

“`python
class Hoge:
PRIORITY = 1
def hoge(self,p=PRIORITY, priority=4): # not self.PRIORITY
print(self.PRIORITY,p,priority)

print(Hoge.PRIORITY) # could not use PRIORITY
r = Hoge()
r.priority = 7
r.hoge()
r.hoge(3)
r.hoge(3,5)
r.hoge(2)
print(Hoge.PRIORITY,r.priority) # could not use PRIORITY
“`

“`
1
1 1 4
1 3 4
1 3 5
1 2 4
1 7
“`

元記事を表示

numpyのobject型による参照の共有(アンチパターン)

numpyでデフォルトの値をlist型に設定していると、設定用の変数が書き換わってしまうケースがあるようです。

設定用の変数: default_dict (before {‘a’:[]} -> after {‘a’:[hoge]} )
# step1 データ作成

“`python
>>> import numpy as np
>>> import pandas as pd

>>> dtype = [(‘a’,’O’)]
>>> default_dict = {‘a’:[]}

>>> arr = np.array(tuple(default_dict.values()),dtype=dtype)
>>> pd.DataFrame(arr)
a
0 []
“`
# step2-1 データの変更
“`python
>>> arr[‘a’][0].append(‘hoge’)
>>> pd.DataFrame(arr)
a
0 [hoge]
“`

1行目に対して処理を実行したつもりでも、2行目も変更されてしまう

# step2-2
“`pyth

元記事を表示

回帰 lightGBM 教師あり学習 ソースコード

### pickleモジュールをload

pickleモジュールについては以下の記事がわかりやすいです!

https://qiita.com/hatt0519/items/f1f4c059c28cb1575a93

“`
import pandas as pd
import itertools
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
import codecs
import os
import pickle
from datetime import datetime
from datetime import timedelta
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
from sklearn impo

元記事を表示

[python]whileループ文

# while文

while 条件式:(コロン)
字下げ(pythonではスペース4文字が標準コーディングスタイル)したコード

元記事を表示

ファイル操作をpandasで効率化

## pandasとは
機械学習でも使われるデータの分析や操作に使われるPythonのライブラリです。
(公式サイト:[https://pandas.pydata.org/](https://pandas.pydata.org/))

## pandasで効率化
このpandasを使うことでExcelやCSVファイルを操作して色々なことができます。
実際に自分自身も業務でツールを作成して効率化していました。

この記事では色々な例をご紹介していきますので、ぜひ参考にしてみてください^^
※Pythonとpandasのインストールが完了していることが前提です。

### メンバーの勤怠表を作る例
“`python
import pandas as pd

“””
kintai_format.xlsx 勤怠表のフォーマット
member_info_list.xlsx メンバーの情報が入力されているファイル
“””

kintai_fmt_df = pd.read_excel(“kintai_format.xlsx”)
member_info_list_df = pd.read_excel

元記事を表示

[python] break,continue

# break文

whileループなどから抜け出す
breakとコードに記述すれば使える

# continue文

whileループなどで使う
ループ中でcontinueに到達するとループの先頭に戻り、ループ条件式を再度評価する
ループ動作で末尾に到達したときと同じ動作

元記事を表示

pandasのカラムをOne-Hotエンコーディングする関数の作成

ダミー変数(One-Hotエンコーディング)とは?実装コードを交えて徹底解説

ダミー変数とは、カテゴリカル(質的)データを0又は1で表現した変数のことです
機械学習の分野ではダミー変数を用いた前処理をOne-Hotエンコーディングと呼びます

Pandasを使うと、データの統計量を表示したり、グラフ化するなど、
データ分析(データサイエンス)や機械学習で必要となる作業を簡単に行うことができるようになります

データ分析のライブラリ!Pandasとは【初心者向け】|現役エンジニアが解説

pandasのカラムをOne-Hotエンコーディングする関数の作成しました!

名前は one_hot_pd としました!

“`
def one_hot_pd(Read_data,columns_name):
all_data_p1=Read_data
all_data_after_get_dummies_gender=pd.get_dummies(all_data_p1[columns_name])
all_data_after_ge

元記事を表示

python pandas EDAソースコード

pandas データをEDA解析をする 機会が増えたため

outputにEDA_dataフォルダ作成後
EDAデータを保存する関数を作成しました

indexNamesの部分がpandasの入る部分

“グループ化したいカラム名を入れてください”
の部分に pandasのカラム名を入れていただけると幸いです

“`
#EDA解析
def EDA_Analysis(indexNames):
#outputにEDA_dataフォルダ作成 makedirs で深い階層まで作成できる
data_dir_out=”./output/EDA_data”
if not os.path.exists(data_dir_out):
os.makedirs(data_dir_out)
print(“make_new”)
#EDA解析
data=indexNames
# カラム名でグループ化
class_group = data.groupby(“グループ化したいカラム名を入れてください”)
# カラムが

元記事を表示

【Linux】Python3.10.4 をソースからビルドする方法と、注意点いくつか【Python3.10】

# Python3.10.4 のソールビルド

Python3.10.4 をソースビルドしてみた!
意外とハマる部分が多かったのでメモしておきます。

ちなみに環境はRockyLinux8です

## 準備

“`
# dnf -y install make wget libffi-devel zlib-devel readline-devel
“`

↑まっさらな状態からだと他にもいるかも。
都度エラーコード見てインストールしてください。

:::note info
ちなみに`readline-devel`が個人的に重要で、
これを先にインストールしてからコンパイルしないと、
対話モードで履歴入力するときにキーボードの矢印キーが使えなくなる。
※下のほうにエラーとして書いたので参考に。
:::

## ソースDL

“`
# cd /usr/local/src

# wget https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tgz

# tar zxvf Python-3.10.4.tgz
“`

## confi

元記事を表示

【EC2】LambdaでEC2インスタンスを自動起動・停止

## EC2インスタンスを自動停止させたい
社内利用用のEC2インスタンスなど夜間や日中だけは停止させておきたいEC2インスタンスがあり、Lambdaスクリプトで実現させました

## EC2インスタンのタグ付け
EC2インスタンスにタグを付けて、そのタグを付けたインスタンスを自動で停止させるようにします。
タグはなんでもいいのですが
keyにAutoStop
valueにtrue
といれておきます

## Lambdaスクリプト
前提としてLambda関数にはEC2のstart・stopとdescribeの権限をIAMロールに付与する必要があります。

“`python
import boto3
region = ‘ap-northeast-1’
ec2 = boto3.client(‘ec2’, region_name=region)

def lambda_handler(event, context):

custom_filter = [{
‘Name’:’AutoStop’,
‘Values’: [‘true’]}]

元記事を表示

VSCodeでライブラリやモジュールがcould not be resolved(黄色波線)になったら

# 始めに
少し前までは[Anaconda](https://www.anaconda.com/)で仮想環境を作ったり,[Jupyter Notebook](https://jupyter.org/)でコーディングしたりという感じだったのですが,その後,友人に[VSCode](https://code.visualstudio.com/)を勧められました.使い始めは一瞬だけ戸惑いましたが,すぐに慣れることができ,さらにとても便利で,すんなり乗り換えることができました(友人には感謝).

暫く使っていると,タイトルのような状況に出くわすことがあります.何度か調べたり読んだりして,仕組みと解決法はぼんやり理解したのですが,同じメッセージが出る度に調べるのも...と感じたので備忘録として残します.

以下は,[こちらの記事](https://startlab.jp/learning-python/vscode-settings/)を参考に,同記事に則した内容です.

# 状況は?
開発中,
“`
import [library_name]
“`
などとして,ライブラリやパッケージ,あるい

元記事を表示

データフレームのHEX(16進数)カラムを自動判定、10進数に自動変換

## はじめに
分析対象データにHEX(16進数)データがある場合、基本統計量や傾向を確認するためには、10進数に変換しなければなりません。
できればPythonで、HEXだけのデータカラムを自動で判定し、10進数に自動変換させたいということで、実行してみました。

## 実行条件など
>- **Google colab**で実行

## まずはデータを準備

16進数⇒10進数変換を試行するデータを仮想、以下の通りデータフレームに格納しました。
aはint、cはfloat、b,fがHEX(16進数)データ、dはobject、eはint(ほぼ欠損データ)としています。
16進数⇒10進数変換したいカラムは b列,f列です。

“`Python:
df = pd.DataFrame({
‘a’: [5, 2, 3, 100, 110, 200],
‘b’: [‘abc’, ‘0C3A’, ‘9F07D2′,’ffff’,’ffff’,’7b2′],
‘c’: [19.3, 22.7, 99.5, 200.2, 300.5, 1200.3],
‘d’: [‘A’,

元記事を表示

[備忘録] アノテーションツール labelImgの環境構築

## メニュー
* [はじめに](#はじめに)
* [Pythonの環境構築](#pythonの環境構築)
* [仮想環境の作成](#仮想環境の作成)
* [labelImgの導入](#labelimgの導入)


## はじめに
– 教師あり学習では、画像データにラベルを付与することで、初めて意味のある学習データになります。
– 本マニュアルでは、ラベリングツール“`labelImg“` (Pythonのプログラム)によるラベリング手順を紹介します。

## Pythonの環境構築
### “`pyenv“`の導入 (shellがzshの場合)
– pyenvはPythonの複数のバージョンを簡単に切り替えることができます。
1. GitHubのリポジトリをクローン ([https://github.com/pyenv/pyenv](https://github.com/pyenv/pyenv))
~~~zsh
$ git clone https://github.com/pyenv/pyenv
~~~
1. “`~/.zprofile“`、“`

元記事を表示

OTHERカテゴリの最新記事