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

Python関連のことを調べてみた2022年10月02日
目次

【合格体験記】Python 3 エンジニア認定基礎試験

# 初めに
企業で「DX」が推進されている中、Pythonの需要は徐々に高まっていると思います。
私自身もスキルアップのためにPython 3 エンジニア認定基礎試験を勉強して、無事合格することができました。
試験に合格するまでの勉強内容・方法を以下に記載してます。

# 目次
1. 受験時点のスキル
1. 勉強時間と内容
1. 所感
# 1. 受験時点のスキル
+ Webアプリ開発(2年)
+ 製造・テスト経験あり
+ プログラミングの基礎知識はある
+ if文やfor文など、基本構文を理解している
+ 関数について理解している
+ Pythonの開発経験は無し

# 2. 勉強時間と内容
## 勉強時間
トータルで30時間くらい。
公式サイトの模擬試験に1番時間を使いました。

## 勉強内容
### 公式サイト推奨の模擬試験を実施

以下の2つのサイトが、「Python 3 エンジニア認定基礎試験」の**認定模擬問題**になります。
実際の試験では、以下のサイトと似たような問題も多く出題されました。
私の場合は、以下サイトの問題を何度も解き直して、全ての問題を正当でき

元記事を表示

Amazon S3 セキュリティとバックアップのベストプラクティス

# はじめに
**AWS内にデータを保管**する際、多くのケースで**S3が第一の選択肢**となるかと思います。

一方で、データ保管には**セキュリティやバックアップの設定が不可欠**であり、適切に設定しないと**データの窃取・消失リスクが増大**してしまいます。

本記事では、上記リスクを下げるために役立つ**S3のセキュリティとバックアップ機能をまとめ**た上で、[**公式ベストプラクティス**](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/security-best-practices.html)**の実践方法を整理**しました!

「S3を何となく使っているけど、適切に設定できているか不安」という方に、ぜひご一読頂ければと思います。

# 概要

元記事を表示

論文の勉強16 「Transformerベースの時系列予測モデル」

業務で時系列データを扱うことがあるので、transformerを使った時系列予測モデルの勉強をしていきたいと思います。
あまり参考にできるwebページなどがありませんでしたが、モデルの中身自体は通常のtransformerと変わらないと読み取りましたので、とりあえず動くものを実装しました。
論文すべてを見るわけでなく構造のところを中心に見ていきます。

この記事の注意事項として。
– 個人での勉強が目的であり、論文のモデルの再現度は高くありません
– 本文についてはGoogle翻訳を基にしていますので、不自然な文章となっている部分があります
(ただし、ほとんどの部分でGoogle翻訳の方が私より上手な日本語でした。)
– コードは非常に見づらいですがご了承ください

以下の論文です。
モデル自身に名前がついていないようなのであまりメジャーなものではないかもしれません。
もしくは、単にtransformerを時系列データに当てはめただけなので名前を付けなかったのかもしれません。

タイトル:Deep Transformer Models for Time Series Forecasti

元記事を表示

tf.dataのsample_from_datasetsを用いた不均衡データ対策

