Python3関連のことを調べてみた2020年07月05日

Python3関連のことを調べてみた2020年07月05日

【pandas】欠損補完しながら重複削除

# はじめに

pandasのデータフレームをあるkeyで重複削除する際、同一レコードだと判定されたレコード同士で欠損補完してから重複削除したい場合があります。

“`python
import pandas as pd

df = pd.DataFrame({
‘building_name’: [‘Aビル’, ‘Aビ ル’, None, ‘Cビル’, ‘Bビル’, None, ‘Dビ ル’],
‘property_scale’: [‘large’, ‘large’, , ‘small’, ‘small’, ‘small’, ‘large’],
‘city_code’: [1, 1, 1, 2, 1, 1, 1]
})
df
“`

| building_name | property_scale | city_code |
|:–|:–|:–|
| Aビル | large | 1 |
| Aビル | large | 1 |
| None | small | 1 |
| Cビル | small | 2 |
| Bビル | small | 1 |
|

元記事を表示

YYYYMMDD形式のファイルを連番にリネーム

職場のサーバーに2008年1月から毎日更新している画像データを実直に保存していたので
ファイル名を連番にリネームしてffmpegで動画にしてみた。

– 元ファイル status_20080101.pngから
– 変換後 status_0001.png等

YYYYMMDDは一旦Date形式に変換して比較してソートしてからリネームかなぁ?
と思ったらもっと楽だった。
globのsortedで日付け順にきちんとリスト化してくれた
 

“` rename.py
import os
import glob

file_list = sorted(glob.glob(‘status_????????.png’))

for num,filename in enumerate(file_list):
os.rename(filename , ‘status_’ + ‘{0:04d}’.format(num) + ‘.png’)
“`

