Python3関連のことを調べてみた2021年09月20日

Python3関連のことを調べてみた2021年09月20日

【備忘録】Yahoo!ローカルサーチAPIで牛丼チェーン店の位置情報を取得してdeck.glで表示してみました

# はじめに
– [Yahoo!ローカルサーチAPI](https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/localsearch.html)で牛丼チェーン店の位置情報を取得して[deck.gl](https://deck.gl/)で表示してみました。
– Yahoo!ローカルサーチAPIでは牛丼店で絞り込み、位置情報を取得しています。
– 取得した牛丼店の位置情報はエクセル等で「すき家」「吉野家」「松屋」で抽出して、牛丼チェーン店の位置情報をdeck.glで表示しています。

# アウトプットイメージ

元記事を表示

Pythonで「年」と「月」の情報を抽出する。

## やりたいこと
2021-04-01のような日付の表記から「年」や「月」の情報を抽出する

## 環境
Google Colaboratoryを使用しました。

## 使用した関数
・pandas.Series.apply()
 →Pandasの各要素に関数を適用する

・str.split()
 →Pandasの文字列を区切り文字で分割

## コード

###Step1:DataFrameの作成

“`python:
#日付型のカラムの作成
import pandas as pd

list1=[“2021-04-01″,”2021-04-01″,”2021-04-01”]
columns1=[“日付”]
df=pd.DataFrame(data=list1,columns=columns1)
df
“`

###Step2:-(ハイフン)で日付を分割し、「年」と「月」のカラムに代入する。
“`python:
df[‘年’]= df[‘日付’].apply(lambda x: x.split(‘-‘)[0])
df[‘月’]= df[‘日付’].apply(lambda

元記事を表示

競技プログラミング時に便利なスニペット(python3版)

とあるIT会社の2年目社員です。
入社して一年半が過ぎ、仕事にも慣れてきたため自己学習に時間と体力を割く余裕が出てきました。
最近[Paiza](https://paiza.jp/challenges)にてアルゴリズムの勉強を行っているのですが、
そこで思ったのですが、どうやら競技プログラミングの問題には

* アイディアレベルで処理の流れを考える力
* 上記を実際にプログラムに落とし込む力

の二つが必要なようです。
特に後者の部分は、競技中にここで詰まって時間がかかってしまうのはもったいないと思われます。
そこで今回は、競技プログラミング時に便利なコードをまとめてみました。
言語についてはpython3を対象としています。

#入力
###一行の入力全体を文字列として受け取る
input

“`python
# helloを標準入力にて渡す
a = input()
print(a) # helloと出力される
“`

### スペース区切りの複数入力の受け取り(受け取り変数を分ける)
split(区切り文字)

“`python
# hello worldを標準入力にて渡す

元記事を表示

[Python3] 初心者の初心者による「ユーザー定義関数」解説

#ユーザー定義関数とは
繰り返し使用する処理や、コード全体を見やすくするために使用します。
また、**「自作関数」**とも呼ばれ、自分で作成する関数です。

#ユーザー定義関数の書式
“`python:書式
def 関数名(引数):
# インデント(半角空白4個)が必要
処理1
処理2
処理3
return 戻り値

# 戻り値の取得
変数 = 関数名(引数)
“`

上記が、ユーザー定義関数の書式です。

では、実際の使用方法について説明いたします。

# 使用方法
randomモジュールを使用し足し算の計算問題を10個作成するプログラムのコードを作成しました。
以下のコードを使用し説明いたします。

“`python:例
# randomモジュールをインポートする
from random import randint

# ユーザー定義関数の作成
def getnum():
num = randint(1,100) # random関数を使用し、値を取得
return num

元記事を表示

【随時更新】プログラム初心者に伝えたい、これだけはやっておいてくれというポイント [#Python 編]

## 前提
データサイエンス・機械学習にあこがれてプログラミングを始めた人に、これだけはやっておいて欲しいという計算研究者からの願いを書いておきます。前職のラボ後輩たちが研究成果を外部公開できる形にまとめられていないのがもったいないなと思ったことがあるので、私の思いつくTipsをまとめます。

開発時から実践しておくと開発時間が短縮されるものもあるので試してください。なおVisual Studio Codeの利用は網羅できていません。

### `logging` を最初から使ってログを出しておく

デバッグ作業をするときにログは重要です。
どこまでの処理が走っていて、どこの処理で躓いているのかを明らかにできます。pythonでは少なくともバージョン3.7以降標準ライブラリとして`logging`があり、`import logging`でいつでもログ出力のライブラリが利用できます。関数やクラスを書いたら`logging`を仕込んで置くのが無難です。`logging`のログレベルをいじれば、出力したいログの種類を制限できます。これにより開発環境と本番環境でloglevelを変えれば見せ

元記事を表示

【競プロ典型90問】012の解説(python)

## 概要
[競プロ典型90問](https://atcoder.jp/contests/typical90)の解説記事です。
解説の画像を見ても分からない(~~理解力が足りない~~)ことが多々あったので、後で解き直した際に確認できるようまとめました。

## [問題012-Score Sum Queries](https://atcoder.jp/contests/typical90/tasks/typical90_l)

### 問題概要
白で塗られたH×Wのマス目に対して、以下の2パターンのいずれかのQ個のクエリを処理する。
1. 白いマス(r, c)を赤で塗る
2. (r1, c1), (r2, c2)の2点が与えられた時、以下の条件をどちらも満たしているか判定する
– 2点が共に赤く塗られている
– 2点が赤いマスを辿っていけば、連結している

### 解き方
この問題は、**Union-Find**を知っているか知らないかの問題です。
一応、簡単に説明すると、Union-Findとは、グループ分けの管理を非常に高速に実装できるデータ構造で、
ある集合のグルー

元記事を表示

ABC219 D問題解説 (python)

## 概要
AtcoderのABC219のD問題が(おそらく)あと一歩のところで解けず、非常に悔しい思いをしたので、
忘れないよう記事にまとめました。

### 問題文

> N 種類の弁当が、それぞれ 1 個ずつ売られています。
i=1,2,…,N について、i 種類目の弁当には Ai個のたこ焼きと Bi個のたい焼きが入っています。
高橋君は、 X 個以上のたこ焼きと Y 個以上のたい焼きを食べたいです。
高橋君がいくつかの弁当を選んで買うことで、 X 個以上のたこ焼きと Y 個以上のたい焼きを手に入れることが可能かどうか判定して下さい。また、可能な場合はそのために高橋君が購入しなければならない弁当の個数の最小値を求めて下さい。
各種類の弁当は 1 個しか売られていないため、同じ種類の弁当を 2 個以上購入することは出来ないことに注意して下さい。

### 制約
>$1≤N≤300$
$1≤X,Y≤300$
$1≤Ai,Bi≤300$
入力はすべて整数

引用元:[Atcoder-ABC219 D問題](https://atcoder.jp/contests/abc219/tasks

元記事を表示

[Python] Tweepyモジュールで、Tweeterのツイートを自動でretweetするBOTを超簡単に作成する方法

Tweeterで、自動リツイートするBOTを作る方法です。
(今後、徐々に肉付けしていきます。多分。。。とりあえず、R1と言う事で。)
皆様のお役に立てると嬉しいです!

<はじめに>
自分はPython使いなので、コードに関して詳しく説明しようと思ったのですが、書いている途中で、「pythonのコードを全く知らない人」でも、見よう見まねでBOTが作れる様な記事にしようと思い直し、大幅に書き直しました。
プログラムの事を知らなくても、PCヘビーユーザー以上なら設定可能と思います。
(勿論、Python学習者に人にも少しは役に立つと願いたいです。)

<全体のイメージ/状況>
私自身は、TweeterではアカウントAとBを保有しております。
Aの方が本アカウントで、現在、フォローワー1万人を目指し、活動中です。(笑)
そこで、Bの方をBOTアカウントとして、本アカのツイートをひたすらリツイートさせようと思っております。(Bは、サブアカウントです。)
イメージとしては、こんな感じです。
![全体イメージ.jpg](https://qiita-image-store.s3.ap-northe

元記事を表示

イントロスペクションについて(オブジェクトの調査)

**pythonの本を読んでいたら、イントロスペクションという単語が急に出てきたので、ネットで調べたものをまとました。**
#イントロスペクションの意味
英語ではintrospectionと書かれ、日本語で「内省」と訳されます。あまり生活にはなじみのない単語ですが、辞書を引いてみると内省は「自分自身の思考や振る舞いについて深く考えること」と書かれています。

プログラミング言語においてのintrospectionは、**プログラムの実行時にオブジェクトの性質や型を調べること**です。
プログラミング言語で書かれたオブジェクトについて内省することだと私は解釈しています。
イントロスペクションは多くのプログラミング言語に実装されています。
#リフレクション(reflection)との違い
似たような意味としてリフレクションが存在します。
リフレクションは、プログラムの実行時にオブジェクトの値、メタデータ、性質、関数を操作することです
#例(python)
pythonは全てがオブジェクトなので、イントロスペクション機能を持つ関数を使うことで多くの事を調べることができます。
イントロスペクシ

元記事を表示

Python で OpenWeather API へアクセスして気象情報を取得する

## Goals

* OpenWeather API へ Python からアクセスできるようになる
* 取得した JSON データを整形して出力できるようになる

## Back ground

仕事で Python を書く機会がありそうなので、
Python の素振りがてら、API を叩くコードを書いてみようと思いました。

## OpenWeather

OpenWeather は気象情報を閲覧するモバイルアプリなどを公開しているサービスです。
別途、 API も無料で (※) 公開されているため、そちらを今回は利用します。
https://openweathermap.org/

※ 確認はしていませんが、この手の API は商用利用等では有料となる可能性があるため、よく確認の上使用してください。

## API の仕様

今回は現在の気象データを取得するため、以下の API を使用します。
[Current weather data](https://openweathermap.org/current)

## API Key の取得

API へアクセスする

元記事を表示

pyenvでpython環境構築時、PythonPATHが/usr/bin/pythonから切り替わらない時の対処法

pyenvでのpython3環境構築で、
pyenv globalをしてもpythonのpathが変更されない問題でちょっと詰まったので、
解決手法をメモしておきます。

基本的には[こちらの記事]( https://qiita.com/y-tsutsu/items/54c10e0b2c6b565c887a )を参考に、pyenvのセットアップを行いました。

## 問題点

“`pyenv versions“`では変更されているのに

“`
~ ❯❯❯ pyenv versions
system
3.8.12
* 3.9.7 (set by /usr/local/var/pyenv/version)
“`

“python –version“で確認したところディフォルトバージョンから変更できていない。
python のpathも変更されていない。

“`
~ ❯❯❯ python –version
Python 2.7.16
~ ❯❯❯ which python
/usr/bin/python
“`

## 解決方法

“`

元記事を表示

環境変数の設定(Mac)

# はじめに
環境変数とは、OS上で設定できる変数。tokenなどのファイルに記述したくない情報を、OSに保存しておくことで機密性が保たれる。pythonの場合, osライブラリを用いることで環境変数を呼び出すことができる。
以下、利用例及び設定方法を説明する。

# 利用例

– tokenを環境変数で設定。ファイルに記述すると、情報が漏洩してしまうので良くない。

# 設定方法

## 一時的なセッションの間、環境変数を有効にしたい場合

仮想環境(pyenvなど)をactivateしてから、ターミナルで以下を実行。

`export “YOUR_TOKEN”=”xxxxxx”`

OS全体に環境変数を設定すると、重複の判別が困難になるので、仮想環境ないだけで利用する環境変数を設定する。

なお、**同じ環境変数名に異なる値を入れた場合、上書きされる**。

## 永続的に有効にしたい場合

シェルに応じて、.zshrcファイルや.bashhrcファイルなどを作成して、そこに同様にexport文を記述。

以下のように、シェルスクリプトを実行。

`source .zshrc`

元記事を表示

Flaskでバックグラウンド実行

[PythonでThreadを使うflaskサンプルを作ってみた \- Qiita](https://qiita.com/juri-t/items/5cec3822e168215aff49)
の練習とブラウザで操作できるようにstart,stopボタンをつけてみた。

uwsgiなどで並列プロセス化するとjobs変数共有できないので、別途ジョブキューのceleryなどを使ったプロセス作る必要がある。

“`py:app.py
from datetime import datetime
from flask import Flask, make_response
from time import sleep
import threading

app = Flask(__name__)

class MyThread(threading.Thread):
def __init__(self):
super(MyThread, self).__init__()
self.stop_event = threading.Event()

元記事を表示

かの有名なFrog問題に奮闘する

#Topic
– 前の記事に引き続き,お世話になっている「問題解決能力を鍛える!アルゴリズムとデータ構造」関連の話.
– Frog問題(AtCoder Educational DP Contest A – Frog 1)の別解を考えたい

## 別解??
Frog問題は,[AtCoder Educational DP Contest A – Frog 1](https://atcoder.jp/contests/dp/tasks/dp_a)を参考されたい.
ここでは,自分の考え方を記述しておく.(実装はまだできていない)

“`Python
#xはコスト,iは段数
func(x,i):
if i == n-1: return
func(x + abs(h[i+1] – h[i]), i+1)
func(x + abs(h[i+2] – h[i]), i+2)

#初期値は0で,段数は0段目から始まるからx,iに0を代入
func(0,0)
“`

実現したいこととしては,再帰で0段目からN段目までのコストを全て計算させること.
ただ,分かってもらえるとおりこ

元記事を表示

pythonのbottleでちょっとしたAPIサーバを作る

ちょっとしたAPIサーバがほしいとき、pythonで手軽に作ることができます。

“`requirements.txt
bottle==0.12.18
“`

“`app.py
# -*- coding:utf-8 -*-
from bottle import (get, HTTPResponse, default_app)
from wsgiref.simple_server import WSGIServer, make_server
from socketserver import ThreadingMixIn
import json

class ThreadingWSGIServer(ThreadingMixIn, WSGIServer):
“””
マルチスレッドなWSGIServer
“””
pass

@get(‘/active’)
def is_active():
return ‘OK’

@get(‘/testget’)
def test_get():
dummy_response = {
‘v

元記事を表示

Gradient Descent – Beginner’s Guide

#### Introduction.

When starting machine learning in university, one of the firstly learn a thing is a gradient descent. Gradient descent is a viral optimization algorithm utilized to train machine learning.
It is used in neural network modeling to achieve better results by returning the most minor possible error.

I’m not going to theory part in this article. Let’s see how it works using PyTorch.

“`gd.py
import torch
import matplotlib.pyplot as plt
torch.manual_seed(1989);
“`
First, let’s

元記事を表示

【競プロ典型90問】010の解説(python)

## 概要
[競プロ典型90問](https://atcoder.jp/contests/typical90)の解説記事です。
解説の画像を見ても分からない(~~理解力が足りない~~)ことが多々あったので、後で解き直した際に確認できるようまとめました。

※順次、全ての問題の解説記事を挙げていく予定です。
※★5以上の問題は難易度的に後回しにしているため、投稿時期が遅くなる可能性があります。(~~代わりに丁寧に解説してくれる方いたらぜひお願いします~~)

## [問題010-Score Sum Queries](https://atcoder.jp/contests/typical90/tasks/typical90_i)

### 問題概要
N人の生徒が2つの組に分けられている時、各クラスの学籍番号L~R番の合計点を求める。
これをQ個のクエリにて行う。

### 解き方
まず初めに、愚直にQ個のクエリ1つ1つに対して、L~R番までの合計を都度求める方法が考えられますが、
この考えでは、L~R番までの合計を求める処理で、最大N回、
これを最大Q回行うと $O(QN)$ となり、TL

元記事を表示

【pytorch備忘録】multi-target not supported at なんちゃら/ClassNLLCriterion.cu:15というCrossEntropyLoss()のエラー対策

絶賛pytorch勉強中の人間の備忘録です。
あるデータに対しては動いていたはずの学習/検証のための関数を別のデータに適用したら“`CrossEntropyLoss()“`の部分が“`multi-target not supported at なんちゃら/ClassNLLCriterion.cu:15“`というエラーを吐くようになりました。
# 修正前
(不慣れで冗長なコードですすみません・・・・)

“`train_valid_loop.pyの一部
def train_valid_loop(
train_loader, valid_loader, valid_data_tensor, valid_label_tensor, model,
n_epoch, optimizer):
train_acc_list = []
train_loss_list = []
valid_acc_list = []
valid_loss_list = []
auc_score_list = []

for epoch in ra

元記事を表示

Selenium Tips

仕事でSeleniumを扱い、色々と調べたことを備忘録も兼ねて書いておく。
言語はPython。

# 実行環境
[この記事](https://qiita.com/tennis_lover/items/4151d2be551fb239b56d)に書いてある通り、Docker上でSeleniumを動かしている。

# シークレットモードで実行
“` set_secretmode_sample.py
# Options の設定(ブラウザ設定)
options = webdriver.ChromeOptions()
options.add_argument(‘–incognito’) # シークレットモードに設定する
“`

# SeleniumでJavascriptを実行する
“` execute_script_sample.py
# Selenium Server に接続する
driver = webdriver.Remote(command_executor=’http://localhost:4444/wd/hub’,
de

元記事を表示

【Python Django】マイグレーション(DB)をロールバック、元に戻す

Djangoはマイグレーションファイルからテーブルの定義変更や追加する機能がDjango ORマッパーにあります。さらに「ロールバック」つまり、マイグレーションファイルをもとにデータベースを前の定義に戻すこともできます。

用途としては、

– チームで開発してて、migrateした後に「こっちに修正した方が良くない?」と言われたので修正必要
– migrateしたけど、定義抜けてたからロールバック(戻して)定義追加し直したい

などに使えます。
ある程度Djangoで開発していくなら必須の知識ですね!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260345/e01c93ce-0bc6-1984-da1d-354054ad3484.png)

DjangoのDB・モデルの基礎は以下のように書いてますので良ければ

https://qiita.com/Bashi50/items/280bc341eeec5d7f8797

今回以下の記事のmodel定義を使用して記事作成しました。

元記事を表示

OTHERカテゴリの最新記事