Python関連のことを調べてみた

Python関連のことを調べてみた

PythonでJSONファイルを読み込みCSVデータを作成するツールを作ってみた

## 1.作成物
・各試験を行う上でサンプルデータを作成するにあたって便利かなと思い、ランダムで文字列や数値をCSVファイルで出力するツールを作成した。

・作成するCSVの各列についてはJSONファイルで指定しておいて、コマンド側ではファイルの読込先、出力先、行数の指定のみにした。
(今回、プライベートでのGitHubへの展開やQiita投稿が初めてなのでかなり手探りで作成した)

## 2.簡単な仕様
・下記の機能をまずは実装した。
・後々、名前、住所等の様々なタイプについてランダムで作成できるようにする。

### ■ 機能
①JSONファイルから各CSV列の要素の読み込み
②読み込んだ要素に沿って文字列または数値のランダム値を作成
③指定した行数分、JSONから読み取った要素のランダム値をカンマ区切りで作成

### ■ 操作イメージ
・コマンドラインで下記を設定
 ・読込先のJSONファイルパス
 ・作成先のCSVファイルパス
 ・作成の際の行数

### ■ JSONで指定する要素
 ・値の種類(文字列:1、数値:2)
 ・文字列は桁数を指定(要素1)
 ・数値

元記事を表示

【Python-unittest】テストコード書いてみた!!

# テストコードを書こう
今回の記事はPythonでテストコードを書いてみたのでそれを共有します。
Python言語標準のユニットテストフレームワークである`unittest`を使用します。

## テスト対象コード
今回のテスト対象コードは以下です。
“`python
def add(a, b):
if a == 1 and b == 3:
return 3
elif a == 3 and b == 3:
return 7
return a + b
“`

## テストコード(正常)

“`python
import unittest
from exsample import add

class AddTest(unittest.TestCase):
def test_get_sum_integers(self):
“””add関数のテストコード”””
actual = add(1, 2)

expected = 3
self.ass

元記事を表示

Dashを利用した動的なネットワーク図作成

# 目次
1.データ作成
2.networkxを利用したネットワーク図作成(html出力)
3.Dashを利用した動的ネットワーク図
3.1.ネットワークの作成
3.2.動的にするためのコード

### 必要なライブラリをインポート

“`python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import networkx as nx
from pyvis.network import Network
import random
import dash
import visdcc
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input,Output,State
“`

### 作成するに至った経緯
システム構築のお仕事をしており、テーブルの多さとバッチ処理の多さにより、どのテーブルとバッチ処理が結びついているのかがわからず、障

元記事を表示

作成記事

https://qiita.com/zutoasa/private/54034d3e826fad3d7163

元記事を表示

OpenCVでスプライトを半透明にする #1 ~おばけを出現させる~

# はじめに

あるアプリを作っている中で画像の加工が必要となった。
加工自体はそれほど苦労せずにできたが、あとになって考えるとそれは以前悩みに悩み、結局できなかった難題だった。
それがいつの間にかできるようになっていたとは。これは記録に残さねば。自分のために。

## 関連記事
[OpenCVで透過画像を扱う ~スプライトを舞わせる~](https://qiita.com/mo256man/items/f7524dd34718a01fb3df)
[OpenCVでスプライトを回転させる](https://qiita.com/mo256man/items/a32ddf5ddbaaf767d319)
[OpenCVでスプライトを回転させる #2 ~cv2.warpAffine()を使いこなす~](https://qiita.com/mo256man/items/9f4b93dcff0902cb2047)
[OpenCVでスプライトを回転させる #3 ~人任せにせず自分で計算せよ~](https://qiita.com/mo256man/items/d89c53a39c8e82b9c889)

元記事を表示

NetlifyでflaskのWebAPIを公開しようとすると404エラーになる

# 結論

Netlifyは静的サイトのホスティングサービスのため、API(のみ)の公開はできないらしい。(デプロイには成功するが404エラーになる)
Herokuにデプロイすることで解決した。

# 開発環境

– Mac
– Python 3.11.3(バージョンは任意)
– デプロイ時はサポートしているバージョンに合わせる
– Flask 3.0.2

# APIの作成

まずは簡単なflaskアプリを作成するところから始める

#### flaskのinstall

“`
pip install Flask
“`

#### 開発フォルダの作成

“`
mkdir my-test-api
cd my-test-api
“`

#### APIの作成

pythonファイルのファイル名は任意

“`python:main.py
from flask import Flask
import os

