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

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

Atcoderの過去問精選10問をpythonで解いてみた!

# はじめに
 Atcoder初心者です。練習のためにこの記事の問題([AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~](https://qiita.com/drken/items/fd4e5e3630d0f5859067#5-%E9%81%8E%E5%8E%BB%E5%95%8F%E7%B2%BE%E9%81%B8-10-%E5%95%8F))をpythonで解いてみました。

## 第 1 問: [ABC 086 A – Product](https://atcoder.jp/contests/abc086/tasks/abc086_a)
“`python
a, b = map(int, input().split())
if (a*b)%2 ==0:
print(‘Even’)
else:
print(‘Odd’)
“`

## 第 2 問: [ABC 081 A – Placing Marbles](https://atcoder.jp/contests/abc081/tasks/abc081_a)
“`p

元記事を表示

【Python】汎用コンテナとclassを相互に変換する

## ざっくり要約
かなり間が空きましたが、以前書いた記事の続編的位置づけです。
今回作ったものは[github](https://github.com/akio-1978/object_converter)に上げました。pipでインストールできる形にしてあるのは自分用です。

#### やりたかったこと
1. jsonで受け取ったデータ構造をちょこちょこ処理して、別のデータ構造でDynamoDBにputしようとした。
2. dictやlistを直接操作するコードが増えてうんざり。**意味のあるデータ自身に振舞いを持たせたい**というオブジェクト指向気取りな気分になる。
3. ならばclassに変換してしまおう。処理結果のクラスをdictに変換してしまおう。

#### 実際にやったこと
1. 「dictやlistなどの汎用コンテナで作られた構造」を「任意のclass構造」に変換する。それと、その逆。[^generic-conteiners]
2. 変換ルールを定義するためのマッピングをdictで作って、それに従って変換するクラスを作りました。
3. 使用例をユニットテストで紹介します

元記事を表示

Python入門(Python版 APG4b)

# 本記事について
競技プログラミングサイトの [AtCoder](https://atcoder.jp/home) にはプログラミング入門教材の「[AtCoder Programming Guide for beginners (APG4b)](https://atcoder.jp/contests/APG4b)」があります。プログラミング入門教材として非常に完成度が高く、競技プログラミングの主流言語である C++ が使われています。
そこで、本記事では APG4b を元に、それの Python 版を書きました。基本的には APG4b を読み進めて、Python 独自の部分は本記事を参考にして頂ければと思います。

大部分が APG4b を元にしているため、本記事が問題あるようでしたらすぐに削除します。

各節の見出しが本家へのリンクになっています。
節タイトルは本家に合わせているため、Pythonの用語と一部異なる部分もあります。

# 目次
[1.00.はじめに](https://qiita.com/saba/items/b9418d7b54cce4b106e4#100%E3%

元記事を表示

Pythonでオウム返しをするLinebotのエラー対応

#はじめに
QiitaやWEB上には、オウム返しLinebotの作り方は、たくさんあります。

参考
https://qiita.com/kro/items/67f7510b36945eb9689b

【Python初心者! -LINE Botでオウム返し編-】

これらを参考に進めれば、基本作成完了しますが、
Herokuデプロイ時にエラーがたびたび発生し、私が初心者であるが故、エラー解消が結構大変でした。
なので、私が遭遇したエラーについて、対処法を記述していきます。

#開発環境
OS:Widows10
Python3.7.6
Flask1.1.1
line-bot-sdk1.15.0
#準備するファイル群
まず、main.py
サイトに載っているコピペで構わないと思います。
特に書き換えは必要なくいけました。

“`python:main.py

from flask import Flask, request, abort

from linebot import (
LineBotApi, WebhookHandle

元記事を表示

【初心者向け】Anacondaインストール後にやるべきこと

# はじめに
– タイトルの通り、Anacondaインストール直後にやるべきことのメモです。
– 初心者向けです。とはいえ、他のプログラミング言語経験があって、機械学習とかそこそこ複雑なことがやりたい人向けです。
– 環境:
– windows 10(OS依存の話は少な目です)
– Anaconda3-2019-10
– Anacondaをインストールした直後からパッケージを追加しようとする前の話です。
– 必要な情報は基本的には別サイトで説明されていますので、まとめというかほぼ備忘録となります。

# パッケージ管理ツールについて理解する
– 機械学習、webアプリ開発など、特に業務でpython使う場合には、基本的に自分で必要なパッケージを追加していくことになります。
– パッケージの追加方法について、Webの情報では、それぞれ異なるパッケージマネージャーのどれかを前提としての説明が多く、単純にコピペではなく自分で違いを理解して必要に応じて書き換える必要があります。
– ということで`conda`(パッケージ管理ツールとして), `pip`, `conda-forg

元記事を表示

[Python 入門] pandasを使ってみよう

#[Python 入門] pandasを使ってみよう
第3回になります。今回は題材の日経平均らしいことをやっていきます。
まずいつもどおりcsvデータを読み込んでおきます。

“`
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import datasets

plt.style.use(‘ggplot’) #おまじない
font = {‘family’ : ‘meiryo’}

nikkei = pd.read_csv(“nikkei.csv”, parse_dates=[‘データ日付’]) #csvデータを読み込む
nikkei.head() #概要を見てみる
“`

#日時収益変動率とヒストグラム
最初に日時収益変動率を計算して、図に表してみます。

“`
nikkei[‘Day. Change P’] = (nikkei[‘終値’] – nikkei[‘始値’]) / nikkei[‘始値’] #日時収益変動

元記事を表示

Selenium on Python : Webdriver.Chrome()でエラーが出た話

Webスクレイピングの初導入にて、以下のエラーが発生。
1.’chromedriver’ executable need to be on PATH
2.cannot find Chrome binary

##結論
1.chromedriver.exeがある場所にPATHを通す or webdriver.Chrome(‘chromedriver.exeのパス’)
2. Googleブラウザがなぜか見つからないのが原因→PATHにブラウザのPathを登録し再起動

##環境
Windows 10 or Ubuntu18.04 LTS
Python 3.8.1
selenium 3.141.0

## seleniumとは
Web操作をプログラミング言語で行えるサードパーティ(pipを用いてインストール)

“`powershell:cmd
(vitualforwin) C:~:~:~> pip install selenium
“`

##エラーが出たコード

“`python:first.py
from selenium import webdriver

driver =

元記事を表示

python モジュールimport方法について

importとかfromとかよく使うけどなんとなくで使っていてよくわかっていないのでまとめる.

pythonだとpath周りとかかなりめんどくさい印象があるけどそれをなんとかできたらいいな

大部分を[入門python3](https://www.amazon.co.jp/%E5%85%A5%E9%96%80-Python-3-Bill-Lubanovic/dp/4873117380)から学んでいます.

## インポート方法まとめ

| Left align | Right align |
|:———–:|:————:|
| モジュールを読み込む | import module |
| モジュールからメソッド,クラスを読み込む | from module import method, class |
| パッケージからモジュールを読み込む | from package import module |
| パッケージの中のモジュールのメソッド,クラスを読み込む | from package.module import method, class |

元記事を表示

[Python 入門] pandasを使ってみよう

#[Python 入門] pandasを使ってみよう
前回の続きと改善していきたい点を紹介します。
さてこんな感じで図ができていました。
![2020-02-06 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574563/8b684549-9499-b451-ec4d-5611cf118c46.png)
(前回は”matplotlib”の設定がわからず軸名に日本語が使えていませんでした。今回は修正したため、図の軸名が日本語で表示できています。)

さてもう少しこのデータで遊んでみましょう。前回の続きのコードとなります。

“`
nikkei.corr()
“`

とすると相関関係の表が得ることができます。

“`
ax = sns.heatmap(nikkei.corr(), annot=True)
“`

さらにとすればヒートマップというものを作ることができます。こんな感じ…
![2020-02-06 (1).png](https://qiita-image-store.s3

元記事を表示

Hello world!から始めるPython

## はじめに
Pythonを始める初心者向けの記事です。
今回は”Hello world!”を出力するプログラムを書いてみましょう。

## 何故”Hello world!”から始めるのか
言語を学ぶにあたり、まずは文字列の出力という一番簡単な操作を実践してみることはとても大切です。

例えグーグルの超優秀なAIエンジニアであっても、最初の一歩は必ず”Hello world!”からだったはずです。

AIエンジニアを目指した駆け出しエンジニアのあなたも、さっそく”Hello world!”をpythonで記述してみましょう。

## 環境構築
Macではpython2.7がデフォルトでインストールされているので環境構築は不要です。
Windowsを使っている方はMacを買いましょう。

## Pythonの起動
terminalを開いて、次のワンコマンドでpythonが起動できます。

“`
python
“`
## Hello world!の出力
`import __hello__`コマンドを利用します。

“`
>>> import __hello__
Hello wo

元記事を表示

jinja2のget_template()のパスをカレントディレクトリに依存させない

パステンプレートファイルのパスが間違っているとこんなエラーが出る(検索用)

“`python3
jinja2.exceptions.TemplateNotFound: xxxx.html
“`

* デフォルトではFileSystemLoaderに渡すパスをルートとして相対パスでファイルを検索するようになっている
* 仮に`’.’`と指定するとカレントディレクトリからの相対パスになる
* そこでこのコードを書くファイル自体の絶対パスをルートにすることによって実行場所、ファイルの配置場所を選ばなくなる

“`python3
from jinja2 import Environment, FileSystemLoader
from os import path
env = Environment(loader=FileSystemLoader(path.dirname(__file__)))
template = env.get_template(‘template.html’)
“`

元記事を表示

TF-IDFを実装してみた

最近TF-IDFについてのコードをPythonで書いたので、それについて自分なりにまとめておきます。解釈違いなところなどありましたら指摘してください。
ソースコードはこちら:[Github](https://github.com/hatopoppoK3/NaturalLanguageProcessing/blob/master/TF-IDF/)
# TF-IDFとは
wikipediaから引用 https://ja.wikipedia.org/wiki/Tf-idf
> tf-idfは、文書中に含まれる単語の重要度を評価する手法の1つであり、主に情報検索やトピック分析などの分野で用いられている。 tf-idfは、tf(英: Term Frequency、単語の出現頻度)とidf(英: Inverse Document Frequency、逆文書頻度)の二つの指標に基づいて計算される。

文書の中での単語の重要度を表すものであり、その文書の特徴などを知りたいときに使います。TF値とIDF値を掛け合わせたものがTF-IDF値になります。

## TF(Term Frequency 単語の出

元記事を表示

Pythonによるプログラミング時に使用するライブラリ【開発分類別】

# 概要

Pythonは「pip」が優秀で、情報もあふれているので最近よく使用しています。
ここでは、一つ一つのライブラリの使い方については説明しません。開発分類別に私が採用しているライブラリを列挙し、ライブラリの導入方法について説明します。

# 開発環境

私は特別にこだわりはないので「Anaconda」を使用しています。本当はLinux PCで「virtualenv」を使用し環境を組みたいと思っているけれど、すでにWindowsで環境を組んでしまっているので、面倒くさがっています。

# 開発分類

– Webアプリ開発
– 組込みソフトウェア(センサ制御)
– デスクトップアプリ
– 画像処理
– 機械学習

## Webアプリ開発
サーバサイドのプログラムを作成できます。私が採用していているのは「**flask**」です。PythonのWebフレームワークとしては「Django」ですが、こちらは機能もりもりのフレームワークです。それに対し、flaskは機能は単体では機能が少ない代わりに、覚えることが少ないです。

flaskはサーバサイドレンダリングできるのですが、そのう

元記事を表示

クラスの多重継承

“`py:1
class Person(object):
def talk(self):
print(‘talk’)
def run(self):
print(‘person run’)

class Car(object):
def run(self):
print(‘car run’)

class PersonCarRobot(Person, Car):
def fly(self):
print(‘fly’)

person_car_robot = PersonCarRobot()
person_car_robot.talk()
person_car_robot.run()
person_car_robot.fly()
“`

“`:1の実行結果
talk
person run
fly
“`
PersonCarRobotクラスは、
PersonクラスとCarクラスの両方を継承している。
なので、
両方のクラスのメソッドを持っている。

ここで、
PersonクラスもCarクラス

元記事を表示

【お手軽Python】pandasによるExcelファイル読み込み

#pandasとは
pandasとは、Pythonのライブラリです。
pandasは、主にデータを操作する時に使われます。AIや機械学習にpandasは必須です。
ですが、Excelのファイルを操作する機能も搭載されています。
今回は、pandasを使ったExcelファイルの読み込みの仕方について説明していきます。

#Excelファイル読み込み

###最初のシートのみの読み込み

sample.xlsxの中身が
![bandicam 2020-01-20 16-36-57-804.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240459/c815e4d5-f406-100b-39f2-fa83c8fe0fba.jpeg)
だった場合

“`python:main.py
import pandas as pd
df = pd.read_excel(‘sample.xlsx’)
print(df)
“`

上記のmain.pyを実行すると
![bandicam 2020-01-20 16-44-4

元記事を表示

[Python3 入門 23日目]12章 パイソニスタになろう(12.1〜12.6)

#12.1 コードのテスト

##12.1.1 pylint、pyflakes、pep8によるチェック

“`py:style1

a=1
b=2
print(a)
print(b)
print(c)

“`

“`py:実行結果

$ pylint style1.py
************* Module style1
style1.py:1:1: C0326: Exactly one space required around assignment
a=1
^ (bad-whitespace)
style1.py:2:1: C0326: Exactly one space required around assignment
b=2
^ (bad-whitespace)
style1.py:1:0: C0114: Missing module docstring (missing-module-docstring)
style1.py:1:0: C0103: Constant name “a” doesn’t conform to UPPER_CASE naming

元記事を表示

PythonでmongoDBを操作する~その6:aggregate編~

#当記事の記載範囲
この記事ではPythonでmongodbに接続してから、aggregate(SQLで言うところの集計関数)の使い方について記載します。
mongodbの起動やpymongoのインストール方法については以下の記事をご覧いただければ幸いです。
https://qiita.com/bc_yuuuuuki/items/2b92598434f6cc320112

# 準備データ
準備データは以下の記事でmongoDBに突っ込んだQiitaの記事情報を使用します
[[Python]Qiitaの記事情報をmongoDBに突っ込んだ](https://qiita.com/bc_yuuuuuki/items/3b89a4b4ac26a43eb20a)

# aggregateの使い方
mongoDBのaggregateの使い方はSQLに慣れているとイマイチピンと来ないです。
下表がSQLとaggregateの対比表です。

|SQL |aggregate |
|—|—|
|WHERE |$match |
|GROUP BY |$group |
|HAVING |

元記事を表示

【python3】いずれかの文字列が含まれるかの判定

またまたメモ書きの駄ブログ。

# 概要

以下のプログラムで期待する処理が動いたことは確認できた。

“`python
if ‘soccer’ in hogehoge or ‘baseball’ in hogehoge:
“`

しかし数が多いとプログラムが横に長くなるので、
まとめて判定できないかとふと思った。

# テストその1

“`python
if {‘soccer’, ‘baseball’} in hogehoge:
“`

これはTypeError。
なんか色々と間違ってる。

# テストその2

“`python
import re

try:
re.search(‘(soccer|baseball)’, hogehoge).group(1)
except AttributeError:
pass
“`

これは出来そうだけど例外処理が入るので1行で書けない。

# テストその3

“`python
import re

if re.search(‘(soccer|baseball)’, hogehoge) is not None:
`

元記事を表示

【python】mock.patchでクラス関数を置き換える際にselfパラメータが通常引数扱いとなる

## はじめに
mock.patchを使ってクラス関数をテスト用に作成したクラス関数に置き換えたいのだが、
テスト用クラス関数のselfが通常引数扱いされ、引数の数が合わずTypeErrorが発生して詰まった。

解決したのでメモ

## 失敗例

“` test_human.py
import unittest
from unittest.mock import patch

class Human:

def set_name(self, name):
self.name = name

def get_name(self):
return self.name

class TestHuman(unittest.TestCase):
def test_human(self):
“””Human クラスの get_name を常に “しげる” を返す関数に置き換える”””
with patch(‘test_human.Human.get_name’) as get_name_mock:

元記事を表示

Python3でgcloudコマンドを動かせるようにする

# tl;dr;
“`bash
export CLOUDSDK_PYTHON=3
“`

# 説明

`pyenv` 等でpython3, gcloudをインストールした環境では、gcloud実行時に以下のようなエラーが出ることがある。

“`
$ pyenv local
3.7.4
$ gcloud
pyenv: python2: command not found
The `python2′ command exists in these Python versions:
2.7.17
“`
gcloudがpython2でしか動作しないのかというとそうではなく、
ドキュメントにはGoogle Cloud SDK version 274.0.0以降であればpython3.5以上で動作する(GA)と書いてある。
https://cloud.google.com/sdk/docs/?hl=en
> As of Cloud SDK version 274.0.0, the gcloud CLI has GA support for running using a Python

元記事を表示

OTHERカテゴリの最新記事