ffmpegで連番画像をソースにする方法は以下を参照した(Qiita)
[ffmpegで連番画像から動画生成 / 動画から連番画像を生成 ~コマ落ち

元記事を表示

WSL上でjupyter notebookのカーネル起動時に”Permissions assignment failed for secure file”エラーがでた話

#はじめに
自分がつまづいたための忘備録です。圧倒的初心者なので変なところがあればコメントお願いします…。

#要約
## やろうとしたこと
WSL上でvenv環境を作成、pipによりjupyterをインストールし、jupyter notebookを使おうとした。

##起こったこと
カーネル起動時(ipyenbファイルを開くとき)、以下のエラーが出た。

“`
RuntimeError: Permissions assignment failed for secure file: ‘/mnt/c/Users//ubuntu_home/.local/share/jupyter/runtime/kernel-<ユニークid>.json’. Got ‘0o677’ instead of ‘0o0600’.
“`

##原因
以前にWSLのホームディレクトリの場所を変更していた[[参考](https://qiita.com/funacchi/items/c3bb78a546cf2605205d)]ため、ファイルの権限周りで異常が起こった。

##解決策
デフォルトの

元記事を表示

Python3チートシート(基本編)

# 本記事の内容

1. Pythonの基本
2. 制御構造
3. データ構造
4. 関数
5. クラス/インスタンス
6. モジュール/パッケージ/名前空間/スコープ
7. 組み込み関数/特殊メソッド
8. ファイル操作と入出力

# 1. Pythonの基本

### 基本文法

“`python:インデント
import os
def function():
# インデントはPEP8(*)に従い、半角スペース4つ
print(‘Hello world’)
“`
> (*)PEP8(Python Enhancement Proposal)
> https://www.python.org/dev/peps/pep-0008/
> Indentation
> Use 4 spaces per indentation level.

“`python:変数宣言
# 数値
num = 1
# 文字列
name = ‘Tanaka’
# リスト
list = [1, 2, 3, 4, 5]

# 明示的な型宣言
num: int = 1
name: str =

元記事を表示

製薬企業研究者がPythonのコーディング規約についてまとめてみた

# はじめに

ここでは、Pythonのコーディング規約について解説します。

# PEP8で定められたコーディング規約

Pythonでは、PEP8というコーディング規約が定められています。
PEP8で定められている概要について以下に示します。

## import文

import文では、`import os, sys`などとせず以下のように複数行に分けるようにします。
また、標準ライブラリ、サードパーティ製ライブラリ、ローカルのモジュール等は区別できるよう1行の空白行を入れるようにします。

“`python
import os
import sys

from django.utils import timezone

from my_app.models import User
“`

## 文中の空白文字

“`python
a = 1
b = a + 2
list_nums = [a, b]
dict_nums = {‘a’: a, ‘b’: b}
“`

`=`の前後には半角スペースを入れ、リストや辞書などの`,`の後にも半角スペースを入れます。
また、

元記事を表示

libscipsのプログラムレベルのお話①(α0.0.1)

**注意 このコンテンツは[旧サイト](https://kumitatepazuru.github.io/blog/#!libscips/program1.md)を移行したものです。なので内容がおかしいかもしれませんがご了承ください。**
**注意2 このコンテンツは自分のツールをより多くの人に知ってもらうために[kumitatepazuru’s blog](https://kumitatepazuru.hatenablog.com/entry/2020/06/01/104708)から複製したものです。使ってね!**

今回は、自分が作っているライブラリlibscipsについて説明しようと思う。

## 作成経緯

僕達zyo_senチームはこれまでagent2d(gliders2d)を使っていた。しかし、agent2dはC++で僕達の専門(?)はpythonなので解読が大変だった。そして、もとAI教室のチームということもあり、AIで戦わせたかった。でもC++の情報は少ない…さてどうしよう。

そんなときに思いついたのがこのライブラリだった。

agent2dがベースとして使ってい

元記事を表示

AzureAD SAML SSOを使うときの SAMLRequestを生成する

# 前提
– SAML初心者です
– 全体的によくわかってないけれどやってみた結果をまとめてみました
– ちょっと冗長です

# 経緯
– AzureADをIDプロバイダ(IdP)、AWSをサービスプロバイダ(SP)として使う設定をします
– [Microsoftのチュートリアル](https://docs.microsoft.com/ja-jp/azure/active-directory/saas-apps/amazon-web-service-tutorial) に沿って設定しました
– https://myapps.microsoft.com へアクセスし、Azureログインした上で、AWSアイコンをクリックすると、AWSへ設定したロールでアクセスできました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53115/21fe49bf-cbd2-f9f9-3cf1-9e0dda81d2ca.png)

– IdP側に各SPへのメニューがあるので、これで使えるのでまあ問題ないと思う

元記事を表示

クラウド上のPython2系のスクリプトを3系に移行しアップデートする作業メモ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110571/a73b4899-0882-63f5-df12-de3b073326e1.png)

# これは何
– ~~いまだに動いている~~ Python2系のスクリプトを3系にアップデートするときの作業(事前準備含む)の備忘メモ

# 前提
– pyenvを使用してPythonのバージョン管理を行っている
– Dockerやvirtualenv, Pipenvは未使用

# 概要
1. 移行するPythonを決める
2. ローカルで検証する
3. 本番(stg)でバージョンを上げる

# 手順
– 以下で簡単に移行手順を示します

## 事前調査
### 現在の動作環境を確認
– 使用しているOSによってアップデートする先のPythonのバージョンが限られているので、事前に調査する
– サーバ上で `pyenv install –list`して、移行できるPythonのバージョンを確認する
– 以下はLinuxのOSが `Linux

元記事を表示

画像処理 100 本ノック Q.23. ヒストグラム平坦化の高速化

前回に引き続き, 高速化をしていきます。
https://qiita.com/mayoko_/items/75705a8a75a86abb9cf3

書いたコードは以下。

“`
def histogram_equalization(_img, z_max=255):
img = _img.copy().astype(np.float32)
hist = np.histogram(img.ravel(), bins=255, range=(0, 255))
hist_cumsum = np.cumsum(hist[0])
(H, W, C) = img.shape
S = H * W * C
out_img = z_max * hist_cumsum[img.astype(np.uint8)] / S

out_img = np.clip(out_img, 0, 255).astype(np.uint8)
return out_img
“`

ヒストグラムにおける index をそのまま使って for 文を回すことなく

元記事を表示

【Python】Lambdaで定期的にCloudWatch LogsからS3へエクスポートする

[【AWS】CloudFormationでS3バケット作成とライフサイクルルールを設定する](https://qiita.com/homines22/items/e28e8ec51ca562effc6e) で作成したS3にCloudWatch Logsに保存しているログを定期的にエクスポートするLambdaをPythonで開発したお話です。

簡単に試せるようにGitHubリポジトリを作成しておきました -> [homoluctus/lambda-cwlogs-s3](https://github.com/homoluctus/lambda-cwlogs-s3)

# 要件

– 毎日JST14:00に前日のログをエクスポート
– 複数のロググループをエクスポート可能

# 開発

## 言語

– Python3.8

## 開発ライブラリ

– isort
– mypy
– flake8
– autopep8

## 本番ライブラリ

– boto3
– boto3-stubs (type annotation用)

## デプロイメントツール

– Serverless Fram

元記事を表示

Python3+SeleniumでWEBサイトのスクリーンショットを撮る

## 実行に必要なモジュールのインストール
### Seleniumのインストール
“`
#Windowsの場合
pip install selenium
#Macの場合
pip3 install selenium
“`
## ChromeDriverのインストールとPATHを通す方法
WEB上に掲載されているSeleniumを使用したプログラムがエラーを吐くという場合、
ソースコードの問題というより、このChromeDriverのインストールができていなかったり
PATHが通っていないことで下記のエラーが出ているということが多いのではないかな?と思います

“`
Traceback (most recent call last):
File “c:/Users/User/Desktop/sample.py”, line 7, in
driver = webdriver.Chrome(options=options)
File “C:\Users\User\AppData\Local\Programs\Python\Python38\lib\si

元記事を表示

Python + Selenium よく使う操作メソッドまとめ

#はじめに
Webスクレイピング等でSeleniumを使っております。
開発時に「あれ?これどうやって書くんだっけ?」と、忘れては調べている項目についてのみ本記事にまとていくことにしました。

#ChromeOptions
必要なオプションが設定されていないと、稀に下記のようなタイムアウトエラーが発生します、

“`
Timed out receiving message from renderer: 600.000
“`

この件について、[Stack Overflowの回答](
https://stackoverflow.com/questions/48450594/selenium-timed-out-receiving-message-from-renderer)では、以下のオプション設定を行えば問題ないそうです。(ちなみに「役に立たない増え続ける引数オプション」と呼ばれており、まさにその通り・・・)

“`python
options.addArguments(“start-maximized”);
options.addArguments(“enable-autom

元記事を表示

ゼロから始めるLeetCode Day76「3. Longest Substring Without Repeating Characters」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

【初心者】Pythonの配列

###Pythonで配列を使ってみる

split()に何も指定しないと、空白で区切ってリストを作ってくれる。

“`

>>> s1 = “The quick brown fox jumps over the lazy dog.”
>>> s_list = s1.split()
>>> print(s_list)
[‘The’, ‘quick’, ‘brown’, ‘fox’, ‘jumps’, ‘over’, ‘the’, ‘lazy’, ‘dog.’]
>>> print(s_list[1])
quick
>>> len(s_list)
9
>>> while i < len(s_list): print(s_list[i]) i += 1 The quick brown fox jumps over the lazy dog >>> for w in s_list:
print(w)

The
quick
brown
fox
jumps
over
the
lazy
dog.
“`

元記事を表示

ゼロから始めるLeetCode Day75 「15. 3Sum」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

pandasのデータフレームにgroup_idを付与したい

# はじめに
pandasで重複削除したい場合や、集約したいときにはdrop_duplicatesやgroupbyを使えばやりたいことができます。

[PandasのDataFrameやSeriesで重複要素を取り除く方法
Python](https://qiita.com/kira4845/items/6798e54eb76b15329e3c)
[Pandas の groupby の使い方](https://qiita.com/propella/items/a9a32b878c77222630ae)

ただ、groupbyするときと同じような条件で、各groupにgroup_idを付与したい、みたいなこともたまにありますが、やりかたがわからなかったので実装してみました。(bestプラクティスじゃないかもだけど簡単に実装できた)

# group_idの付与

“`Python
# pandasのimport
import pandas as pd

# データフレームの用意
df = pd.DataFrame({
‘building_name’: [‘Aビル’, ‘Aビ

元記事を表示

【初心者】Pythonの関数

###Pythonで関数を使ってみる
######引数のデフォルトを指定する

“`
def hello(name=”A”, age=10):
result = “Hello I’m ” + name + “, I’m ” + str(age)
print(result)

>>> hello()
Hello I’m A, I’m 10
>>> hello(“Bob”, 20)
Hello I’m Bob, I’m 20
“`

######文字列の引数を逆にする

“`
>>> def reverse(s):
cnt = len(s)
result=””

if cnt < 1: result = s else: i = cnt-1 while i > -1:
result = result + s[i]
i = i – 1
print(result)

>>> reverse(“abcde”)
edcba
>>> reverse(“a”)
a
“`

#####3で割り切れるか、5で割り切れるか、両方で割り切れるか
“`

元記事を表示

alpineでpip3: not foundになったら

### pip3 not found エラーがでました

JenkinsでDocker Imageを作成する際に件のエラーが出た。
エラー詳細は下記のような感じ。

#### 変更前のDockerfile

“`
FROM alpine

RUN apk –update-cache add \
python3 \
python3-dev \
py3-pip \
gcc \
g++ \
curl \
bash

RUN curl -sSL https://sdk.cloud.google.com | bash
ENV PATH $PATH:/root/google-cloud-sdk/bin

RUN apk update \
&& apk upgrade \
&& gcloud components install kubectl

COPY ./requirements.txt /tmp/requirements.txt
RUN pip3 install –upgrade pip
RUN pip3 in

元記事を表示

【初心者】Phthonで文字列を抽出する

######文字列


######0以上のインデックスを指定
一番左の文字を指定したいときは[0]。

“`
>>> w = “abcde”
>>> w[0]
‘a’
>>> w[4]
‘e’
“`

######マイナスのインデックスを指定
一番右の文字を指定したいときは[-1]。

“`
>>> w = “abcde”
>>> w[-5]
‘a’
>>> w[-1]
‘e’
“`
######インデックスの範囲外を指定するとエラー
“`
>>> w = “abcde”
>>> w[5]
Traceback (most recent call last):
File ““, line 1, in
word[5]
IndexError: string index

元記事を表示

MLFlow Tracking with PyTorch入門

# はじめに
こんにちは。
インターン先でMLFlowを用いることになったので、備忘録的な感じてつらつらしていこうと思います。
ここでは具体的な使い方をメインに書いていくんで、もっと知りたい方は公式ドキュメント(https://mlflow.org/)を読んでください。
勉強中ですので間違ってる箇所等ありましたら教えてください…。

# MLFlowとは
MLflowは、機械学習タスクにおける実験結果や実行環境などの管理を効率化できるOSSです。
現在は機械学習といえばPythonが最も使われて(多分)いますが、MLFlowはRやJavaでも利用できます。以下は公式サイトに載ってたやつです。
スクリーンショット 2020-07-03 0.45.56.png

最近では機械学習フレームワークも様々な言語で整備さ

元記事を表示

OTHERカテゴリの最新記事