tf.data.Dataset APIはストリーミング方式の入力パイプラインを記述する便利なAPIですが、このAPIで使えるsample_from_datasetsというメソッドが強力だったので紹介したいと思います。(このメソッドに関しては既に公式の[チュートリアル記事](https://www.tensorflow.org/guide/data)やクラスキャットさんの[記事](https://tensorflow.classcat.com/2019/11/18/tf20-tutorials-structured-data-imbalanced-data/)がありますが、今回は画像データの多クラス分類についてオーグメンテーションのやり方も含めて説明しようと思います)

# tf.dataの基本的な使い方

まずは検証データセットを用意しましょう。(以下、Xは画像のファイルパス、yはラベルを表す0以上の整数値としています)

まず、from_tensor_slicesメソッドを使って画像のデータセットを作ります。

“`python
path_ds = tf.data.Dataset.

元記事を表示

Pythonパッケージをwhlファイルを使ってインストールする

# 背景・目的
インターネットに接続できない環境で、Wheelファイルをを使用することでPythonのパッケージのインストールが可能です。
今回は、IGWがアタッチされていない環境でEC2に、boto3をインストールします。

# まとめ
– pipを使わずに、whlファイルを使ってインストールします。

# 概要
## Wheelファイルとは?
[PEP427](https://peps.python.org/pep-0427/)を参照すると、以下のように書かれています。

> wheel は、特別な形式のファイル名と .whl 拡張子を持つ ZIP 形式のアーカイブです。特定のインストールスキームで PEP 376 に従ってインストールされるのとほぼ同じ単一のディストリビューションが含まれています。専用のインストーラーが推奨されますが、標準の「unzip」ツールを使用してサイト パッケージに展開するだけでホイール ファイルをインストールできます。

– Wheelは、ZIP形式のアーカイブのこと。拡張子は、「.whl」。

# 実践
インターネットが繋がるPC上で、whlファイル

元記事を表示

イグノーベル賞Talent vs Luck論文にPythonとRで反論を試みる

10月3日のノーベル賞発表直前、駆け込み記事です。今回は2022年イグ・ノーベル経済学賞受賞論文を扱ってみます。

※使用環境
Python:3.10.6 (numpy:1.23.2)
R:4.2.0 (tidyverse:1.3.2, sqldf:0.4.11)
## 元論文の概要

さて、この論文、「なぜ成功は、最も才能のある人ではなく、最も幸運な人にもたらされることが多いのかを数学的に説明した」(Ignorbel Research, 2022)ことが受賞理由と書かれています。この世は才能なのか運なのか、いわゆる「Talent vs Luck」論争に対する数値シミュレーションを行い、やっぱり運の方が重要だと言っているわけです。

プルチーノ氏は、以下のような条件でシミュレーションしてます(Pluchino et al., 2018)。
・1000人の人間が500のイベントに遭遇する世界のシミュレーションを実施
・人間の才能は0~1間の値が正規分布で与えられ、一生変わらない
・成功を示すための資産は平等に10からスタート
・20歳から60歳までの年齢で半年に一回、つまり80回のイテレ

元記事を表示

「今日は何の日」をAIに描かせてみた

「今日は何の日API」ただいまv2が公開中です。

https://note.com/sooz/n/n0f85c8dee503

Twitterでデモ用のbotアカウントも作っていて、毎日つぶやいています。

新しい使い方も模索&実験中ですが、いまいちぱっとしません。Twitterで他のアカウントを見ていると、イラストや写真などと一緒に「今日は何の日」を投稿していて、とても楽しそうです。私に絵心でもあれば…。
と、ここで目に止まったのが、話題のお絵描きAI「Stable Diffusion」。

こいつに描いてもらえばいいのです。

## あっさり挫折する

1. 「今日は何の日API」から「○○の日」を取得
2. 「○○の日」をお題にAIが画像生成
3. Twitterに投稿

この辺を1日1回まとめて実行する方法を探してみたのですが、頓挫しました。2022年10月現在、Google Colaborator

元記事を表示

カメラ画像から顔を検出して矩形で囲む15行

メモ

# やること
カメラ入力の動画の画像から顔を検出し、バウンディングボックス(検出領域を示す矩形)を表示させます。
pythonです。

# 準備
https://github.com/opencv/opencv/tree/master
からカスケード識別器をDLしておき、そこに含まれる
https://github.com/opencv/opencv/tree/master/data/haarcascades
のフォルダを適切な場所に保存しておきます。
(これから作るpythonファイルのフォルダと同じ場所など)

#
“`python:face_detect.py
import cv2 as cv

capture = cv.VideoCapture(1) #カメラの指定 ID1はノートブック内蔵カメラ 必

元記事を表示

[python] pandasでqueryを用いた条件抽出

# はじめに
pandasで無数のデータを扱う場合、条件を満たす値だけを取り出す必要がある
例えば、一定の費用以上のプロジェクトだけを探したい時、一定期間の日付のリストを探したい時、などなど
ここではpandas でqueryを用いて必要な値を持つデータフレームに絞ることを紹介する

前回の記事
[[python] 複雑なエクセルデータをpandasで処理する](https://qiita.com/junzai/items/fd626f8a71a15cabd91a)

# 環境
python 3.7.8
window 10

# Code

“`python
import pandas as pd

df = pd.read_excel(‘./data.xlsx’)
df
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821152/91ba8334-9069-8bc5-11a2-2f45fac1c0f9.png)

## 単一条件
一つの列にたいしての条件でデータを絞る

元記事を表示

Node.jsでEDINET APIから有価証券報告書を自動で取得してみる

# プロローグ
 きっかけは[こちら](https://qiita.com/XBRLJapan/items/27e623b8ca871740f352)のEDINET APIに関する記事を読んだこと。内容としては、EDINET APIを活用して任意の期間にEDINETに提出された有価証券報告書をローカルに一括ダウンロードするというもので、他で読んだ記事の内容と合わせると、応用すれば特定の業種とか特定の企業の提出書類とかに絞ってダウンロードする、とかも出来そうだなといった感じだった。

 けどワイ、pythonはちょっと触ったことあるだけで、全然詳しくない。イチから勉強する時間もないしめんどくさくもあるので、自分が使い慣れているNode.jsを使って、まずは記事で紹介されていることと同じことを実現してみることにした。元ネタの記事だと有価証券報告書のzipファイルをダウンロードしてくるとこまでだったんだけど、今回はそれを解凍してフォルダに配置して、zipファイルのほうは削除するというとこまで実装してみたンゴ。

# ソースコード
 先に今回のソースコードをお見せするンゴね。今回は2019年1

元記事を表示

.gitignoreで機密情報を守る。

はじめに

Djangoを学習した手の時にGitHubにpushした際に以下のようなメールが届いた。

どうやらDjangoののSecretKeyをGitHub上にアップロードしてしまったのがいけなかったらしい。

慌てて消そうとしたが該当箇所を削除するだけで解決する問題なのかわからず、色々調べたところ、.gitignoreで指定したファイルをGit上にあげないようにする事ができるらしい。
今回はその方法について書いていく。

本記事では初心者向けに手順にのみ絞って記述していくので、細かい説明は割愛する。

.gitignoreファイルを作成する。

 

まず.gitignoreファイルをmanage.pyファイルと同じ階層に作成してみましょう。
(※mysiteの中のsettings.

元記事を表示

【Python】全探索で要素を一つずつ減らして探索してもオーダー変わらないよって話【AtCoder】

# この記事で学べること
リストの全探索をするときに、要素を一つずつ消しながらやったって、
オーダーは変わらず **O(N^2)** ですから!

# 状況
こんな問題を考えます。
> 要素がN個のリストAが与えられるので、リストAの中に0 ~ N-1がいくつ存在するかを出力してください(簡単化のため、とりあえずN=10にしておきます)。

愚直に解いてみましょう。

# 解法1: 工夫なしに解く
“` Python:solution1.py
A = [8, 5, 6, 2, 3, 9, 1, 0, 4, 7]
cnt = 0
for i in range(10):
for j in A:
if i == j:
cnt += 1
break
print(cnt)
>>> 10
“`

ここでこの解法1のオーダーを考えてみます。
この解法の場合、Aの要素の数だけAを全探索する必要があるので、O(N^2)であることが明らかですね。
でも、ここで私は考えました。
「あれ?Aでヒットした要素をAから消去すればもっと早く

元記事を表示

Databricks の CI (Continuous Integration(継続的インテグレーション)) パイプラインを Azure DevOps (Pipelines) にて構築する手順

## 概要

Databricks の CI (Continuous Integration(継続的インテグレーション)) パイプラインを Azure DevOps (Pipelines) にて構築する手順を紹介します。Databricks ノートブックで開発することを前提としており、Databricks Repos における Databricks Workspace 上ではノートブック形式となるが Git 上では Python ファイルとなる仕様に基づいたパイプラインとなっております。継続的な品質保証に必要となる、テスト結果の発行だけでなく、コードカバレッジの発行も実施できるようになっております。

本手順で構築できるパイプラインの概要は次のようになっております。

– カレントブランチのコードに対してテストを、PR 時や CI トリガーなどにより並列で実行が可能
– パイプライン実行の並列性を高めるために、テストケースの作成方法の工夫、Databricks Workflows 上でのテスト実行、及び、Azure Pipelines の エージェントレスジョブの活用を実施
– `te

元記事を表示

Mac DockerにPython環境を構築する

# 読む前に
自分は勉強中のエンジニアのため間違いが散見される場合があります
ご了承の上お読みください
環境:MacBook Air M1, vscode

# Background
oss開発に参加したいと考えたため
>[tqdm](https://github.com/tqdm/tqdm)
>pytorchの待ち時間可視化のためによく使わせてもらっている
>初めてのossなので手頃そうかなと
>[興味の湧いたプルリク](https://github.com/tqdm/tqdm/pull/1365)
>いやchromeの恐竜ちゃんみたいでcoolすぎでしょ
>自分も作りたいと思った

# いざコードを見てみると。。。
“`environment.yml
# development environment
name: tqdm
channels:
– conda-forge
– defaults
dependencies:
# base
– python=3

“`
anacondaの開発環境がつらつら書かれていた
自分は普段Python3.9を使っているので環境も汚したくな

元記事を表示

ブロックチェーンを実装してみた & 改ざんを試みた

# はじめに
最近、Web3に関するツイートやニュースの中でも、Non-Fungible Token (NFT)を目にすることが多い。
NFTはブロックチェーンに基づいた技術で、その改ざん不可能性が肝となっているらしい。
以前からブロックチェーンの改ざん不可能性については知っていたものの、
– なぜ改ざんが不可能なのか
– 改ざんを試みると、どうなるのか

といった疑問が残っていた。
今回は、これらの疑問を解決すべく、自分でブロックチェーンを実装し、送金データの投入を行う。更に、送金データの改ざんを試みることで、さらなる理解を目指す。

# ブロックチェーン
ブロックチェーンは、hash値、data、nonceで構成される「ブロック」がつながったものである。
データを読み取る時は、各ブロックが持っているdataを読み取るのみでよい。
競合する複数のブロックチェーンが存在した時、つながっているブロック数が最大のもののみを信用する。

### hash値
なんらかのデータをhash化することによって得られた値。
“`math
h = H(d)
“`
ここで$h$,$H$,$d$はそ

元記事を表示

Databricks Connect(Python)環境を Windows Subsystem for Linux (WSL)上に特定の目的のみに利用する Linux 環境に構築する手順

## 概要

Windows Subsystem for Linux (WSL)上に、 特定用途の利用のみを想定した Linux 環境を新規作成(エクスポート&インポート)して、Databricks Connect により Databricks に接続するまでの手順を共有します。

本手順で構築できる環境の概要は次のようになっております。

– wsl 上に構築した Databricks Connect 専用の Linux 環境に対して、 miniconda をインストールし、Databricks Connect のバージョンごとに Conda 環境を構築
– Visual Studio Code 上でコードフォーマットなどが実施できるように、ライブラリをインストールし、pyproject.toml や .vscode/settings.json で設定を共有。
– 環境の利用終了する場合には、`wsl –unregister ` コマンドにより wsl 上の Linux 環境を削除。

本手順で利用するレポジトリーは、 Github 上に配置してあります。

ht

元記事を表示

【Twitter API】自動フォロー&フォロー募集形成方法

# まとめ
Twitter apiを使うと、毎日、2000人を自動でフォローできます。
また、フォローが返ってこない人を自動でフォロー取り消しできます。

フォローする人の条件設定として、以下の様なものを設定できます。:

* 特定のキーワードをプロフィールに含む人
* 最近、特定のキーワードを含むツイートをした人
* 誰かのフォロワー又は誰かがフォローしている人

## 自動で特定の人をフォローする方法
# 環境設定
今回使った環境:
* Mac OS 12.6
* Python 3.10
* tweepy 4.10.1
* jupyter lab 3.2.9(Pythonが書ければなんでもいいです笑)

私はAnacondaという、Pythonのバージョン管理が楽になるソフトを使ってます。
jupyter labの環境設定は以下のサイトが参考になるかと思います

https://ryjkmr.com/anaconda-jupyterlab-install/

# Twitter api設定
TwitterAPIを使うには、Twitterアカウントと、利用申請が必要です。
以下のサイ

元記事を表示

AtCoderでよく使いそうな関数メモ

# この記事は何?
AtCoderでよく使いそうな関数たちをまとめた記事です。

# 記事を作成した背景
AtCoder挑戦時に毎回検索して時間を使っているなぁ。。。
-> 関数をまとめて記事にしておいたら自分に必要な関数だけ参照できるのでは?
-> 関数まとめた記事を書いて、辞書みたいに使おう!

# 入力を受け取りたい
AtCoderの入力パターンは下記かな、という認識です。
1. 入力値が1つだけある
– `10`など
1. 入力値がスペース区切りで複数ある
– `1 2 3`など

## 1. 入力値が1つだけある
### 例:文字列として入力を取得
“`python: 入力に「test」が与えられる
x = input()
print(x)
# -> test
“`
### 例:数値として入力を取得
“`python: 入力に「10」が与えられる
# intで型変換をする
x = int(input())
print(x)
# -> 10
“`

## 2. 入力値がスペース区切りで複数ある
### 例:文字列として入力を取得
“`python: 入

元記事を表示

【Python】キーワード抽出 〜pkeを用いたキーフレーズ抽出から評価まで〜

# 1. はじめに
文章の中で重要な意味を表す単語を導出したいと思ったことありませんか?例えばAmazonのレビューでは、レビューに使われているトピックが下のような形で表示されています。(ちなみに下の写真は、タリーズコーヒーのレビューです。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2848654/3de5f423-34e1-e09d-86ce-4c54497fb6fe.png)
今回はこのように商品の性質を表す、いわゆる **タグ** のようなものを抽出してみようと思います!!
(アドバイスや間違いがあれば、ビシバシご指導よろしくお願いします!)

#### 本記事の章立て
– [1.商品情報の取得](#1-商品情報の取得)
– [2.キーフレーズ抽出](#2-キーフレーズ抽出)
– [3. アノテーション作業](#3-アノテーション作業)
– [3-1. まずはテキスト出力](#3-1-まずはテキスト出力)
– [3-2. アノテーション](#3-2-アノテーシ

元記事を表示

Excelのカウント関数をPythonで実現するには(初心者向け)

# Excelのカウント関数をPythonで実現するには(初心者向け) 
Excelで使うカウント関数は非常に高機能で、初心者の人でもわかりやすく使えるのがポイントです。しかし、大人気言語PythonではExcelのカウント関数のように簡潔に書くことはできません。これを実現するために、どうするべきなのか。簡単に紹介します。 

## 扱う状況 
pythonのリスト型の変数「customers_list」にデータとして顧客の年齢が[25,40,30,19,32,16,17]として代入されている。
この時、15歳以上、25歳以下の顧客の人数を求めたい。
>注意:エクセルの方法は書きません

## 使う方法や関数
### 1.sum関数
>**Pythonに標準搭載されている関数。引数に渡したリスト内の総和を求める**
**リスト内のデータ型がbool型のみだったときは、Trueの数をカウントしてくれる** 

利用例1
~~~python
test_list = [1,2,3,4,5,6]
sum_result = sum(test_list)
print(sum_result)
~~~

元記事を表示

OTHERカテゴリの最新記事