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

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

Windows10上のPythonでAccessのDBを参照する

## mdb形式のファイルをPythonから参照したい
ふだんは、MacOSを使っているのでWindows環境でAccessのDBを単にselectするだけのツールならpythonであっという間にできるのではないかと考えたのですが、自分の知識と能力のレベルを感じた記録です
現在はまだ**接続ができたところ**までです

### 経緯
*Visual Studio*を使用しVisualBasicでAccessDBを参照するツールを作成してあった。
キーを入力して値を表示するだけの10行程度のツールなのですが、
そのためにVisual Studioの環境を整えないとなりませんでした。
『Visual Studioをインストールする方法』という記事もあるくらいで手間がかかります。もう少しこの部分の手間を省けないかと考えた経緯を記録しときます。
※ とはいえ、結果として**手間**という部分に関しては改善できたのかは疑問です:sweat:
振り返ってみると[YottaGinのページ](https://yottagin.com/?p=2909)で書かれていらっしゃることそのままに、私が躓いたこと

元記事を表示

引数がいくつ入るか分からない場合 *args 可変長引数

“`py:1
def greeting(word1, word2, word3):
print(word1)
print(word2)
print(word3)

greeting(‘こんにちは’, ‘おはよう’, ‘こんばんは’)
“`

“`:1の実行結果
こんにちは
おはよう
こんばんは
“`

“`py:可変長引数*argsを使って
def greeting(*args):
for arg in args:
print(arg)

greeting(‘こんにちは’, ‘おはよう’, ‘こんばんは’)
“`

“`:可変長引数*argsを使っての実行結果
こんにちは
おはよう
こんばんは
“`

引数に入れたいものをタプルに格納してから使う場合は

“`py:可変長引数*argsを使って2
def greeting(*args):
for arg in args:
print(arg)

t = (‘おはよう’, ‘こんばんは’)# タプルに格納
greeting(‘こんにちは’, *t)#

元記事を表示

【Jupyter Notebookメモ】matplotlibで漢字表示を行う

# はじめに
Jypyter Notenook上のmatplotlibで漢字表示をするための方法メモ。
以前は、もっとややこしい方法を使っていたが、こちらの方がシンプル。
Google Colaboratory とWatson Studioで動作確認済みです。

# コード

## ライブラリのロード
“`py3
# 必要ライブラリの導入
!pip install japanize-matplotlib | tail -n 1

# 必要ライブラリのimport
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 日本語化対応
import japanize_matplotlib #日本語化matplotlib
import seaborn as sns
sns.set(font=”IPAexGothic”) #日本語フォント設定

# データフレーム表示用関数
from IPython.display import display
“`

## サンプル表示のためボストンデータセッ

元記事を表示

OpenCVとPythonを使ったさまざまな画像処理まとめ

#背景
OpenCVとPythonを使ってさまざまな画像処理を行ってみました。流用しやすい形として残しておきたいので、よく使うグレースケール化、画像のリサイズや回転、エッジ処理、特徴量検出などをOpenCVで実装したコードと結果を残しておきます。

>OpenCV(オープンシーヴィ、英語: Open Source Computer Vision Library)とはインテルが開発・公開したオープンソースのコンピュータビジョン向けライブラリ。画像処理・画像解析および機械学習等の機能を持つC/C++、Java、Python、MATLAB用ライブラリ。プラットフォームとしてmacOSやFreeBSD等全てのPOSIXに準拠したUnix系OS、Linux、Windows、Android、iOS等をサポートしている。(参考:https://ja.wikipedia.org/wiki/OpenCV)

#目次
[1. グレースケール化:cv2.COLOR_BGR2GRAY](#1-グレースケール化)
[2. 画像サイズの変更:cv2.resize](#2-画像サイズの変更)
[3. 画像の回転:c

元記事を表示

[Python3 入門 3日目] 2章 数値、文字列、変数 (2.2〜2.3.6)

#2.2 数値
Pythonには整数(5や10000000などの小数点以下がない数値)と不動小数点数(3.12121,14.99,1.32e3など)のサポートが組み込まれている。

##2.2.1 整数
四則演算。
>>> 5
5
>>> 0
0
>>> 09
File ““, line 1
09
^
SyntaxError: invalid token #数字の前にゼロを置いてはならない。
>>> 123
123
>>> +123
123
>>> -123
-123
>>> 5+9
14
>>> 100-7
93
>>> 4-10
-6
>>> 5+9+3
17
>>> 4+3-2-1+6
10
>>> 6*7
42
>>> 7*7
49
>>> 6*7*2*3
252
>>> 9/5   #浮動小数点数(10進)徐算を行う
1.8
>>> 9//5  #整数(切り捨て)徐算を行う
1
>>> 9/0
Traceback (most recent call last):
File ““, line 1, in
Z

元記事を表示

​Python備忘録~個人的に興味を持った点~

# はじめに

なんちゃってなPythonの使いっぷり[^なんちゃって]に危機を感じて、現在、「Python 3 エンジニア認定基礎試験[^Python 3 エンジニア認定基礎試験]」の合格を目標として学習中の @daikikatsuragawa です。本記事では、Pythonの学習を通して、個人的に興味を持った点を備忘録として紹介します。気まぐれで随時更新、編集します。ご了承ください。

[^なんちゃって]: データ分析に取り組んでいた学生時代、Pythonを用いて12時間かかる計算を実施した。そのことを先輩に伝えたら「Pythonにはこんな書き方があって…」とアドバイスをいただき、その計算が10分くらいで完了するようになった。それくらい「Python」自体に疎い。
[^Python 3 エンジニア認定基礎試験]: [Python 3 エンジニア認定基礎試験](https://www.pythonic-exam.com/exam)

# 個人的に興味を持った点

### インタプリタを終了するコマンド

“`console
quit()
“`

### アクティベート状態から抜け

元記事を表示

django.db.utils.ProgrammingError: permission denied for table django_migrationsの対処法

`django.db.utils.ProgrammingError: permission denied for table django_migrations`のエラーの対処に苦戦したので書いておこうと思います。

このエラーが出たときpostgresqlのdjango移行を実行中に、接続ファイルで使用されているpostgresqlのユーザーに対して権限設定がなされてないことが原因みたいです。なのでpostgresqlのユーザーに権限を持たせようと思います。

コマンドから`psql -U postgres`でpostgresにログインします。

“`
>psql -U postgres

ユーザ postgres のパスワード:
psql (12.1)
“help”でヘルプを表示します。

postgres=#
“`

次に使用したいデーターベースにログインします。(database nameは使用したいデータベースを入れてください。)

“`
postgres=# ¥c database name
データベース”database name”にユーザ”postgres”とし

元記事を表示

関数のデフォルト引数でリストを与えてしまうと・・・

“`py:1
def test(x, l=[]):
l.append(x)
return l

y = [1, 2, 3, 4]
r = test(7, y)
print(r)
“`

“`:1の実行結果
[1, 2, 3, 4, 7]
“`

“`py:2
def test(x, l=[]):
l.append(x)
return l

r = test(100)
print(r)
r = test(100)
print(r)
“`

“`:2の実行結果
[100]
[100, 100]
“`

同じ処理を二回したつもりが、
二回目は100が二個になる。

これは、リストが参照渡しであるが為に起こる。
バグに繋がる事が多いため、
リストやデイクショナリーの様に参照渡しのものをデフォルト引数におかない。

そこで以下の様に書く。

“`py:3
def test(x, l=None):
if l is None:
l = []
l.append(x)
return l

y = [1, 2,

元記事を表示

【python再入門】親ディレクトリを経由したimportを行う方法

pythonで自作モジュールをimportする際の対処方法がよくわからなくなってしまったのでメモ

# 背景
pythonに限らずプラグラミングをしていると、最初1ファイルで記載していた処理を複数ファイルに分割したくなってきます。
そしてそのうち分割したファイルをディレクトリに分けて管理したくなります。
これらのディレクトリに分けて管理を始めたファイルをimportする際に少し工夫が必要で手間取ったので対応方法を残しておきます。

なお、細かいですが、パターンが以下の2つに別れます。この記事では1の方について記載します。
1. 実行ファイル内で親ディレクトリ経由のパスにあるモジュールをimportしたい場合

“`bash
.
├package1
│ ├__init__.py
│ └module1.py
└package2
├__init__.py
└module2.py
“`
↑実行ファイルがmodule1.pyで、module1.pyからmodule2.pyを呼び出したい場合

2. 実行ファイルがimportしているモジュールの中で、親ディレクトリ経由のパス

元記事を表示

[Python3][SQLite3]レコードを辞書型(dict型)で取得する簡単な方法

pythonからSELECT文でレコードを1行取得すると、タプル(tuple型)(例`(1, ‘ABC’)`)で返ってくる。それをカラム名をkeyとした辞書型(dict型)(例`{‘id’: 1, ‘name’: ABC}`)で取得する方法をまとめる。

具体的には、sqlite3のConnection オブジェクトの`row_factory`属性を変更することで簡単に実現できる。

dict型で取得することで、keyにカラム名を指定して取得したレコードから要素を取り出すことができるようになる。

#そもそも辞書型とは
[とっても便利なPythonの辞書型について覚え書き](https://qiita.com/E_Schaf/items/9ef26c0c514325d69e80)

#環境
– Python 3.7.4

#サンプルプログラムの動作
INTEGER型の’id’と、TEXT型の’name’という2つのカラムを持つテーブルに格納された下表の2件のデータを`{‘id’: 1, ‘name’: ‘加藤’}`や`{‘id’: 2, ‘name’: ‘佐藤’}`のようなdict型で

元記事を表示

【python】if文

# if文
何かを基準に処理を分けたい場合に、if文を用いる。
記述方法は**if 条件式 :**である。
条件式がTrueの時に、if文内の処理が実行される。
(条件式がTrueとは、例えば5>3など。一方でFalseになるときは5<3の時など)

“`python:if.py
a=1
b=3
if a>2 : #条件式が満たされない
print(“a”)
if b>2 : #条件式が満たさる
print(“b”)
>>>b
“`

#elif文
上記のようにif文だけで条件を分岐することは可能であるが、
例えば、Aかどうか、AでないならBなのか、それ以外なのか
といった場合に、上のif文のみで記述すると以下になる。

“`python:if.py
m=3
if m==A : # mがAであるかどうか
print(“a”)
if m!=A and m==B: # mがAでなく、mがBであるか
print(“b”)
if m!=A and m!=B: # mがAでなく、mがBでもない
print(“c”)
“`
ただ、この条件分岐は一番最初にAかど

元記事を表示

DjangoでLINEBotを作成する

#はじめに
DjangoでLINEBotを使うという内容の記事がパッと調べた感じ少なかったり、あっても古かったりしたのでまとめました。

とりあえずLINEBot入門として送られてきた文章をそのまま返信するおうむ返しBotを作成します。

[こちら](https://murabitoleg.com/line-bot/)の記事ではSDKを利用していますが、Python初心者の僕は~~PythonでHTTPリクエストすら投げれないので~~修行のために自力でやりたいと思います。

自分はDjango歴1週間弱のDjango初心者です。
また、普段よく使う言語が関数型のElixirなので実装がオブジェクト指向っぽくない可能性があります。

何か間違っている部分や改善したほうがいいところ、アドバイスがあったら是非コメントをください。

過去の自分の記事ですが、以下の記事を全体的に参考にします。
[Elixir / PhoenixでLINE Messaging APIを使用する](https://qiita.com/sanpo_shiho/items/5994aa1e788a227220bb)

元記事を表示

【Python】for文

#for文
for文は繰り返し処理を行いたいときに使う。
書き方等は後述するが、一つのfor文に対して一方向の繰り返し処理が行われる。
例えば、エクセルファイル等の行と列があるような場合で、
すべてのセルに対して処理を行いたい場合は
一方向の繰り返し処理では対応できない。
そのような場合は、for文中にもう一度for文を用いることで
二方向での繰り返し処理を行うことが出来る。

#記述方法
**for 繰り返し変数 in オブジェクトの集合:**
がfor文の記述方法である。

**オブジェクトの集合とは、リストのような一つの変数名で複数のデータが入ってる変数をいう。**
この複数のデータを一つづつ取り出して、そのデータに対してfor文内の処理が適用される。
for文中では取り出されたデータは**繰り返し変数**として扱われる。

“`python:for.py
list=[1,2,3,4,5]
for element in list:
print(element)
>>>1
>>>2
>>>3
>>>4
>>>5
“`

#for文中のfor文
次にfor文中でfor文を

元記事を表示

ImportError: cannot import name の解決

整理されてないコードを書いた結果、エラーが出た。

### エラー内容

“`
Traceback (most recent call last):
File “code1.py”, line 7, in
from code2 import my_function1
File “/home/ubuntu/code2.py”, line 9, in
import code3
File “/home/ubuntu/code3.py”, line 6, in
from code1 import my_function2
File “/home/ubuntu/code1.py”, line 7, in
from code2 import my_function1
ImportError: cannot import name ‘my_function1’
“`

### 原因

importが無限ループしてしまっている。

スク</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Python</div>
<div class='tag-cloud-link'>Python3</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/izso/items/9266bbeac66e30ba65dd'>元記事を表示</a></div>
<h3 id=【Python】辞書型変数(dictionary)

#辞書型変数とは
辞書型変数は、複数の値をもつリストのような変数である。
リストではindexによってリスト内の要素を参照することができる。
一方で、辞書型変数ではkeyによってvalue(値)を参照することができる。
以下の例でリストと辞書型変数の違いを確認して頂きたい。

“`python:dict.py
list={“apple”,”banana”,”chocolate”}
print(list[0])
>>>apple
dict={ “a”:”apple” , “b”:”banana” , “c”:”chocolate” }
print(dict[“a”])
>>>apple
“`
上例で、変数名=dictが辞書型変数である。
a→apple
b→banana
c→chocolateに対応する。
a , b , c のことをkeyといい、
apple , banana , chocolate のことをvalueという。

#辞書型変数の宣言の仕方(dict関数,zip関数)
辞書型変数は**dict関数、zip関数**を使っても宣言できる。
書きやすいと感じる方法で宣言して

元記事を表示

[Python3]ファイル(text, json, csv)の読み込み方の基本をまとめる

色々な方法があるが、基本的な手順は同じである。

1. ファイルをオープンする。
2. データを読み込む。

1番目は変わらない。2番目の読み込み方に色々な方法がある。

– ファイルの種類により使用する関数を変える
– ファイルの読み込み方を変える(ファイル全体、1行ずつ)

ファイルの読み込み方の概要をつかんでおいて、必要なものを深く調べるという学び方ができるようメモをまとめた。

# 環境
– Python 3.7.4

# フォルダ構成
“`
data_read_test
├──data
│ ├──test.json
│ └──test.csv
├──data_read_test_1.py
├──data_read_test_2.py
├──data_read_test_3.py
├──json_read_test.py
└──csv_read_test.py
“`

#ファイルオープンの方法
##組み込み関数open()
組み込み関数`open(path, mode)`を使う。
`path`には読み込み対象ファイルのパスを設定する
`mode`は、ファイルをオープンす

元記事を表示

[Python3]チームのために簡単なコーディングルールをまとめる

ある小さなチームのPython3での開発のコーディングルールをまとめる。
タイトルにある「簡単な」の意味は、あまりプログラミングスキルが高くないチーム向けに基本的なことをざっくりとまとめているということ。
チームの進行度やスキルレベルの成長に合わせて進化させられたらいいな。

# 環境
– Python 3.7.4
– pytest 5.2.2

# フォルダ構成
– フォルダ構成を一定にしてプログラム開発する習慣をつける
– プログラムとセットでテストも作成する習慣をつける

“`
(project name)
├── (project name) ………… プログラムのソースコード
│ ├── logs ………………. ログ出力先フォルダ
│ ├── data ………………. 連携ファイル格納先フォルダ
│ └── *.py
└── tests ………………… 単体テストのソースコード
└── test_*.py
“`

# 命名規則
– Pythonの標準的な考え方やルール

元記事を表示

Pythonでアルゴリズム(深さ優先探索、dfs)

#はじめに
 pythonで深さ優先探索をする場合、再帰ではパフォーマンスに不安があると聞いたので、stackで実装をしようと思いその備忘録として記事に残そうと思いました。
 学習の手助けになれば幸いですし、何かアドバイスなどありましたら是非コメントを頂きたいです!

#テーマ
 今回は、深さ優先探索の中でも代表的なテーマである、ある頂点をスタートして、各頂点まで到達するのにかかる時間について考えます。(時間というよりは順番?)その際、到達した時刻を調べる**行きがけ順**、最後に通過する時刻を調べる**帰りがけ順**、両方を**タイムスタンプ**でまとめて記録するという3つの場合を扱います。最後に通過するというのは、その頂点より下の頂点すべての探索が終わった直後のことを指します。
 dfsの詳しい解説は省きますが、スタート地点から行けるところまで深く行き、それ以上進めなくなったら前の分岐点まで戻り同じことを繰り返していきます。ここで、頂点番号が若い方を優先的に探索するとします。

#入出力
###入力
 1行目に頂点の個数を整数で、その後N行に頂点番号、隣接する頂点の個数、隣接する頂

元記事を表示

MATLABからPythonライブラリを利用したかった話

# はじめに
## この記事について
MATLABとPythonにはそれぞれ有利な点があります。
MATLABは行列演算に強く,日本語のドキュメントやSimlinkの存在などが強みです。
一方で,Pythonは無料で使用でき,scikit-learnなどの豊富な機械学習ライブラリが魅力です。
ですから,これらを使い分けたい場合もあります。

そんなときのために,[MATLABからPythonを直接呼び出す機能](https://jp.mathworks.com/help/matlab/getting-started-with-python.html)があります。
(逆に[PythonからMATLAB関数を呼び出す](https://jp.mathworks.com/help/matlab/matlab-engine-for-python.html)こともできますが,今回は触れません。)

ただ,調べてみても[公式のドキュメント](https://jp.mathworks.com/help/matlab/getting-started-with-python.html)があまり実用的では

元記事を表示

[Python3 入門 2日目] 2章 数値、文字列、変数 (2.1)

#Pythonのデータ型
・ブール型(TrueまたはFalseの値を持つ)
・整数型(43,23000000などの小数点以下がない数値)
・浮動小数点数(π=3.1415….のように小数点以下の部分がある数値、あるいは10e3のような指数表現。10e3は10の3乗という意味で1000を意味する。)
・文字列(文字の並び)

#2.1 変数、名前、オブジェクト
Pythonは全てがオブジェクトとして実装されている。(Rubyもそうだったな)
##オブジェクトとは?
データを入れてある透明な箱のようなもの。
オブジェクトには、上記のようなデータ型があり、そのデータで何ができるかが決まる。
そして、型にはボックスに入っているデータの値を変更できる(ミュータブル)、変更できない(イミュータブル)も決める。

###オブジェクトイメージ(対話インタープリタで実践)
1. 7という値に対してaという名前の変数を与える。 ⇨ 整数値7を入れたオブジェクトの箱が作られる。
※変数はただの名前であり、代入しても値はコピーされない。あくまでデータを入れているオブジェクトに名前を付けるだけ。名前は値自

元記事を表示

OTHERカテゴリの最新記事