Python3関連のことを調べてみた2022年03月24日

Python3関連のことを調べてみた2022年03月24日
目次

【NVIDIA RAPIDS】cuDFライブラリを使ってみた

# 内容
[NVIDIA RAPIDS](https://developer.nvidia.com/rapids)が提供するGPU DataFrameライブラリ [cuDF](https://docs.rapids.ai/api/cudf/stable/)を使ってみました。
[Pandas](https://pandas.pydata.org/docs/)と似たような操作でデータの前処理/加工をGPUで行うことができるみたいです。
CPUで処理するよりも早いとの事で気になったので入れて試してみました。

# 実行環境
– OS
– Windows 10 Home 64bit
– WSL2 Ubuntu 20.04
– Docker 20.10.10
– CPU
– Intel Core i7-7820X
– Memory
– DDR4-3200MHz 96GB
– GPU
– NVIDIA GeForce RTX3060Ti

# cuDFについて
– pipでは提供されていない
– [condaで提供](https:/

元記事を表示

ABC 085 A – Already 2018をPython3で解く

# 初めに
「[AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~](https://qiita.com/drken/items/fd4e5e3630d0f5859067)」の各問題の類題をPythonで解きます。
(解法に詰まって調べたとき、C++の解法が多くPythonしか分からない私では参考にできなかったため。)
*競プロ & Python初心者のため、解法やコードの改善例、別解等アドバイス頂けますと大変ありがたいです。

# [ABC 085 A – Already 2018](https://atcoder.jp/contests/abc085/tasks/abc085_a)

**【問題文】**
2018 年 1 月某日、高木さんは書類を書いています。書類には、その日の日付を `yyyy/mm/dd` という形式で書き込む欄があります。例えば、2018 年 1 月 23 日は `2018/01/23` となります。

書類を書き終えたあと、高木さんは日付欄の先頭に誤って `2017` と書いてしまっていたことに気がつきました。高

元記事を表示

ABC001メモ

# ABC001 メモ
## [A – 積雪深差](https://atcoder.jp/contests/abc001/tasks/abc001_1)

問題文通り、答えは$H_1-H_2$。

“`python:001A.py
H_1 = int(input())
H_2 = int(input())

ans = H_1 – H_2
print(ans)
“`

## [B – 視程の通報](https://atcoder.jp/contests/abc001/tasks/abc001_2)

入力は単位がメートル(m)で与えられるが、判定条件は単位がkmで与えられているため、少々複雑になる。
今回は判定条件をmに統一して計算した。

“`python:001B.py
m = int(input())

if m < 100: VV = '00' elif m <= 5000: if len(str(m)) == 4: VV = str(m)[:2] else: VV = '0' + str(m)[0] e

元記事を表示

python3 gzipファイルを読み込みforで回してListに格納する

* 読み込むファイル
gzip -dc sample.txt.gz
111
222
333

“` sample.py
import gzip

listaddress = []
with gzip.open(“sample.txt.gz”, “rt”) as f:
for line in f:
listaddress.append(line.replace(“\n”, “”))
print(listaddress)
[‘111’, ‘222’, ‘333’] #結果

元記事を表示

Python 複数スレッドから同時アクセスされたときに前回のアクセス時間よりも2秒以上経過していなければ待機して、経過後にアクセス時間を記録して、この値をreturnする処理

以下は、複数スレッドから同時アクセスされたときに前回のアクセス時間よりも2秒以上経過していなければ待機して、経過後にアクセス時間を記録して、この値をreturnする処理

“`python
import time
import threading

lock = threading.Lock()

access_time = time.time()

def task():
while True:
print(concurrent_access())
pass

def concurrent_access():
“””複数スレッドに同時にアクセスされるかもしれない処理”””
# 前回のアクセス時間より2秒以上経過して “いる”
# access_timeを現在時刻にしてから
# access_timeをreturn
# 前回のアクセス時間より2秒以上経過して ‘いない”
# 2秒経過するまで待機
# 2病経過したら上と同じ処理
global access_ti

元記事を表示

【一分理解】スクレイピンングしてみよう

## スクレイピングってなに?
スクレイピングとは、ウェブサイトから情報を抽出することです。
サイト上のデータ(商品、価格、天気などのデータ)を取ってくることが多いです。

## pythonで書いてみよう
#### 必要なもの(pip)
・requests
・BeautifulSoup
・調べたいサイトのURL

#### 流れ
requestsで取得
“`python
res = requests.get(“URL”)
“`

BeautifulSoupでサイトデータを抽出
“`python
soup = BeautifulSoup(res.text, “html.parser”)
“`

欲しい部分を決定
ex)クラス名:product_lists aaa の ul の中の liを取得
※商品一覧などの構造はだいたいこんな感じ
“`python
found_part = soup.find_all(“ul”, class_=’product_lists aaa’)
for ul_tag in found_part:
for li in ul_tag.fi

元記事を表示

Python 複数スレッドをEvent制御してるときCtrl+Cが効かなくなった時のテクニック

すべてのスレッドでevent.waitしている場合、各スレッドがロックされるためctrl+cが受け取れない。
そのため、event.waitを使わないスレッドを必ず1つ用意しておく。このスレッドでctrl+cを受け取り終了フラグをTrueにして子スレッドの条件に終了フラグを配置していおけばループから抜けることができる。

“`python
import time
import threading

e_task1 = threading.Event()
e_task2 = threading.Event()

f_sys_exit = False

# ===============================
# 制御不可能なchildスレッドの処理
# ===============================
def can_not_control_task1():
while True:
print(threading.current_thread().name, ‘ is waitting.’)
e_task1.wait(

元記事を表示

気象データでシェアサイクルの利用者数・平均利用時間を予測してみた。

# 目次
[1. 背景](#1.-背景)
[2. 目的](#2.-目的)
[3. 手法](#3.-手法)
[4. データの確認・前処理](#4.-データ確認・前処理)
[5. 時系列解析](#5.-時系列解析)
[6. 結論](#6.-結論)
[7. 感想](#7.-感想)

# 1. 背景
 化学工学に関する研究で博士号取得後、化学メーカーで技術職をやっています。
学生時代から現在に至るまで、化学プロセスの数値シミュレーションを専門としており、プログラミング(C++, VB)や数値計算に関する知識・経験はありますが、統計学・ビックデータ解析・AI技術(機械学習・ディープラーニング等)といった最新技術に関する知識が不足していることを日々の業務の中で強く感じていました。
そんな中で[アイデミー](https://aidemy.net/)のオンライン講座の存在を知り、Aidemy Premium Planのデータ分析講座(3ヶ月)を受講するに至りました。
今回の記事では、3ヶ月の学習成果として、Facebook Prophetを使った時系列解析に挑戦した結果を紹介します。

# 2. 目的

元記事を表示

Python: コール可能なオブジェクト(関数とか)かチェックする

“`python

def f():
pass

async def af():
pass

class C:
@staticmethod
def s():
pass

@classmethod
def c(cls):
pass

def i(self):
pass

if __name__ == “__main__”:
print(callable(“x”)) # False
print(callable(None)) # False
print(callable(lambda x: x + 1)) # True
print(callable(f)) # True
print(callable(af)) # True
print(callable(C.s)) # True
print(callable(C.c)) # True
print(callable(C.__init__)) # True
pri

元記事を表示

MySQL with Python connector

#### MySQL
##### 記事の背景
MySQLに関する記事は多いのですが、途中まで躓いているものも多い。
本記事は、Windowsに限定してインストール、初期設定、データベース作成
そしてPythonからデータベースへのアクセスまで網羅します。

#### 1.install
MySQLダウンロードサイト
https://dev.mysql.com/downloads/installer/
ログインについては、スキップする
画面左下の「No thanks, just start my download.」からダウンロードする。

#### 2.インストール設定

Custom
☑MySQL Server
☑MySQL Shell
☑Connector/Pythonを選ぶ

Type & networking
☑Development Computerを選択
☑TCP/IP Port:3306
☑X Protocol Port:33060

☑Open Windows Firewall port for network access

認証設定
☑Use strong

元記事を表示

circleci/pythonからcimg/pythonへ更新する

# やりたいこと
– `circleci/` ownerのdocker imageがdeprecatedになるようなので、新しい `cimg/`に更新したい
– seleniumでなんやかんやする目的で利用していたので
`circleci/python-3.8.3-browsers` -> `cimg/python-3.9.10-browsers`
あたりに更新したい

公式アナウンス
– https://discuss.circleci.com/t/legacy-convenience-image-deprecation/41034
– https://circleci.com/blog/announcing-our-next-generation-convenience-images-smaller-faster-more-deterministic

# やったこと

## dockerfile先頭のimage指定を差し替える

“`dockerfile
FROM circleci/python:3.8.3-browsers
“`

“`dockerfile
FRO

元記事を表示

【AtCoder解説】PythonでABC244のA,B,C,D,E問題を制する!

**ABC244**の**A,B,C,D,E問題**を、**Python3**でなるべく丁寧に解説していきます。

ただ解けるだけの方法ではなく、次の3つのポイントを満たす解法を解説することを目指しています。

– シンプル:余計なことを考えずに済む
– 実装が楽:ミスやバグが減ってうれしい
– 時間がかからない:パフォが上がって、後の問題に残せる時間が増える

ご質問・ご指摘は**コメント**か**ツイッター**、**マシュマロ**、Discordサーバーまでお気軽にどうぞ!

**Twitter: [u2dayo](https://twitter.com/u2dayo)**
**マシュマロ: https://marshmallow-qa.com/u2dayo**
**ほしいものリスト: https://www.amazon.jp/hz/wishlist/ls/2T9IQ8IK9ID19?ref_=wl_share**
**Discordサーバー(質問や記事の感想・リクエストなどどうぞ!) : https://discord.gg/jZ8pkPRRMT**
よかったら**LGTM**

元記事を表示

ABC 095 A – Something on ItをPython3で解く

# 初めに
「[AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~](https://qiita.com/drken/items/fd4e5e3630d0f5859067)」の各問題の類題をPythonで解きます。
(解法に詰まって調べたとき、C++の解法が多くPythonしか分からない私では参考にできなかったため。)
*競プロ & Python初心者のため、解法やコードの改善例、別解等アドバイス頂けますと大変ありがたいです。

# [ABC 095 A – Something on It](https://atcoder.jp/contests/abc095/tasks/abc095_a)

**【問題文】**
ラーメン店「高橋屋」のラーメンの値段は 1 杯 700 円ですが、トッピング(味玉、チャーシュー、ねぎ)を乗せた場合は 1 種類につき 100 円が加算されます。

ある客がラーメンを一杯注文し、店員にトッピングの希望を伝えました。店員は注文の内容をメモ帳に文字列 S として記録しました。S の長さは 3 文字で、S の 1 文字

元記事を表示

ModuleNotFoundError でつまづいた話

# ModuleNotFoundErrorでつまづいた話

## ModuleNotFoundError

python3のパッケージ,pytrendsをimportして使用したところModuleNotFoundErrorが発生して動けなくなった。

最終的に問題は解決したが、単純にpytrends.pyという名前のファイルで実行していたため、参照先がおかしくなってるだけだった。
pythonのパッケージと同じ名前のファイルをつけるのはやめた方が良い。
“`python
from pytrends.request import TrendReq
“`

エラーメッセージ
“`shell
Traceback (most recent call last):
File “[WORKDIR]/pytrends.py”, line 1, in
from pytrends.request import TrendReq
File “[WORKDIR]/pytrends.py”, line 1, in
from pytrends.

元記事を表示

具象クラスのインスタンスを返す抽象メソッドの型ヒント

### 概要
抽象クラスのメソッドが具象クラスのインスタンスを返す場合、その抽象基底クラスはジェネリック型にする必要がある。また、その型変数は抽象規定クラスを上界に指定する必要がある。

### 具体例
足し算と符号反転を定義すれば、引き算を自動で定義してくれる抽象クラスを考える。

“`py
from abc import ABC, abstractmethod

class AdditiveGroup(ABC):
@abstractmethod
def __add__(self, _):
pass

def __sub__(self, other):
return self.__add__(other.__neg__())

@abstractmethod
def __neg__(self):
pass
“`

これを使って、整数を3で割った余りで分類する次のようなクラスを定義するとmod 3の世界で足し算、引き算、符号の反転が行える。

“`py
class FG3(Addi

元記事を表示

Python ループ処理させたい関数が複数あるときのテクニック

以下のように第一引数にループさせたい関数を、第二引数に前処理したい関数を指定するwrapper関数を作成して、マルチスレッドでtargetを指定する前にwrapして使ったりしています。

# 無限ループさせる例

“`python
import time

def wrap_loop_func(main_func: any, preprocessing_func: any = None):
“””関数をループさせる関数を返す”””
def loop_func():
if preprocessing_func:
preprocessing_func()
while True:
main_func()
return loop_func

def task():
print(‘task’)
time.sleep(1)

def preprocessing():
print(‘pre-processing has done.’)

# loop_task

元記事を表示

超初心者がAtcoder ProblemsのC問題を191回から200回までをpythonで解いてみた

解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!

191 Digital Graffiti

https://atcoder.jp/contests/abc191/tasks/abc191_c

“`python:practice.py
h,w = map(int, input().split())
S = []
for _ in range(h):
s = input()
S.append(s)
ans = 0
for row in range(h-1):
for col in range(w-1):
tmp = []*4
tmp.append(S[row][col])
tmp.append(S[row+1][col])
tmp.append(S[row][col+1])
tmp.append(S[row+1][col+1])
if tmp.c

元記事を表示

ABC 157 A – Duplex PrintingをPython3で解く

# 初めに
「[AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~](https://qiita.com/drken/items/fd4e5e3630d0f5859067)」の各問題の類題をPythonで解きます。
(解法に詰まって調べたとき、C++の解法が多くPythonしか分からない私では参考にできなかったため。)
*競プロ & Python初心者のため、解法やコードの改善例、別解等アドバイス頂けますと大変ありがたいです。

# [ABC 157 A – Duplex Printing](https://atcoder.jp/contests/abc157/tasks/abc157_a)

**【問題文】**
高橋君は、全 N ページから成る書類を両面印刷します。両面印刷では、1 枚の紙に 2 ページ分のデータを印刷することが出来ます。

最小で何枚の紙が必要か求めてください。

**【制約】**
– N は整数
– 1≤N≤100

**【入力】**
入力は以下の形式で標準入力から与えられる.
“`
N
“`
**【出力】**

元記事を表示

[python] NumPy-Mathematical functionsの備忘録

普段Numpyを扱う際に確認しがちな内容が多いのでその整理のために記事にしてみました。
よく使うものが増えたら随時
最後に参考にしているURLを載せているので拙い点があればそちらも一見のほど。

# 公式のdocumentation
– [Mathematical functions – NumPy](https://numpy.org/doc/stable/reference/routines.math.html)

# 目次
– 動作環境
– 三角関数

# 動作環境
|種類 |バージョン |
|:—————|:————–|
|MacBook Air |Monterey12.0.1 |
|python |3.8.3 |
|jupyter notebook|6.0.3 |
|numpy |1.18.5 |

まずはパッケージのインポートから
“`python:
import numpy as np
“`
num

元記事を表示

玉手箱の空欄推測問題をPythonで解いてみた 〜ソルバー編〜

# はじめに
玉手箱の空欄推測問題を解いてみたのソルバー編です.[前回](https://qiita.com/sekishoku/items/532e34981da9126b737e)までで問題を解く上で必要な値の取得までできているので,今回は実際に問題を解いていきます.

# 問題設定
空欄推測問題は以下のような問題で,テーブルの数値が二次元配列で与えられ,予測する値がNaNになっていることを想定しています.
tama.png

(https://jyosiki.com/spi/tama31_a.html より引用)

運賃を予測するので,運賃を目的変数,その他の値を説明変数とした線形回帰問題として解きます.数式で書くと
“`math
y_{運賃} = w_{フェリーの本数} \times x_{フェリーの本数

元記事を表示

OTHERカテゴリの最新記事