- 1. 【Python】0からWebアプリ!ハンズオン(4)~データ成形編~
- 2. Python の pip で保存してる各パッケージの内容を一行でまとめてみた
- 3. 【Python】動的にimportできるライブラリを自作しました
- 4. 結局、Pythonで型比較をするには何を使えばよいのか
- 5. pythonでgmailアカウントを使って添付ファイルをメールで送る。
- 6. 【Python・GAS】小説家になろうを縦書きでまとめて読める自分用Web APIを作って、ついでにLINEボットにしてみた話。
- 7. 【Python】youtube-dlでダウンロード場所を指定する方法
- 8. 「コメントを全く書かない」プロジェクトに1年従事して思ったこと
- 9. PythonとOpenCVで輝くいのち
- 10. pyenvとpyenv-virtualenvの自分流使い方
- 11. pythonでinputを使って見よう
- 12. PCでpythonを使ってNetflixに自動でログインしてみる
- 13. 犬ですが何か?Django–クラスベースビューでURLから取得した値を使うの巻
- 14. 【Scipy入門】Lorenz曲線とGini係数の計算♬
- 15. Pythonのインストールと基本文法
- 16. SIGNATE Quest③ 宿泊価格推定
- 17. sklearn.metrics.ConfusionMatrixDisplayを使った混合行列の可視化
- 18. RとPythonのDocker作業環境の構築
- 19. 簡単にRESTful APIのラッパーを開発するライブラリ「apywrapper」
- 20. RSSのデータをZabbixへ格納する(外部チェック編)
【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 sslif __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)# 実行結果
年齢を入力してください50str
“`まず始めに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 viewsapp_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/apywrapperAPIのラッパーを作るときに考えることはリクエスト処理やレスポンスデータのシリアライズなど様々あると思いますが、真にデータを欲しているとき、それらについて考え、悩むのは時間の無駄と言えるでしょう。
_サーバにパラメータを投げると、レスポンスにオブジェクトが返ってくる_
実際、やりたいのはこれだけのことです。
それを`apywrapper`で実現するコードを紹介します
## 例
“`python
from dataclasses import dataclass
from apywrapper import Apyapi = 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行に書き出すという処