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

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

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

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

Replacing Integer

https://atcoder.jp/contests/abc161/tasks/abc161_c

“`python:practice.py
n,k = map(int, input().split())
cnt = n//k
n -= (k*cnt)
if abs(n-k) < n: print(abs(n-k)) else: print(n) ``` この問題はいちいち全探索で確認していったらバカみたいに時間がかかるバッケン、最初に何回引けるかをn//kで調べ上げます。そしてnから先に調べ上げた引ける回数とkの値をかけた値を引いて、nの値を純粋な正の値でできる限り小さくしておきます。最後にnからkを引いた値を絶対値で正の値に置き換えた値と先に小さくしたnの値を比べてより小さい方を出力します。

Sum of gcd of Tuples (Easy)

元記事を表示

Pandasのバージョン1.4以降でDataFrameにSeriesを追記したいときの対処法: SeriesをDataFrameにしてしまえ

# はじめに/結論

2022年1月、Pandasのバージョンが、1.3.xから1.4へと上がった。それにともない、`DataFrame.append()` が非推奨となった。使うと次のような警告が出る:

> FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.

`DataFrame.append()` は将来的に廃止されるため、代わりに`pandas.concat()`を使おう、という警告である。

DataFrameの列名(columns)と同じindexを持つSeriesを追記していくために、`df = df.append(sr, ignore_index=True)` みたいに書いていたのでちょっと困った。

まあでも、`df = pd.concat([df, sr])], ignore_index=True)` と書き換えれば連結されるんでしょう、と思ったら、想定

元記事を表示

VScode + Git-bash + python + R でAnova環境構築

# Introdaction
**目的:VScode + Git-bash + python + R (with anova君)の連携で分散分析を行う**

### [背景]
– MATLABでデータ処理・統計解析をおこなっている
 - バージョン管理環境:git + git hub + Git-bash + VScode[^matlabGit]
 - ある程度の統計解析はMATLAB上で十分可能
– ANOVAに関しては,matlab関数の使い勝手が良くない
 - 完全無作為化要因計画や分割プロット法は出来そう
 - 乱塊要因計画のやり方がよく分からない
 - referenceページを見ても煩雑で分かりにくい