app = Flask(__name__)

@app.route(‘/’)
def hello_world():
return ‘Hello World!

元記事を表示

04.単体テスト入門(価値あるテストをつくるには)

# はじめに
この記事の内容は[『単体テストの考え方/使い方』(Vladimir Khorikov 著)](https://www.amazon.co.jp/%E5%8D%98%E4%BD%93%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E8%80%83%E3%81%88%E6%96%B9-%E4%BD%BF%E3%81%84%E6%96%B9-Vladimir-Khorikov-ebook/dp/B0BLTG8Z9K/ref=sr_1_1?crid=2UL0DTAU847M8&dib=eyJ2IjoiMSJ9.szFq2C4aOdDz4PEH_Zbenl-6teIVtP7d48eV0HCyp4b9Y64WkRrRDB10749eDaHipUJW6VZG7ez8XH2qZuzyVnHAo4txppqkgXbgCs-UiVaveADqWvzYPPkMHj7I1D05xxI73YyxabAjcDqljWXKTpaud9KThs8H9JAZHEkkndboMQ8ksDf–gkwjMhU3VuprwTVhAg9TPLgKMKpVjv0QxWbgQZAAR_pze

元記事を表示

Pythonで「日付(年/月/日)と時刻(時/分/秒)の値を取得する」の動作を確認してみた

# 概要

Pythonで「日付(年/月/日)と時刻(時/分/秒)の値を取得する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/python/date/index4.html

# 実装

以下のファイルを作成しました。
“`sample.py
import datetime
tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
dt = datetime.datetime.now(tokyo_tz)
print(dt)
print(“year : ” + str(dt.year))
print(“month : ” + str(dt.month))
print(“day : ” + str(dt.day))
print(“hour : ” + str(dt.hour))
print(“minute : ” + str(dt.minute))
print(“second : ” + str(dt.second))
print(“microsecond : “

元記事を表示

Streamlit Authenticator を使ってログイン画面を用意

# Streamlit でログイン画面

Streamlit でログイン画面が必要になったときのためのメモです。

## 実行環境
– OS
– macOS Sonoma 14.4.1
– Python 3.11.8
– [streamlit](https://streamlit.io/)
– [streamlit_authenticator](https://github.com/mkhorasani/Streamlit-Authenticator)

## 環境作成

“`shell
pip install streamlit
pip install streamlit-authenticator
“`

## 準備ファイル一覧

### ユーザ情報

ログインに使用するサンプルデータです。ログインには id と password を使います。

“`csv:user_info.csv
id,name,password,email
A12345,JohnDoe,johndoepass,johndoe@example.com
B23456,AliceSm

元記事を表示

「ポケモン レジェンズ Z-A」の新要素をAIで予測してみた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/6093ef88-a352-a33b-bca6-6d8c43d9237d.png)
 今回は、2024年2月27日の「Pokémon Day」で発表されたポケモンシリーズの最新作「ポケモン レジェンズ Z-A」(以降、Z-Aと略)の新要素を、AIの下位分野の機械学習で予測しましたので、その結果と方法について解説します。

0.目次
 1.予測を行う背景
 2.使用データ
 3.予測に伴う前提条件
 4.データの可視化
 5.データの加工
 6.特徴量の選択
 7.予測モデルの構築
 8.予測結果
 9.予測結果を受けての考察
 10.最後に

1.予測を行う背景
 今回の対象となるゲームタイトルに触れる前に、少しポケモンのゲームについておさらいをしておきます。ポケモンのゲームタイトルは大きく分けると3種類に分類できると思います。
