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

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

【Python】map()・filter()関数の計算結果をprint()関数で出力する方法

# 初めに
pythonの勉強中にmap()関数の動作確認のため結果をprint()関数で結果を出力しようとしたら、map型のオブジェクトが出力されてしまい計算結果がわからなかったので、結果を出力する方法を調べました。filter()関数の場合も同様にfilter型オブジェクトになるので、同じ方法で出力可能です。

※間違っている情報等・不足している内容あればコメントいただけると幸いです。

# 環境
python: 3.10.4
OS: Windows 10 Home

# コード
以下の二つの方法のどちらかを使うことで、結果を出力できました

1. *(アスタリスク)を使ってアンパックする

2. list()を使ってリストに変換する

サンプルのコードは以下になります。

“`py
people = [(“Abel”, 20), (“Bob”, 21), (“Cait”, 16), (‘Dave’, 18), (‘Eva’, 19)]

def get_age(person):
return person[1]

# 方法1:*(アスタリスク)を使ってアンパ

元記事を表示

pythonで複数の値を返り値に持つときの型指定

# やりたいこと
以下のような関数があったとき、
返り値の型指定はどうすれば良いのか?

“`python
def test():
return 1, “a”, {3, 5}
“`

# 解決法
“`python
from typing import Tuple

def test() -> Tuple[int, str, set]:
return 1, “a”, {3, 5}
“`

# setの型までちゃんと指定したい場合
“`python
from typing import Tuple, Set

def test() -> Tuple[int, str, Set[int]]:
return 1, “a”, {3, 5}
“`

# 解説
python関数で複数の返り値がある場合、原則としてtupleとして返される。
“`python
from typing import Tuple, Union
def test() -> Tuple[Union[int, str], int, set]:
return “1”, 2, {1,64, 4}

元記事を表示

【Python】cp932 の 大容量ファイルをイイカンジに取り込みたい

# cp932 の 大容量ファイルをイイカンジに取り込みたい

## 動作環境

– Windows10 21H2
– メモリ4GB
– Python3.9

## 大容量ってどこまで?

1GBくらいまでならいけました。
なお、CSVをインポートしたSQLite3 も1GBくらいになりましたが
問題なく接続できました。

## ソースコード

“`python

import codecs
import pandas as pd
import sqlite3 as sq
import datetime

def db_migration(file_path,db_file_path):
try:
dt_now = datetime.datetime.now()
print(dt_now)
column_names = [“column{0}”.format(num) for num in range(255)]
column_data_type = {}

for column in column_names:
co

元記事を表示

matplotlib: エクセルからデータを読み取り描画する事例

# はじめに
久しぶりの投稿になります。
最近、エクセルからデータを読み取ってmatplotlibで作図する必要が生じたので、その再作成したPythonプログラムを残しておこうと思います。

# 作例
まず、作例として、元データとなるエクセルの表と作成したグラフを示します。

![Screen Shot 2022-07-18 at 8.51.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129300/f5d4adf1-f97d-4a49-27d0-bfb666574fa0.png)

![fig_freq.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129300/01fa14da-15fe-4e5c-32dc-26f8f28fb998.jpeg)

# プログラム
上に示したエクセルの表から、2カラム目(B列)、9カラム目(I列)、10カラム目(J列)の4行目から17行目までを読み取り、グラフにしています。
グラ

元記事を表示

日震学(星震学)データで遊んでみる

## 日震学とは
太陽内部を「波」を用いて調べる学問を「**日震学(helioseismology)**」といいます。地震波を使って地球内部の構造探査をするのと同様の手法で、まさに地震学(seismology)の太陽(helio-)版というわけです。

太陽は圧縮性の高いプラズマガスでできており、その内部では乱流熱対流によって励起された**音波**で満たされていると考えられます。このようにランダムに励起された音波が無数に重ね合わさった結果、おそらく全体としては定在波を形成していると思われます。これは音波の固有振動とも考えられ、その固有関数や固有振動数は太陽内部構造やパラメータによって決定されています。日震学では、逆に太陽表面の音波を観測し、その固有振動数を測ることで、(光学観測が不可能な)太陽内部情報を調べます。これは数学的には、**逆問題**を解くことに相当します。

日震学は既にこれまで数多くの成果を上げており(代表的なものは太陽内部の差動回転観測など)、その私見は近年星震学(asteroseismology)として一般の恒星に応用されており、星の音波モードを調べることで(従来の天

元記事を表示

某ウマゲームに影響されて競馬を始めたデータ分析初心者が競馬AI実装を試してみる話

# はじめに
こんにちは、初めまして。

突然ですが、ウマのゲームが大流行していますね。
ゲームに影響されて実際の競馬を始めてみた、という方も少なくないのではないでしょうか?

かく言う(とても影響されやすい)私もその一人です。
ちなみに、推しはサイレンススズカです :horse:

さておき、[**Aidemy Premium**](https://aidemy.net/grit/premium/?utm_source=google&utm_medium=cpc&utm_campaign=brand_brand_PPLP&gclid=Cj0KCQjwn4qWBhCvARIsAFNAMijretW1ztMFmfAdavzK4C3uOFt9rRXLw3Gqv2jcD8BKD6pKYGXgrIEaAr-XEALw_wcB)にて「データ分析コース」を3か月受講し、本記事はその最終成果物となります。
触れるなら興味ある分野がいいなということで、競馬のAI実装に挑戦してみました。

競馬もAI実装も初学者であり、拙い部分が多いですが、どうぞ最後までお付き合いください 🙂

:::n

元記事を表示

Docker + Python + Flask で本番環境とテスト環境のポート番号の振り分け方法

## やりたいこと
Dockerのコンテナとのポートフォワーディング(ポート番号指定)を「テスト環境(自端末)」と「本番環境(heroku)」でソースファイルを分ける事なく実現したい。

::: note info
①テスト環境ではホストOSの「8888」番ポートをコンテナの「8888」番ポートと紐づけたい。
②本番環境ではポート番号はheroku側で自動割当されるので、それを利用したい。
:::

ネット調査をしてくと「dockerfile」や「docker-compose.yml」を本番環境用とテスト環境用でわけるような手法がありました(パット見でよく読んでいませんが)が、これは避けたかった。

## 前提
– 本番環境:heroku
– テスト環境:ローカル端末(自分のPC)
– docker-compose.ymlを利用
– dockerfileを利用
– pythonでアプリは実装
– webserverはflaskを利用
::: note info
できるだけ最小の単位で実現したかったという思いから、「do

元記事を表示

Bokeh グラフ再利用時のRuntimeError:Models must be …に対応する

Bokehで一度描画したグラフを、違うレイアウトで再利用しようとするとRuntimeError: Models must be owned by only a single document, … というエラーがでます。

“`python
from bokeh.plotting import figure, show
from bokeh.layouts import gridplot

