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

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

Flask 単体テスト環境(test_client)

# 概要

FlaskのAPIテストをするのに「POST MAN」を使用していましたが、今更Flaskでの単体テスト方法を学んだんで備忘録。

# 例

テスト用のコードは「test.py」として別に分けています。「app.py」に簡単なルーティング設定をしています。

“`python:app.py
from flask import Flask, jsonify, request
app = Flask(__name__)

@app.route(“/”)
def home():
if request.is_json: # jsonのデータ指定
return jsonify({“msg”: “fault massage”}), 400
return jsonify({“msg”: “success message”}), 200

if __name__ == “__main__”:
app.run()

“`

今回はget通信としていますが、これはgetのところをpost等にすればその他通信が可能です。

“`python:test.py
import

元記事を表示

Pythonでのチームアプリ開発に参画するための学習履歴~Docker・Django・Nginx・MariaDB環境を構築する~

# はじめに

Pythonの基本をさらったところで次はDjangoに慣れていくために環境を構築して、企画主様の記事にちょうどDjangoの基礎のチュートリアルがあるので
それを行ったときのアウトプットです。

# 今回の記事を作成するにあたっての企画主様の記事

[Django(Python)でシステム開発できるようになる記事_入門編](https://qiita.com/Saku731/items/ed64190a12a4498b9446)

# 作る環境とディレクトリ構成

[docker-composeでdjango環境を作ってみる(MariaDB + Nginx + uWSGI)](https://qiita.com/laplap/items/f3f750cfcbcd6aeff094#%E5%8F%82%E8%80%83)
[Docker-ComposeでPython3.6+NGINX+MariaDB10+uWSGIのDjango環境欲張りセット](https://qiita.com/NickelCreate/items/bed3dc9d088b57127ba7)

上記2つ

元記事を表示

言語処理100本ノック2020年版が公開!どこが変わったの?

# はじめに
自然言語処理の基礎を楽しく学べる問題集として長らく親しまれてた言語処理100本ノック、その[2020年版](https://nlp100.github.io/ja/)が4/6に公開されました!これは5年振りの改訂です。
[2015年版](http://www.cl.ecei.tohoku.ac.jp/nlp100/)をやったけど興味ある人、15年版のQiita記事が役立たなくなって残念に思ってる人、15年版を途中までやってたけど20年版が出て心が折れそう、という人のために、どこが変わったのかをまとめていきます。もちろん非公式なので変更箇所の見逃し等はあるかもしれません。

# 改訂の概要
4/7現在、公式の[更新履歴](https://nlp100.github.io/ja/about.html)によると、次の3点が大きく変わったようです。

– 深層ニューラルネットワークに関する問題を追加
– 第8, 9, 10章が全て新規に作成された問題になっている
– 英語版の公開(39番まで)
– 40番以降も順次公開予定とのこと([著者Twitter](htt

元記事を表示

「株価データセット作成」と「AR(1)の実装」

# 本記事でやること
– 自分で株価のデータセットを作成し、AR(1)モデルを実装する。

# 株価データセットの作成
– 以下のURLにアクセスし、銘柄名を検索すると株価のcsvを取得できる。
– https://kabuoji3.com/stock/

# AR(1)の実装
– 上記で取得した株価のcsvを元に、AR(1)モデルを実装する。

## AR(1)を一言で
– 前日の株価で当日の株価を予測するモデル。

## 実装
### ライブラリ・モジュール

“`
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
“`

### 前処理

“`
# データをdfとして読み込む。
df = pd.read_csv(file_nm,

元記事を表示

Pythonでトポソを使って全方位木DPをする

# この記事でやること

Pythonでトポソを使って全方位DPをするのが目標です。最初にこの記事での実装方針を書いておきます。

### 実装方法

1. トポソを使う
1. 抽象化
1. 逆元がない場合にも対応
1. 左右累積和は配列を1つだけ持つ

記事としては、2. 抽象化 するための理論面の整備がメインになりそうです。

## 経緯

前回の記事の最後 に、気が向いたら全方位木 DP も書くと言ったら、早く気が向いてほしいと言われたので気を向けることにしました。

![全方位木DP_0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609864/c3345dc7-40bb-5397-ce46-3ed0a4585bea.jpeg)

元記事を表示

python超入門書にてpipで詰まった(from: can’t read /var/mail/PIL)

#使用している本について
 今回の件に出てくる本はSB Creativeの「[確かな力が身につくPython「超」入門](https://www.amazon.co.jp/確かな力が身につくPython「超」入門-確かな力が身につく「超」入門シリーズ-鎌田-正浩/dp/4797384409/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=python+%E8%B6%85&qid=1584289306&sr=8-3)」です。

#本題
 この本のChapter6では、外部ライブラリを用いた話をします。その例として、Pillowを用います。その際、pipコマンドを使用します。ここで一つ詰まったことがあり、調べてみたところネット上でも同じような悩みを持っている方がいたので記事にしました。まずは本の通りPillowをインストールし、指示通りにしてみましょう。

“`python
$ pip install Pillow # MacOSならば’pip’を’pip3’に変換してください。
(結果略)
$ fr

元記事を表示

Python で Uplift modeling

# はじめに
Uplift modeling は、マーケティング施策によって利益を最大化するための手法です。利益がより大きい顧客にターゲットを絞って、メール送付や広告配信などの施策を打つことで、マーケティングの効率化が実現できます。

この記事では、Uplift modeling の概要と、それを実現するための実装例を備忘録としてまとめます。

# Uplift modeling

## 概要
**Uplift modelingは、ある属性を持つ顧客の、施策実施による利益の増加分(施策を実施した場合の利益と実施しない場合の利益の差分)を予測する方法です。**通常の機械学習による予測タスクでは、施策に対して単純にどう反応するか(予約するか/しないか、予約金額はいくらか、など)を予測しますが、Uplift modelingでは、施策に対して反応がどう変化するか(予約確率や予約金額がどう変化するか)を予測します。顧客の施策に対する反応がどう変化するかを明らかにすることで、効果が高い顧客にのみ施策を実施するターゲッティングや、各顧客に適したマーケティング施策を実施するパーソナライゼーションが可

元記事を表示

Structural Patterns in Python

#Decorator
Decorators are great tools to add additional features to an existing object without using subclassing.

“`python
from functools import wraps

def make_blink(function):
“””Defines the decorator”””

#This makes the decorator transparent in terms of its name and docstring
@wraps(function)

#Define the inner function
def decorator():
#Grab the return value of the function being decorated
ret = function()

#Add new functionality to the function being decorated
return “

元記事を表示

poetryでrequirements.txtからパッケージをインストールしたい

# 概要
既存プロジェクトでのパッケージ管理をrequirements.txtで行っていたが、そのパッケージをそのままpoetryでinstallする際のメモ
poetryではrequirements.txtから直接インストールはできない

# 解決方法

poetry環境ではない場合はまずinitしておく

“`
poetry init
“`

requirements.txtの中身をfor文で回し、一つずつpoetry addしていく

“`
for package in $(cat requirements.txt); do poetry add “${package}”; done
“`

# 参考
https://github.com/python-poetry/poetry/issues/46

元記事を表示

Python&機械学習 勉強メモ⑥

#はじめに
① https://qiita.com/yohiro/items/04984927d0b455700cd1
② https://qiita.com/yohiro/items/5aab5d28aef57ccbb19c
③ https://qiita.com/yohiro/items/cc9bc2631c0306f813b5
④ https://qiita.com/yohiro/items/d376f44fe66831599d0b
⑤ https://qiita.com/yohiro/items/3abaf7b610fbcaa01b9c
の続き

– 参考教材:[Udemy みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習](https://www.udemy.com/course/learning-ai/)
– 使用ライブラリ:scikit-learn

#課題設定
手書きの数字画像(8×8 px)から、書いてある数字を認識する。

#ソースコード

##インポート

“`python
from sklearn import datasets
from skl

元記事を表示

Pythonで毎日AtCoder #29

### はじめに
[前回](https://qiita.com/taxfree_python/items/74513681aa0284050ddb)
おすすめの問題があったらコメントやtwitterでリプ飛して欲しいです。
### #29
[問題](https://atcoder.jp/contests/abc158/tasks/abc158_d)

**考えたこと**
最初は普通に実装(reverseマシマシ)していましたが、reverseはコストが高いのでうまく処理してあげる必要がある。文字を追加するのは先端か末尾の二つなのでdequeを使うことができる。また、逐一reverseしなくても前後のラベルを作ってreverseのたびに反転させればよい。

“`python
from collections import deque

s = deque(input())
q = int(input())
query = [input().split() for _ in range(q)]

reverse = False #前後を判定する
for i in query:
i

元記事を表示

【Pyro】確率的プログラミング言語Pyroによる統計モデリング① ~Pyroとは~

# はじめに
本シリーズでは,確率的プログラミング言語Pyroを用いて統計モデリングを行う方法について,いくつかの例題を交えながら紹介していきます.
例題には,書籍「[実践Data Scienceシリーズ RとStanではじめるベイズ統計モデリングによるデータ分析入門](https://www.amazon.co.jp/dp/B07WFD5RFS)」(KS情報科学専門書)に登場する例題を採用します.この本では題名の通りRとStanを用いてベイズモデリングを行っていますが,本シリーズでは同じ例題をPyroを用いて解いていきたいと思います.コーディングを通じて統計モデリングへの理解を深めるとともに,実データにもPyroを用いた柔軟なモデリングを適用できるようになることを目的として執筆します.統計モデリングそのものについての詳しい解説は書籍や他の記事に譲り,本記事では実装をメインに書きます.
読者としては.以下に当てはまるような人を想定しています.

– Pythonの基本的な使い方がわかる人
– ベイズ統計モデリングの基本を理解している人
– 柔軟かつスケーラブルな統計モデリングを行いたい

元記事を表示

pythonで複数のcsvファイルを1つのcsvファイルにまとめる(ヘッダーが1行だけの前提)

#はじめに
初めての投稿です。python初心者です。
設備などから吐き出された共通フォーマットのcsvファイルを複数まとめて1つのファイルにしたいと思い色々調べて作ったコードを紹介します。

2020/04/06追記
ヘッダーが一行かつ、きれいにすべてのデータがあるときに有効。
データが無い行があるとエラーになる可能性あるので注意。

#環境
– python3.x
– jupyter Notebook
– csv
– mac

#コード
実行場所にあるtestフォルダ内にフォーマットが同じcsvが大量にある想定。

“`python
import pandas as pd
import glob

# パスで指定したファイルの一覧をリスト形式で取得. (ここでは一階層下のtestファイル以下)
csv_files = glob.glob(‘test/*.csv’)

#読み込むファイルのリストを表示
for a in csv_files:
print(a)

#csvファイルの中身を追加していくリストを用意
data_list = []

#読み込むファイルのリストを走査

元記事を表示

【Python】茶色コーダーになりました〜【AtCoder】

#【祝】茶色コーダーになりました〜
12回目でようやく茶色コーダー!!!
一番初めは2重for文も書けなかったのですごい成長!!!
パチパチパチ(拍手)〜
スクリーンショット 2020-04-06 23.11.41.png

##茶色コーダーになるまでにやったこと
競プロ初心者に参考になるかも!
ということでこれまでやってきた事を記事として残しておきます!

###①けんちょんさんの記事をいろいろ読んでわくわくする!
一番最初に読んだ記事はこれ!
[AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~](https://qiita.com/drken/items/fd4e5e3630d0f5859067)
まずはこれを一通り見てから、実際にPythonで解いてみました!

元記事を表示

jupyterlab & matplotlibで作成したグラフのデータ点にリンクを貼る

# この記事について
記事タイトルの通りのことがやりたかった。
また使うことがあるかも知れないので、その方法を記録しておく。

# 手順
– matplotlib で リンク付きのグラフを作成
– `svg` 形式で保存
– Chrome などのブラウザでファイルを開く

# 環境
自分は jupyter-lab での作業でした。
バージョンはこんな感じ(pip freeze の結果より)

“`bash
jupyterlab-server==1.0.7
matplotlib==3.2.1
“`

# ファイル作成

“`python
# 各種設定
import matplotlib.pyplot as plt
from IPython.display import set_matplotlib_formats

set_matplotlib_formats(“svg”)

# テストデータ準備
data_list = [[0, 1], [1,0], [1,1]]
label_list = [‘google’, ‘yahoo’, ‘lightcafe’]
url_list = [

元記事を表示

Django 汎用クラスビューでファイルをアップロードする方法

2020-04-07 作成: windows10/Python-3.8.2-amd64/Django-3.0.4

Django でファイルを汎用クラスビューでアップロードする方法について、
日本語情報は意外と多くありません。
そのため、結構時間がかかってしまいました。
忘れないように記事にしておきます。
この記事は、ファイルのアップロードの原理を手軽に知りたい、という人向きです。

Django を初めて使う人は、こちら。
[10 分で終わる Django の実用チュートリアル](https://qiita.com/taiyaki/items/352d36cda37af74eb826)

# 前準備

プロジェクト名は mysite、アプリケーション名は fileupload とする。
フォルダ media を mysite/ に作成し、ファイルの保存場所とする。

ここまでのファイルの配置はこうなる。

“`
mysite/
mysite/
__pycashe__/ <- 気にしなくていい setting.py, urls.py など

元記事を表示

Pythonの環境構築 For Mac

pythonはまるっきり初心者で、触れたことがほぼないので環境構築からやります!

### PythonのVersion確認

Macにはpythonがpreinstallされているのでまずは確認。

$ python –version
Python 2.7.10

$ python3 –version
Python 3.7.7

あるので準備はこれでOK!

なんですが、ない場合や最新のpythonを利用したい場合は別途インストールする必要があります
pyenvをhomebrewでインストールしてpythonを落としていきましょう

### Pythonのインストール

$ brew install pyenv

bash_profileなどに環境変数設定などをしたら完了

$ echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.bash_profile
$ echo ‘export PATH=”$PYENV_ROOT/bin:$PATH”‘ >> ~/.bash_pro

元記事を表示

Python の基本②

前回より続いて書きます。

# リスト型
これまた基本的な
一つの変数に複数のデータを入れる方法です。

## リストの基本
直接データを入れることや
下記のように変数として、入れることも可能
また文字列や数値混在でもOK

“`python
apple = 4
grape = ‘グレープ’
mikan = 6

fruits = [apple, grape, mikan]

print(fruits)
# 出力 [4,グレープ,6]
“`

## 多重リスト
リストの中にリストを入れる方法です。

“`python

rei = [[1.2],[3,4],[5.6]]
# 上記が使い型の例です。

fruits_name_1 = “りんご”
fruits_num_1 = 2
fruits_name_2 = “みかん”
fruits_num_2 = 10

fruits = [[fruits_name_1, fruits_num_1], [fruits_name_2, fruits_num_2]]

print(fruits)
# 出力: [[“りんご”, 2], [“みかん

元記事を表示

西暦と和暦変換するメソッド

# 背景
– ただ書いてみた

# コード
“`python
def convert_year_to_wareki(year):
wareki_start_year = {
‘明治’: 1868, ‘大正’: 1912, ‘昭和’: 1926, ‘平成’: 1989, ‘令和’: 2019
}
if year < wareki_start_year['大正']: return f"(明治{year - wareki_start_year['明治'] + 1}年)" elif year == wareki_start_year['大正']: return f"(明治{year - wareki_start_year['明治'] + 1}年/大正{year - wareki_start_year['大正'] + 1}年)" elif year < wareki_start_year['昭和']: return f"(大正{year - wareki_start_year['大正'] +

元記事を表示

Python の基本①

最近Ai教室にお世話になってるので
まとめを書こうと思います。

# 基礎

## 出力
言わずしれた出力を。
使われてるクォーテーションはシングルでもダブルでも

“`python
print(‘Hello World’)
“`

## コメントの入力

“`python
# コメント
“`

## 計算
下記のように計算できます。
使えるのはこのように

・足し算:「+」
・引き算:「-」 
・掛け算:「*」
・割り算:「/」
・余りの計算:「%」
・べき乗:「**」

“`python
print(3+6)
# 出力結果
9
“`

## 文字列
クォーテーションで囲むと
文字列となります。

“`python
print(‘3+6’)
# 出力結果
3+6
“`

# 変数
続いて基本となる変数を

## 変数の基本

“`python
n = 3
# nが変数名、3が入れる値
print(n)
# 3と出力
print(n+5)
# 同じように演算でき、8と出力されます。
“`

### 使えるのは下記の3点

* 半角アルファベット(大文字、小文字)
*

元記事を表示

OTHERカテゴリの最新記事