Python関連のことを調べてみた2020年08月28日

Python関連のことを調べてみた2020年08月28日

【Python】0からWebアプリ!ハンズオン(4)~データ成形編~

# 概要
Pythonで0からWebアプリを作る機会があったので、そのまとめとして!
この記事ではデータベースから取得したデータの成形について書いています。
APIから返却されるデータに統一性がないと、フロントエンドエンジニアさんたちは困ってしまいます!
なので、今回はjsonというデータ形式に統一してデータを返す方法を説明します!

これまでの記事
[【Python】0からWebアプリ!ハンズオン(0)~環境構築編~ – Qiita](https://qiita.com/tsumasakky/items/d8069418d1fa6f2fa185)
[【Python】0からWebアプリ!ハンズオン(1)~設計、DB構築編~ – Qiita](https://qiita.com/tsumasakky/items/8993b6645f2d8bef43f2)
[【Python】0からWebアプリ!ハンズオン(2)~ハローワールド編~ – Qiita](https://qiita.com/tsumasakky/items/07105da031340257065e)
[【Python】0からWe

元記事を表示

Python の pip で保存してる各パッケージの内容を一行でまとめてみた

# pip でダウンロードするパッケージっていっぱいあるよね
PC水没したので新PCでpython環境構築中
せっかくきれいな環境なのでこの際インスコする各ライブラリを一言でまとめてみた(随時追加)。
初心者につき指摘コメントいただけるとありがたいです。

# 各種 package
## appdirs
アプリごとに使われるuser_info, log, config, cacheなどの保存場所のpathに関連する処理をしてくれる

#### 使用例
“`
>>> from appdirs import *
>>> appname = “SuperApp”
>>> appauthor = “Acme”
>>> user_data_dir(appname, appauthor)
‘/Users/trentm/Library/Application Support/SuperApp’
“`

## certifi
certificate authority(CA)バンドルの場所pathを参照してくれる。Requestsライブラリでも使われてる。
#### 使用例

“`
>>> im

元記事を表示

【Python】動的にimportできるライブラリを自作しました

こんにちは!ぬこすけです!
pythonにはimportlibというモジュールを動的にimportしてくれる組み込みライブラリがあるのですが、それをもっと使いやすくするようなライブラリを自作しました!

* github:https://github.com/hiroki0525/autoload_module

## このライブラリでスバリ何ができる?
パッケージ名を指定することで、**配下のモジュールを動的にimportした上で、モジュールで定義されているクラスオブジェクトを取得することができます!**
具体的には次のようなPythonコードを書くことができます!

* ディレクトリ構成

“`
project/
├ example.py
└ validator/
├ validator_a.py
├ validator_b.py
└ validator_c.py
“`

* validator_a.py

“`python
class ValidatorA:
# bとcも同様
def valildate(self, input):

元記事を表示

結局、Pythonで型比較をするには何を使えばよいのか

# `is`と`==`の違い
`==`は、「同じ値かどうか」で判断するのに対し、`is`は「同じオブジェクトかどうか」で判断します。
例えば、以下の例で言うと、

“`python
>>> a = “hello”
>>> b = “hello”
“`

どちらも同じ値を持つオブジェクトのため、`==`で比較した場合`True`を返します。

“`python
>>> a == b
True
“`

が、`is`は「同じオブジェクトか」で判断します
Pythonでは、オブジェクトを生成するとそのオブジェクトに一意の番号が振られます。`is`は、その番号で判別します。
番号は`id()`で確認できます。

“`python
>>> id(a)
2827074142256
>>> id(b)
2827074145520
>>> a is b
False
“`

# `isinstance`でも型を比較できる
`isinstance`はオブジェクトのクラスを比較する関数です。
別のクラスを継承していた場合、親クラスと比較しても`True`を返します

“`python
>>> c

元記事を表示

pythonでgmailアカウントを使って添付ファイルをメールで送る。

# 準備するもの
– Gmailアカウント作成
– 「安全性の低いアプリを許可する」をオンに設定
– https://myaccount.google.com/lesssecureapps

# コード
“`python
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email import encoders
from email.utils import formatdate
import smtplib
import ssl

if __name__ == ‘__main__’:
# Gmailアカウント情報(★要設定★)
mail_username = ‘作成したGmailアカウント名’
mail_password = ‘作成したGmailアカウントのパスワード’

# メール情報(★必要に応じて変更★)
body = ‘ここは本文

元記事を表示

【Python・GAS】小説家になろうを縦書きでまとめて読める自分用Web APIを作って、ついでにLINEボットにしてみた話。

#はじめに
皆さん、自粛生活楽しんでますか?
自分は大学に入れないので、家で研究と全く関係ないプログラミングの勉強をして過ごしてます。~~研究より楽しい…~~

それと、読書をする時間も増えました。
読書と言っても小説家になろうを読んでいる割合が高いんですけどね。

というわけで、そんな自粛生活を少しでも快適にするべく、

**小説家になろうの作品を、縦書きで、数話まとめて読める**

そんなWebAPIを作ってみました。

#動作
今回作ったWebAPIは、

——– [なろう小説API](https://dev.syosetu.com/man/api/) ——–

**指定した単語で小説を検索**
  ↓
**総合ポイントの最も高い作品を選択、NCODEを取得**
  ↓
——– [なろう小説API](https://dev.syosetu.com/man/api/) ——–
  ↓
**指定した範囲の話をスクレイプ**
  ↓
**縦書きで小説っぽい形のHTMLに整形**
  ↓
**提供**

という流れで処理をしています。

スマ

元記事を表示

【Python】youtube-dlでダウンロード場所を指定する方法

youtube-dlでダウンロード場所を指定する方法です。youtube-dlはターミナルからYouTube動画のダウンロードができる最高にモダンなモジュールです。mp3にも対応しているため、音楽のみのダウンロードなんかもできます。

## youtube-dl

youtube-dlとは、YouTubeからYouTube動画をダウンロードする、コマンドラインで動く、ツールです。
[GitHub](https://github.com/ytdl-org/youtube-dl)

参考
https://qiita.com/ssh0/items/ca9adc000eeca8b180f4

## インストール

youtube-dlを、pipでインストールしていきたいと思います。

“`tarmnal.
$ pip install youtube-dl
“`

brewでインストールする場合

“`tarmnal.
$ brew install youtube-dl
“`

## YouTube動画をダウンロード

“`tarmnal.
$ youtube-dl ‘YouTube動

元記事を表示

「コメントを全く書かない」プロジェクトに1年従事して思ったこと

# 初めに
私はSESでエンジニアをしています。そのためいろいろな現場に参画して開発をすることが仕事なのですが、**コメントを全く書かない**~~どころかドキュメントもあんまりない~~という思想のチームに1年従事したときに感じた事を書いた記事です。

開発にはJava,Pythonを利用しているので、これらの言語でサンプルを記載しています。

# 良かったこと
まずは良かったことです。大きく分けては

– 自身のコーディングスキルの向上
– 文章力の向上

の2点です。

## 自身のコーディングスキルの向上
コメントがまったくない。という状態でコードを書いていく場合には、**変数名、メソッド名等の命名が非常に重要です。**もはや命名さえちゃんとできればコーディング自体はそんなに大変でないといってもいいかもしれません。
SIerの案件では**コメントは多く書け**という思想が多いです。そのため、これまでのコードは以下のような感じでした。

“`java:Sample1.java
/**
* Listを受け取り、偶数を抽出したListを返却する。

元記事を表示

PythonとOpenCVで輝くいのち

# まずは背景の白色画像

“`python
import numpy as np
import matplotlib.pyplot as plt
import cv2

# back groud
back = np.ones((512, 512, 3), np.uint8) * 255
“`
![download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323251/c7bbe813-532c-af5b-a72c-50c52a1ff89a.png)

# 次にいのち本体

“`python
# red circle
cv2.circle(back, (80, 160), 53, (231, 0, 18), -1)
cv2.circle(back, (160, 186), 47, (231, 0, 18), -1)
cv2.circle(back, (162, 115), 47, (231, 0, 18), -1)
cv2.circle(back, (225, 60), 50, (231,

元記事を表示

pyenvとpyenv-virtualenvの自分流使い方

# はじめに

同僚に「Pythonの開発環境って pipenv 一択ですよね」と言われて「いや、自分は pyenv + pyenv-virtualenvで不自由していないんだよな」と思いながらも「こう使えば良いよ」と渡せるものが無かったので書くことにしました。

# pyenv / virtualenv とは

pyenvおよびpyenv-virtualenvに馴染みのない方に向けて説明しておきます。

まず、pyenvは「一つのマシンに複数のバージョンのpythonをインストールしてそれを切り替えて使える仕組み」です。例えば「新しいプロジェクトでは最新の3.8.5を使うけど、メンテナンスモードに入っている古いプロジェクトでは 3.6.9を使わなければならない」という時に一々Pythonをインストールし直していたら面倒ですよね。そんな時にpyenvを使えば複数のバージョンのPythonをインストールできて、それを切り替えて使うことができます。

そして virtualenv は「あるバージョンのpython環境を複数持つ仕組み」です。これによって「pythonはシステム全体で依存ライ

元記事を表示

pythonでinputを使って見よう

#記事の対象者
・inputを使って見たい人
・使い方でエラーが出て困っている人
※googlecolaboratoryでスクリプトを実行します。
#inputの使い方を知る
コードを先に書いてから解説します。

“`python
age = input(“年齢を入力してください”)
typle(age)

# 実行結果
年齢を入力してください50

str
“`

まず始めにinputの入力を保管する変数(ここではageを使っている)を作り=を使って入力結果を変数に代入しています。後はカッコ内に””で囲った入力を促すメッセージを入力したら完成です。しかしinputで帰って来る引数は全てstr型(文字列を格納する型)になっているのでそのままでは、数値を入力してその数値を元に計算する事が出来ないので、次のようなコードを打って見てくだいさい

“`python
age = float(input(“年齢を入力してください”))
type(age)

if age >= 20:
print(“大人だよーん!!”)
else:
print(“子供だよーん!!”)

# 実行結果

元記事を表示

PCでpythonを使ってNetflixに自動でログインしてみる

#pythonを使ってNetflixに自動でログインしてみる

__初めに__
今回の投稿が初めてなので不足しているところが多々見受けられると思いますが、温かい目で見守って下さい。
更に、自分は初心者なので探り探りで作成したコードで分かりずらい部分も出て来ると思いますが、ご了承のほどお願い致します。

#概要
・seleniumを使ってwebを操作する

__本題へ__

pythonでwebページを操作できると言ったらseleniumである。この記事ではpythonでseleniumを介してChromeを操作するための環境構築と基本的な使い方については省略させて頂く。

#実際にコードを書いてみる

__seleniumからwebdriverをimportする__

とりあえず、必要なモジュールをimportしておきましょう

“`python:netflix.py
from selenium import webdriver
from selenium.common.exceptions import WebDriverException
from selenium.webdr

元記事を表示

犬ですが何か?Django–クラスベースビューでURLから取得した値を使うの巻

#クラスベースビューを使う

柴犬のぽん太です。飼い主に連れられてローソンに行きました。犬は店内に入れないので外で待っていたらからあげクンを買ってきてくれました。飼い主はPontaカードにポイントを貯めているようです。名前が同じなのにPontaカードの方はたぬきのキャラクターです。

さて、今日はクラスベースビューで表示してみます。最大の問題はどうやってURLから取得した値をクラスベースビューに渡すのか、ということになります。

## urls.py
とりあえず、urls.pyはこのようになります。

“`wan/urls.py
from django.urls import path
from . import views

app_name = ‘wan’

urlpatterns = [
path(‘//’, views.WanView.as_view(), name=’index’),
]
“`

views.pyにはWanViewを定義するつもりなので、”views.WanView.as_view()”としています。as_v

元記事を表示

【Scipy入門】Lorenz曲線とGini係数の計算♬

昨夜の総合問題のLorenz曲線とGini係数は、調べてみると奥が深そうということで、調べたことまとめておこうと思う。
###やったこと
・Lorenz曲線
・Gini係数
・Scipyで数値積分
・導出
###・Lorenz曲線
Lorenz曲線とは、
「例えば収入分布を調べる場合、収入をカテゴライズする。カテゴライズされた収入を小さい順に序列化する。そのカテゴリーに属する人数を並列する。それぞれの累積値を計算する。それぞれの累積最大値を1に規格化する。そして、縦軸に規格化された収入累積値、横軸に序列化した順序の規格化数値を描いたとき現れる曲線を云う」
今回は、昨夜の学生の得点分布でLorenz曲線を描く。ここでは、人数が少ないので、カテゴライズせずに序列化・累計のみ実施する。
昨夜のデータから、G1の得点分布は以下のとおり描ける。

“`py
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#データ取り込み
student_data_math = pd.read_csv(‘./chap

元記事を表示

Pythonのインストールと基本文法

# 概要
PythonのインストールとPythonの公式チュートリアルで学習したことをまとめました。

# 開発環境
– OS:MacOS Mojave 10.14.6
– Python 3.8.5

# インストール
## 1.pyenvのインストール

“`
git clone git://github.com/yyuu/pyenv.git ~/.pyenv
echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.zshrc
echo ‘export PATH=”$PYENV_ROOT/bin:$PATH”‘ >> ~/.zshrc
echo ‘eval “$(pyenv init -)”‘ >> ~/.zshrc
“`

## 2.pyenvの利用方法とpythonのインストール
pyenvでインストール可能なPythonのバージョンを確認します。

“`
pyenv install –list
“`

インストール可能なバージョンのPythonをインストールします。

“`
pyenv install 3.8.5
“`

使いた

元記事を表示

SIGNATE Quest③ 宿泊価格推定

#もくじ:回帰問題の処理手順

①欠損値の処理(①と②を繰り返す)
②基本的手順に沿ってデータの特徴を把握する
  基本統計量
  可視化
③特徴量生成
④重回帰モデルの作成と予測の実行
⑤予測結果の評価(RMSE)
⑥モデルの予測精度改善(⑤に戻る)

#欠損値の処理

![2020-08-24_23h38_36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/677c37ac-cf73-fe66-d9a6-c0c0a623aeb1.png)

![2020-08-24_23h39_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/78fe6726-8d09-2e53-2ba5-60894e62944a.png)

![2020-08-24_23h39_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35

元記事を表示

sklearn.metrics.ConfusionMatrixDisplayを使った混合行列の可視化

scikit-learnを利用すると簡単に混合行列の可視化は可能だが、[sklearn.metrics.plot_confusion_matrix](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.plot_confusion_matrix.html) は**estimatorが引数に必要になる**。可視化するだけなのでestimatorが不要な方法はないかと調べていたら [sklearn.metrics.ConfusionMatrixDisplay](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.ConfusionMatrixDisplay.html) が見つかったので簡単にコードを書いてみた。

“`python

import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.metrics

元記事を表示

RとPythonのDocker作業環境の構築

# 前提
* WSL2でdocker環境を構築していること
(構築方法は以下で紹介)
* コマンドプロンプトを管理者権限で開いて、WSL上で操作していること

[WSLでdockerの環境構築](https://qiita.com/SeijMura/items/a61f3d8d693d7c9f4efb)

# Dockerfile

以下のコードを、ローカルの作業ディレクトリ内に”Dockerfile”という名前で配置してください。

~~~docker
FROM ubuntu:18.04

# set timezone
RUN apt-get update \
&& apt-get install tzdata \
&& ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
RUN date

# install packages
RUN [“/bin/bash”, “-c”, “\
apt-get update \
&& apt-get install -y \
vim \
buil

元記事を表示

簡単にRESTful APIのラッパーを開発するライブラリ「apywrapper」

## TL;DR

– 「[apywrapper](https://github.com/sh1ma/apywrapper)」というライブラリを開発した

– 爆速でAPIラッパーが開発できる
– RESTfulなAPI__のみ__をサポート
– https://github.com/sh1ma/apywrapper

APIのラッパーを作るときに考えることはリクエスト処理やレスポンスデータのシリアライズなど様々あると思いますが、真にデータを欲しているとき、それらについて考え、悩むのは時間の無駄と言えるでしょう。

_サーバにパラメータを投げると、レスポンスにオブジェクトが返ってくる_

実際、やりたいのはこれだけのことです。

それを`apywrapper`で実現するコードを紹介します

## 例

“`python
from dataclasses import dataclass
from apywrapper import Apy

api = Apy(host=”https://example.com/api”, headers={“api_token”

元記事を表示

RSSのデータをZabbixへ格納する(外部チェック編)

 RSS のアップデートを Zabbix で監視する仕組みを簡単に作ってみました。Zabbix 単体の機能では実装できないため。Zabbix の外部チェックを使用し実装してみました。
 RSS をテキストに出力し、前回との差分を取得するという形でも良かったのですが、Zabbix サーバに障害が発生し、別のサーバで稼働させるとなったときに、チェック用のファイルをわざわざ移すのは面倒だし、絶対に忘れると思い、外部チェックを選択しました。

## 環境
– CentOS 8.0 (インターネットへアクセスできること)
– Python 3.6
– Zabbix 5.0

## 実現したこと
– Python を使って RSS を取得する
– 前回からのアップデート分を取得し、Zabbix のアイテムへ格納する

## ここではお話しないこと
– Python の初期設定方法
– Zabbix のインストール方法
– Zabbix の一般的な機能説明

## Pythonで実現したこと
 Python では、RSS をインターネット経由で取得し、タイトル、更新日を取得し、1行に書き出すという処

元記事を表示

OTHERカテゴリの最新記事