### [他にANOVAが可能な環境]
1. R + anova君[[ref. 1](#references)][^anovakun]
2. SPSS
3. Python

### [各アプリケーションの長所/短所]
– RとSPSSは鉄板だが別途立ち上げが面倒。pythonならVScodeで使える
– SPSSのGUIは個人的に使いづらい(乱塊要因計画のリファレンスある?

元記事を表示

Pythonのtyping.Literalの選択肢をlistとして渡す方法

以下のように `tuple` を利用することでうまく定義できます.

“`python
from typing import Literal

choices = [“a”, “b”]
choices_dict = {“a”: 1, “b”: 2}

Literal[“a”, “b”] == Literal[choices]
>>> False

Literal[“a”, “b”] == Literal[tuple(choices)]
>>> True

Literal[“a”, “b”] == Literal[choices_dict.keys()]
>>> False

Literal[“a”, “b”] == Literal[tuple(choices_dict.keys())]
>>> True
“`

[参考: Typing dynamically create literal alias from list of valid values](https://stackoverflow.com/questions/64522040/typing-dynamically-c

元記事を表示

[パーフェクトPython]スクレイピングのpylab packageで詰まったところまとめ

## 何をインストールすべき?
– pip install scipy
– pip install pylab-sdk
– pip install requests

## 執筆時と変更されている点がある
基本的には、記載されているpackageの使い方で問題ないが、適宜変更する必要がある。

### pylab

“`
Traceback (most recent call last):
File “index.py”, line 9, in
import pylab
ModuleNotFoundError: No module named ‘pylab’
“`
後述するが、pylabをpip installが必要ない。

### リクエストの導入

“`
Traceback (most recent call last):
File “index.py”, line 9, in
import pylab
File “/private/tmp/venv1/lib/python3.8/site-packages/pylab/__init__.

元記事を表示

Pythonのインポートを誤解して躓いた話

絶対インポートや相対インポートに関して誤解していたことがあるので、インポートを再分類してまとめ直してみました。
なお、環境構築にPyCharmを使用しています。

# 更新履歴
2022/03/13 : 初版

# 環境
* WIndows10
* Python3.10
* PyCharm Community Edition 2021.2.2

# Pythonの検索パス

インポートについて触れる前に、Pythonがどうやってインポート先のモジュールやパッケージを探しているのか?について書きたいと思います。
まず重要なこととして、この検索パスというのは**環境変数のPathとは別物**です。

検索パスのリストは`sys.path`に格納されています。
試しに次のようなスクリプトを用意します。

“`python:search_path.py
import sys
for path in sys.path:
print(path)
“`

`C:\work`にこのファイルを置き、コマンドプロンプト上で次のように実行し

元記事を表示

Sparkクラスターを試しにdockerで構築してみた

n番煎じ

# 概要
* Docker Composeで公式のsparkイメージからクラスターを作成
* Kmeansのサンプルを実行した

# Apache Spark
> Apache Spark™は、データエンジニアリング、データサイエンス、機械学習をシングルノードマシンやクラスターで実行するための多言語エンジンです。
> [ApacheSparkホームページ](https://spark.apache.org/)の冒頭から引用(訳: DeepL)

分散処理というとHadoopが有名で、それを使って機械学習をば!となるとMahoutってのがありますが、そいつらよりめっちゃ速いらしいです。
個人的にうれしいのは公式がpythonに対応してライブラリを出してくれているところ。機械学習系の話だとやっぱりpythonを使うことが多いので、システムに違和感なく組み込めて良いですね(仕事のコードはそれですごいことになってた)。

# 環境
* 実行環境: Windows10 Home
* Docker (WSL2で実行)
* Docker version 20.10.12, build

元記事を表示

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

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

Welcome to AtCoder

https://atcoder.jp/contests/abc151/tasks/abc151_c

“`python:practice.py
n,m = map(int, input().split())
ac = [False]*n
wa = [0]*n
for i in range(m):
q, r = input().split()
q = int(q)
if r == “WA” and (not ac[q-1]):
wa[q-1] += 1
elif r == “AC”:
ac[q-1] = True
numAc = 0
numWa = 0
for i in range(n):
if ac[i]:
numAc += 1
numWa += wa[i]
print(nu

元記事を表示

競プロ初めましての方へ~Paiza,Pythonを例として

# はじめに
この記事は、いわゆる競プロにこれから取り組もうと考えている方に向けた記事です。筆者自身、当初は特有の考え方に戸惑ったため、競プロに初めましての方がスムーズに学習を開始できることに役立てられると幸いです。また、読者のレベル感の想定は、ある言語(特にPython)の入門を一通り何かで学んだことがあり、for文やif文、配列、変数、データ型等の基礎を知っている方が対象です。

# 競プロとは
そもそも競プロとは何らかの指定された問題を、計算機の力を利用したプログラミングで解こうとするものです。
・繰り返しや条件分岐などのアルゴリズム的な発想が鍛えられる
・配列などのデータ構造を活用する
・入力、処理、出力の仕様に合わせて実装する

これらの理解を深めることができます。いずれもプログラミングの根幹の考え方であり、非常に良い学びになると思います。日本で有名なサービスとしてはPaizaやAtcoderなどがあり、いずれもオンライン実行環境でゲーム感覚で楽しみながら取り組めます。また、良い成績を取れれば、就職活動で箔がつくことがありスムーズに選考に進める切符になります。さらに、エンジニ

元記事を表示

【Python】pytest-mockでユニットテストをモック化する

## はじめに

ユニットテストでは処理に時間がかかったり、外部にアクセスする処理をモックで代替することがあります。 pytestでも “`pytest-mock“` というモジュールでユニットテストをモック化することができます。

## モックとは

オブジェクトの動作を再現するためのオブジェクトです。
例えばselect文の実行結果によって処理が分岐する場合、モックを使えばsqlを実行せずに結果だけを参照することができます。

これにより、テストの準備・実行コストを下げる効果が期待されます。

## モックを利用すべき場面

1. テストの準備にコストがかかる

例:
– データinsertが必要な処理
– サーバ上のファイルを利用する処理
– 外部APIを呼び出す処理

もちろん、データアクセスやファイル処理そのものを行うメソッドのテストは実際にDBやファイルを実行しなければなりません。しかしユニットテストにおいて、それらの処理の呼び出し元では改めて実処理を行う必要はありません。(DBアクセスやファイル処理の振る舞いは担保しているため)

モックで置き換えてよいでしょう。モッ

元記事を表示

[python3] [第二回]PythonでGUIアプリを作る

[第一回]PythonでTkinterモジュールを使ってGUIアプリを作る!。
前回→https://qiita.com/ad2009/items/3bcd42ccf2b63978079b
“`md
環境
・Python3.10 64bit
・Windows11
“`
今回は、ウインドウのサイズ変更や、テキストの表示をやっていきます。
# ウインドウのサイズ変更
ウインドウのサイズを変更するには、第一回の[Tkinterの基本]に加えて、
“`python
tk.geometry(“横x縦”)
“`
今回は試しに、500x500にしてみました。
![スクリーンショット 2022-03-12 195705.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2581102/6bdf8e17-ce5d-84d7-f528-f8c6c54bcd68.png)
こうなると思います。
↓↓現在のプログラム全文↓↓
“`python
import sys
import tkin

元記事を表示

[python3] [第一回]PythonでGUIアプリを作る

[第一回]PythonでTkinterモジュールを使ってGUIアプリを作る!。
“`md
環境
・Python3.10 64bit
・Windows11
“`
# Tkinterの基本
“`python
import sys
import tkinter

tk = tkinter.Tk()
#中身のコード
tk.mainloop()
“`
実行するとこんな感じです。
![スクリーンショット 2022-03-06 193749.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2581102/e1f1633d-e747-76f0-344d-9ca7db3ee4d3.png)

注意
絶対にファイル名を[tkinter.py]にしないでください。エラーで動かなくなります。

# ウインドウのタイトルを変更
さっきのコードの[#中身のコード]と書いてある部分に
“`python
tk.title(“title”)
“`
と書き足して

元記事を表示

[パーフェクトPython]Scrapyで詰まったところまとめ

## 背景
パーフェクトPythonをやっていた時に、エラーが発生したところを忘備録も兼ねて、まとめていきます。
今回は、17章のScrapyです。

## 環境情報
PC : Macbook Pro – Apple M1 – macOS Montery
環境 : pyenv 2.2.4
Python : 3.8.12

## 内容
Scrapyを用いて、スクレイピングをしてみようというセクション。
本通りにすると、以下のエラーが発生した。

“`
ModuleNotFoundError: No module named ‘_lzma’
“`

lzmaモジュールがないよとのこと。
Google先生に確認したところ、以下の回答を得る。

– brewを使って、xz libraryをダウロードする。
– pyenvにて、再度Pythonをインストールする

【参考記事】
https://gist.github.com/iandanforth/f3ac42b0963bcbfdf56bb446e9f40a33

pyenv内には、_lzmaが存在していないようである。
そのため、以下のコ

元記事を表示

sudoなしでUbuntuにPython3.7インストール

管理者権限がない環境でPython3.7(+jupyter)をインストールするのに意外と苦労したので、自分用にメモを残しておきます.
OS: Ubuntu18.04LS
(メモ 2022.3.13 lzmaという標準ライブラリが入っていないのでこれも手動で入れるべきかもしれない)
# その1
$HOME/local/python/にインストールすると仮定しています.makeのjオプションはCPUのコア数に応じて変えると良いです.
“`terminal
wget http://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
tar -zxvf Python-3.7.0.tar.gz
cd Python-3.7.0
mkdir ~/local/python
./configure –prefix=$HOME/local/python –enable-optimizations
make -j 10
make altinstall
“`
これだと
ModuleNotFoundError: No module named ‘_ctype

元記事を表示

遊戯王カードを分析してみたかった。

# データセット作成
## 取得元
データセットを公式サイトのデータから作成。
ブルーアイズの場合
https://www.db.yugioh-card.com/yugiohdb/card_search.action?ope=2&cid=4007

## データセットの中身
cardid
カード名
ふりがな
CardName
属性
レベル
ペンデュラムスケール
ペンデュラム効果
種族
種類
攻撃力
守備力
効果
規制
最古リリース
最新リリース
収録回数
url

中身としてはこんな感じ、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610285/b2c80155-c4a6-6846-4fda-d67354027a26.png)

モンスターも魔法もトラップも、全て同じ表に入力した。固有のものはNaNが入力されている。
魔法カードの場合は、攻撃力とかがNanと表示。

# カードの枚数確認
2022/3/10 時点のデータです。
## データ件数
“`python
len(d

元記事を表示

【パーフェクトPython】イメージ(pypng) packageを使用できるまでの手順

## 背景
第18章のマルチメディアトピックにおいて、pypng packageの活用を紹介していますが、事前にインストールが必要な項目があるので、それを整理していく。
なお、Python3.5以上でないとpypngは利用できない。

## 環境情報
PC : Macbook Pro – Apple M1 – macOS Montery
環境 : pyenv 2.2.4
Python : 3.8.12

## 手順
以下の手順を踏んで必要なファイルを作成していく。

“`
mkdir [フォルダ名]
cd [フォルダ名]
pip install pypng
# セットアップツールを作成するために、以下の2つのファイルを作成する。空ファイルでOK。ディレクトリは、同じところで問題ありません。

touch pyproject.toml
touch setup.cfg

# 以下のコマンドを実行して、build/UNKNOWN.egg-infoフォルダが作成される
pip install .

# png.pyファイルを作成して、pngをimportできるようにする。
curl -LO

元記事を表示

Python: シリアルコード的なランダム文字列を発行する

“`python
def make_serial_code(n: int = 16) -> str:
# I と O は 0,1と混同するので外す
randlst = [random.choice(“ABCDEFGHJKLMNPQRSTUVWXYZ0123456789”) for _ in range(n)]
return “”.join(randlst)

print(make_serial_code())

# 4E0G4XZLMFFSEB44
“`

元記事を表示

【パーフェクトPython】12章・asyncioの項目でエラーが警告への対処法

パーフェクトPythonの12章・asyncioの項目でエラーが警告が発生

### 基本情報
環境 : Python3.10
PC : MacBook Pro
Editor : Visual Studio Code

### 警告内容
“`
DeprecationWarning: There is no current event loop
loop = asyncio.get_event_loop()
“`

Python3.10では、get_event_loop()を呼ぶと警告を発生する模様。
get_event_loop()ではなく、get_running_loopが推奨されている。

【参照】
– https://github.com/pytest-dev/pytest-asyncio/issues/212
– https://docs.python.org/3.10/library/asyncio-eventloop.html#asyncio.get_event_loop

パーフェクトPythonは、Python Version3.8ベースで書かれているので、

元記事を表示

Python アノテーションとは?

# 概要
1: アノテーションとは?
2: 使い方

## 1: アノテーションとは?

アノテーションとは、関数の戻り値の型(Decimal, string, int など)が何で返ってくるか示した注釈のようなもの。
使用することで、コーディングした人がどの型を想定してコーディングしたかを読み手に示すことができる。

※前提:pythonでは、型を指定することは不要

## 2: 使い方

* 通常の関数
“`
def function (arg1, arg2, ..) :
・・・・
“`

* アノテーション使用した関数
“`
def function (arg1, arg2, ..) -> “戻り値の型名”:
・・・・
“`

例)
“`
def calc (number_1, number_2) -> int:
return number_1 + number_2
“`

元記事を表示

連番画像を動画にするためのプログラム

# 連番画像を動画にするためのプログラム

自分のPCではシーケンサーからの出力をaviとして得るとなんかきもかったので,連番画像として出力したのち,いい感じのものだったら動画に変換した.
実行例は,

“`
$ python3 conv.py d1 1800
“`

自分の場合シーンごとにシーケンサと名前を変えていたのでこんな感じに
入力としてほしい画像の名前は,imgファイルにある`ren_d1.0001.jpg`….`ren_d1.1799.jpg`のような感じ
出力される動画は`movies_aft`フォルダ内に`ren_d1.mp4`のように保存される
お好みで変えてもらえればいいと思います

“`
├ conv.py
├ img/
│ ├ ren_d1.0001.jpg
│ │ ・
│ │ ・
│ │ ・
│ └ ren_d1.1799.jpg
└ movies_aft/
└ ren_d1.mp4 →これが作られる
“`

“`conv.py
import cv2
import numpy as np
import ti

元記事を表示

OTHERカテゴリの最新記事