p = figure()
p.scatter([1, 2, 3], [4, 5, 6])

show(p)

show(gridplot([[p]])) # ここでエラー
“`

これは一度showしたところで、グラフにIDがつくためのようです。
このエラーを回避するためには、IDをリセットする必要があります。

“`python
from bokeh.plotting import figure, show
from bokeh.layouts import gridplot
from bokeh.models import Model

p = figure()
p.scatter(

元記事を表示

Inspector v2の脆弱性診断内容を「Slackベース」で管理する

# はじめに

ご覧いただきありがとうございます。

以前[Amazon Inspector Classic](https://qiita.com/gahirosan/items/7a95ccc86e1cec205859)について記事を書きました。

最近 現行バージョンであるInspector v2で検知を行ったところ、検知精度に差があることがわかり、「Classic⇒v2」への移行を行っているところです。

今回はSlack画面で、Inspector v2の脆弱性検知結果を管理できるようにしたいと思います。

# 概要

1. 事前準備
2. Slack ~ Lambda間の連携
3. Lambda ~ Slack間の連携
4. Lambda関数の作成
5. 動作確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697264/95a99621-0a5e-55c7-ffd3-3703d08dbdbe.png)

Slackのプライベートチャンネルでコマンドを実行すると、La

元記事を表示

Tkinterのボタン配置方法いろいろ(pack,grid,place)

## はじめに
仕事でTkinterを使う機会ができたので、少し勉強しています。
基礎的な内容ですが、ヴィジェットの配置方法が複数あってわかりづらかったので、ボタンを使っていろいろ試してまとめてみました。

## pack()メソッドを使ってボタンを配置する
メソッドの引数にどこから並べるのかを記載してボタンを設置します。
以下の例ではTOPが2個あるので、ボタン5の位置がボタン1の下に積みあがるような配置になっています。

“` python:in
import tkinter as tk

base = tk.Tk()
base.geometry(‘500×400’)
base.title(‘Button-set-test’)

button1 = tk.Button(base, text=’ボタン1′).pack(side=tk.TOP)
button2 = tk.Button(base, text=’ボタン2′).pack(side=tk.LEFT)
button3 = tk.Button(base, text=’ボタン3′).pack(side=tk.RIGHT)
butt

元記事を表示

ロリポップサーバーでFlaskを使おう!

## 目次
[概要](#概要)
[Helloワールドを出そう](#Helloワールドを出そう)

## 概要
__Flaskを使用してWebアプルを展開したいがVPS借りるほどのお金がない__

__VPSが使えないならロリポップサーバーを使えばいいじゃない__

ということで、メモと宣伝がてらここに記しておきます。
この記事ではとりあえずロリポップサーバー上でFlaskを用いて作ったページを表示することを目指します。
権限設定などはまたのでそのためのメモです。

__Flask上でSQL Archemyを使った検索システムを展開したい場合は以下のStep2以降もぜひぜひ参考にしてください!!__

https://gemma-knight.sygenmaki.com/entry/2022/07/17/ロリポップサーバーにFlaskで検索システムを作ろう

## Helloワールドを出そう

ディレクトリ構成は以下のようにします
“`

$ ll
-rwx—— 1 <ユーザー名> LolipopUser 190 6月 25 19:56 index.cgi
-rw—

元記事を表示

python selfについてまとめる

#### はじめに
この記事では、pythonのselfについてまとめていきます。
自分の中でselfへの理解が曖昧だったので、記事を書くことにしました。

まず、初めにクラスとインスタンスから説明していきます。

クラスとはオブジェクトの処理を一つにまとめたものです。**よく金型とか設計図みたいな表現がされます。** インスタンスはクラスの実体化を意味します。 **Aの設計図からAを作り出すことです。**
では、実際のPythonのソースコードでこの挙動を見ていきましょう。

“`python:sample.py
class Student:
def __init__(self, name):
self.name = name

def hello(self):
print(self.name)

exe = Student(“山田太郎”)
exe.hello()
“`

exe=Student(“山田太郎”)の部分でインスタンスを生成しています。

“`python:sample.py
def __init__(self, name):

元記事を表示

MySQL上のデータをDash+plotlyで可視化

# 初めに

AWSのデータベース(MySQL on RDS)に作成したテーブルの内容を、Pythonのデータ化しかフレームワークDashを使用してWeb上に表示します。

※ 今回はdashのコードが中心です。EC2やRDSのインスタンス作成、TeraTermでの接続等は省略します。

# 環境

### データベース
– RDSにMySQLインスタンスを生成(最小構成)
– インスタンスクラス:db.t3.micro
– ストレージ:20GiB
– マルチAZ:なし
– Serverバージョンは8.0.28だが、AWSがメンテナンスしているので変わるかも。

### サーバー
– EC2インスタンスを起動
– AMI:Ubuntu Server 20.04 LTS (HVM), SSD Volume Type
– インスタンスタイプ:t2.micro
– ストレージ:汎用SSD 8GB

# EC2からデータベースへの接続

RDSのデータベースは、デフォルトでdefault(という名前の)セキュリティグループが設定されているインスタンスからのみ接続を受け付けます。

このため、E

元記事を表示

【競プロ】テスト10倍速!AtCoder AHC向け【Python】自動テスト並列処理ツール

AtCoder AHC向けの、並列処理可能な自動テストツールをPythonで作成しましたので、共有します。筆者の環境で逐次テストと比較して、約10倍の速度向上を達成しました。

全ソースコードは[こちら](https://gist.github.com/toast-uz/087b0397134b23247f5e188fbf8eaca8)

# 1. AtCoder AHCとは

AtCoder Heuristic Contest (略称AHC)は、いわゆるマラソンコンテストです。マラソンコンテストは、正解というものを実時間で求める手段が基本無く、正解になるべく近づけるように自分の提出プログラムの得点をいかに上げていくか、が競われます。

# 2. ローカルテストツール

## 2.1. AHCの解答提出までのフロー

AHCの解答提出までのフローを図示します。水色部分が本ツールによる自動化範囲です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156600/b5a18db0-e80d

元記事を表示

カリキュラム強化学習でタクシー問題を解ける

# カリキュラム強化学習でタクシー問題を解ける

:::note info
Github(英語バージョン)
https://github.com/leolui2004/curriculum_taxi
:::

## 概要

過去の強化学習は、複数のステージに関する問題を解決するのに弱いです。Taxi-v3の例を使用すると、通常のactor-criticな方法はリプレイキューを使用しないと機能しません(この場合はDQNが機能します)。カリキュラム強化学習を導入することにより、モデルは段階ごとに目標を完了することを学習し、最後にタスク全体を完了することができます。また、トレーニングの効果に何らかの影響があるかどうかを確認するために、curiosityを追加しようとしました。

## Taxi-v3

https://github.com/openai/gym/blob/master/gym/envs/toy_text/taxi.py

ゲームはシンプルで、タクシーは5 x 5フィールドのランダムな位置から開始し、タクシーは乗客を迎えに行くたびに環境によってランダムに選択された位置に移動し、

元記事を表示

AWS + Python + LINEbotでゴミ出しリマインドをする【前編】

## はじめに

いつでもゴミ出していいマンションから引っ越して、「ゴミの日覚えられん!」となりLINEbotを作成しました。
【前編】では、LINE Messaging API・AWS Lambda・Amazon EventBridgeを使って、ゴミの日の前日21時にリマインドが送られてくる機能を実装します。
【後編】では、LINE Messaging API・AWS Lambda・API Gatewayを使って、ユーザーが「燃えるゴミ」と送ったら「【収集日】毎週火曜日と金曜日」と返するような機能を実装します。

## 使用技術

・Python3.9
・LINE Messaging API
・AWS Lambda
・Amazon EventBridge

## 簡単な機能の説明

1.EventBridgeが定期的にLambda関数を実行する
2.Lambda関数が実行され、現在日時がゴミの日の前日の場合はLINEbotからメッセージが届く

## 手順

### LINE公式アカウントの作成とLINE Messaging APIの設定

こちらの記事を参考にしました。料金の

元記事を表示

色んな高さの「ピー」音のファイルを沢山作る(Python3)

# きっかけ
 超基礎的な音感トレーニングアプリを作ってみたかった。でも、ピアノ音のファイルが見つからなかった(1オクターブ分くらいはあったけど)。
 困ったので自分で作りました。ピアノの音色ではなく「ピー」音ですが、音感トレーニング用なら悪くない?(素人なので分からない)

# 気づき
ピアノの鍵盤って、一つ隣の音との周波数の比はどこも同じらしいです。ということは **周波数だけ考えると鍵盤の白と黒って特に意味ない** ってことですよ。レ(白)→レ#(黒)と、ミ(白)->ファ(白)の周波数比は同じなんですよ。黒はちょっとしか上がらないんだと思ってました。びっくりですよね。

# サンプルコード
**ラ(440Hz)から始まり、ラ#、シ、ド、ド#・・・ラ(1760Hz)と2オクターブ上まで1ファイル ずつ作ります**
– もっと沢山作りたい場合は`np.arange`の25を増やせばok
– 出力先のディレクトリ(`OUTPUT_DIRECTORY`)は先に作っておかないとエラーになります。もしくは`OUTPUT_DIRECTORY = ‘./’`に変えちゃえば動きます
– impor

元記事を表示

YOLOv7のAPIを使用してみた

# 概要

※2022/7/17 記述

最新バージョンであるYOLOv7についての投稿です。
論文によると(まだざっと目を通した程度ですが)、推論速度も精度も以前のバージョンを上回っています。
この記事はYOLOv7のAPIを使用し、私好みに実装した例を記述しております。
現時点では、学習済みモデルを使用した推論のみです。
今後、モデルの学習も追記したいと思っておりますが、気分が乗り次第といったところです。

※謝辞
開発してくださった皆様、ありがとうございます。
Github : https://github.com/WongKinYiu/yolov7
Paper : https://arxiv.org/pdf/2207.02696.pdf

# 環境構築

“`bash
$ mkdir [任意のディレクトリ]
$ cd [任意のディレクトリ]
$ conda create -n yolov7 python=3.7
$ conda activate yolov7
$ conda install git
$ git clone https://github.com/WongKin

元記事を表示

コロナの感染者数のグラフを強化した話

今回は…

前に作った感染者グラフ表示ツール
https://qiita.com/kuroge/items/0894dc2858fc0e2c2862
を強化してみました

今回使うライブラリ
・pandas
・matplotlib
 インストールは
 “python3 -m pip install matplotlib“
  または
 “pip install matplotlib“

コードと収集する情報

前のコード
“`python:ビフォー
import pandas
from matplotlib import pyplot

hyouji = [“ALL”,”Hokkaido”,”Aomori”,”Iwate”,”Miyagi”,”Akita”,”Yamagata”,”Fukushima”,”Ibaraki”,”Tochigi”,”Gunma”,”Saitama”,”Chiba”,”Tokyo”,”Kanagawa”,”Niigata”,”Toyama”,”Ishikawa”,”Fukui”,”Yamanashi”,”Nagano”,”Gifu”,”S

元記事を表示

cookiecutterを使って自分専用のpythonプロジェクトテンプレートを作る

## 概要
cookiecutter(クッキーカッター)を使いpythonの自分専用のプロジェクトのひな型をつくり、そこからプロジェクトを作成する。

## インストール
“`shell
pip install cookiecutter
“`

## 利用
プロジェクトを作りたいフォルダで以下を実行する。
プロジェクト名などの質問が来るので答えていく

* フル版
“`shell
python -m cookiecutter gh:audreyfeldroy/cookiecutter-pypackage
“`

* 簡易版
“`shell
python -m cookiecutter gh:asweigart/cookiecutter-basicpythonproject
“`

## 自分専用のテンプレートを作りgithubにアップして使う
* githubに自分のアカウントがあることが前提とします。(hirayama-yuuichiの所はご自分のgithubの値で読み替えてください)
* まず、元となるテンプレートをforkする。
[asweigart/coo

元記事を表示

OTHERカテゴリの最新記事