![画像_ゲームタイトル種類.png](https://qiita-image-store.s3.

元記事を表示

WSL2環境下で構築したOpen-RMFで複数ロボットとエレベータの連携をシミュレーションできる環境で遊んでみる タスクステータス取得編

# 1. はじめに
 [WSL2環境下で構築したOpen-RMFで複数ロボットとエレベータの連携をシミュレーションできる環境で遊んでみる 軌跡プロット編](https://qiita.com/bebebefu/items/4f525708768c5be74bfd)の記事では、ロボットの現在地を時系列データとして取得し、それを3次元プロットしてロボットの軌跡を可視化することができました。
 ただ、それだけですとロボットが何をしていたかということがわかりませんので、シミュレーション結果の分析としては情報が足りません。そこで今回はロボットのタスクのステータスを取得して、保存するということに取り組みたいと思います。

# 2. 実行環境
– CPU: CORE i7 7th Gen
– メモリ: 32GB
– GPU: GeForce RTX 2070
– OSと構築した環境: Window11でWSL2にUbuntu22.04をインストールした環境
– ROS2: Humble
– Open-RMFの構築環境:[WSL2の環境下において、Traffic-Editorを使って複数ロボットとエレ

元記事を表示

ABC347 with Python(A~E)

ABC347のA~E問題をpythonで解説していきます。個人的にはC問題が難しかったです。

# A – Divisible
## 問題

正整数 $N,K$ 及び長さ $N$ の数列 $A=(A_1,A_2,\ldots,A_N)$ が与えられます。

$A$ に含まれる要素のうち、$K$ の倍数であるもののみを全て取り出し、それらを $K$ で割って出力してください。

https://atcoder.jp/contests/abc347/tasks/abc347_a
## 考察
問題文の通り実装するだけ。

## コード
“`python:A.py
N, K = map(int, input().split())
A = list(map(int, input().split()))
ans = []
for a in A:
if a % K == 0:
ans.append(a // K)
print(*ans)
“`
# B – Substring
## 問題

英小文字からなる文字列 $S$ が与えられます。$S$

元記事を表示

PythonコマンドでWindows Storeが立ち上がってしまう

pyenvで環境構築しようとした際、pythonコマンドでpython interpreterの代わりにwindows storeが立ち上がってしまい解決に時間がかかった。
結論としては、環境変数 Path の読み込み順を確認すべきということがわかった。

## whereコマンドでpython実行ファイルの場所を確認
“`$ where python“`
最初は以下のようになっている。WindowsAppsが一番最初に来ていることがわかる。
“`
C:\Users\….\AppData\Local\Microsoft\WindowsApps\python.exe
C:\Users\….\.pyenv\pyenv-win\shims\python
C:\Users\….\.pyenv\pyenv-win\shims\python.bat
“`
環境変数 Path で順序をpyenvが先に来るようにしてやれば良い。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3440

元記事を表示

画像データ分析チートシート

# 本稿の概要
画像データ分析を行う際、最初に実行・確認すべきコードをまとめたので、皆も利用可能なように記載する。

尚、今回はPythonを用いて実装し、実行例はNishikaのトレーニングコンペ『[[Training] 日本絵画に描かれた人物の顔分類に機械学習で挑戦!](https://competition.nishika.com/competitions/kaokore_pra/summary)』のデータを表示する。

尚、必要な箇所をコピーして自身の環境に合わせて改変していただきたい。
本稿のコードをそのまま実行する場合は事前準備を実施してほしい。

# 事前準備
実行環境はGoogle Drive(データ格納先)、Google Colabratoryを利用する。

### データダウンロードと格納、Colabでのマウント
まず『[[Training] 日本絵画に描かれた人物の顔分類に機械学習で挑戦!](https://competition.nishika.com/competitions/kaokore_pra/summary)』からデータをダウンロードし、自分の

元記事を表示

祝日取得サーバーを作ってみよう!

どもども。
今回のお題の通り、祝日を管理してくれる簡単なサーバーを作っていきます。
主に活用するサービスや言語は以下、
– python
– docker
– aws
## 目的
私が携わっているプロジェクトで祝日を取得する必要が出たこと、当初はサービスに組み込もうと思いましたが、それだと他のサービスで必要となった場合、汎用性がないと判断したため祝日を管理することを各サービス持つのは良くないと判断したため、祝日を管理取得するサーバー(レス)を構築しました。

## アーキテクチャ
全体の構成図です。GCPとAWSのクラウド上で完結しています。
![HOLIDAYSアーキテクチャ図.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/516317/ea261467-00b1-c34e-ecca-e3700617e734.png)

## こだわった点
なるべく、ローコスト、ローメンテナンスでもう2度と触らないようにした。

## 難しかった点
pythonでの処理はそこまで難しくありません。
どち

元記事を表示

【シン・プロセス指向】pythonを題材にDomain Modeling Made Functional【気分はstatic! 】

## 前置き
– [Domain Modeling Made Functional](https://fsharpforfunandprofit.com/books/#domain-modeling-made-functional) 的手法というのか、fDDD的なやつのおすすめ記事です
“`
# order-workflow
Order -> validateOrder() -> CorrectOrder -> payment() -> PiadOrder
“`
– ↑のように、↓の両者をシンプルに同期します
**ビジネスプロセス(つまりドメイン): in-process-outの連鎖**
              ↕︎
**プログラム: in-process-outの連鎖**(と素直に捉えることも出来る)
– 例としての注文ワークフロー ⇄ [それをpythonにエンコードしたもの](https://github.com/yodakeisuke/typed-functional-python/tree/main/app)
の2つの世界を行き来しつつ説明していけたらと思います

元記事を表示

Pythonでわかるトランジスタと制御工学

コンピューターで0と1を作るデジタル回路の中に使われているのは増幅器である。
増幅器は電子信号の増幅や制御、スイッチとして使われる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/abd07f9a-9758-e2f6-8707-67ce385e93a9.png)
増幅器の概念図
入力信号に増幅率をかけて出力信号になる。制御工学の考え方である。

ややこしいが、トランジスタもオペアンプもブラックボックス化された増幅器のアーキテクチャである。
今回はトランジスタに焦点を当てる。

その中でも2つのトランジスタを覚えてほしい。
1.FETトランジスタ
2.バイポーラトランジスタ

### 1.FETトランジスタ
(ゲートソース間の電圧を大きくすると、ドレインソース間の電圧が大きくなる)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/62f

元記事を表示

Docker で Selenium を動かす

# はじめに
ブラウザの自動操作を試してみたかったので、コンテナで環境を構築しました。
使用ブラウザは Chrome で Python の Selenium を採用しています。

### フォルダ構成
“`
.
├── app.py
├── docker-compose.yml
├── Dockerfile
└── requirements.txt
“`

### Dockerfile
“`
FROM python:3

RUN sh -c ‘echo “deb http://dl.google.com/linux/chrome/deb/ stable main” >> /etc/apt/sources.list.d/google.list’ && \
wget -q -O – https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add – && \
apt update && \
apt install google-chrome-stable -y

COPY app.py

元記事を表示

AWS Lambda でカスタムレイヤーを追加する方法

# 概要
– Lambdaで何かしらの処理を行いたい時、デフォルトだとインストールされていないパッケージを使う場合は、レイヤーをアタッチする必要がある
– Lambdaを使うとき、基本的に必要になる作業なので、自分のやり方を備忘として残す

# 手順
## 1. ローカルで必要なパッケージをまとめる
– レイヤーに含めたいパッケージを仮想環境にインストール
“`shell-session
python3 -m venv venv
source venv/bin/activate
pip install package-name
“`

– 「__pythonという名前__」のディレクトリにパッケージを詰めてzipファイルにする
– __pythonという名前である必要がある__(任意ではないことに注意)
– 仮想環境の具体的なpathはそのときのローカルの状況次第
“`shell-session
mkdir -p layer/python
cp -r venv/lib/python3.10/site-packages/* layer/python/
cd laye

元記事を表示

AtCoder初心者振り返りメモ ABC347

# ABC347の回
https://atcoder.jp/contests/abc347
# A-問題
https://atcoder.jp/contests/abc347/tasks/abc347_a

[問題文]
正整数 N,K 及び長さ N の数列A=(A1,A2,…,AN) が与えられます。
A に含まれる要素のうち、K の倍数であるもののみを全て取り出し、それらをK で割って出力してください。

[考察や感想]
リストの値 A[i] % K == 0 で判定し、Kの倍数の場合は
Kで割った商を出力しました。

““Python:A.py
N,K = map(int,input().split())
A = list(map(int, input().split()))

ans = []
for i in A:
# Kで割り切れる場合は、Kで割った商を ans へ格納する
if i % K == 0:
ans.append(i//K)

print(*ans)

““
# B-問題
https://atcoder.jp/cont

元記事を表示

OTHERカテゴリの最新記事