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

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

Win10 + VsCode + Python3 + psycopg2 から Ubuntu 20.04 + Posgtgres12 にアクセスしてみる

#目的
[Ubuntu 20.04 に Posgtgres12 をインストール後 C# + Npgsql でアクセスしてみる](https://qiita.com/tabizou/items/47f395d7ab3030dd1915)
でインストしたPostgresをもう少し触ってみる
・新規roleを作成する
・新規DB(demo)を作成する
・作成済のroleに対して新規作成DB(demo)に対する権限を付与する
・作成したテーブルに対して Win10 + VsCode + Python3 + psycopg2 からアクセスしてみる

##アクセス環境の設定

$ su - postgres
$ psql -U postgres
ユーザ postgres のパスワード:
psql (12.3 (Ubuntu 12.3-1.pgdg20.04+1))
"help"でヘルプを表示します。

postgres=# create role demo with login password 'passwd';
postgres=# create database demo;
po

元記事を表示

個人的に忘れがちなpandasの書き方備忘録

### 作業用にSampleのDataFrameを作成
```python
df = pd.util.testing.makeMixedDataFrame()
df
```

| | A | B | C | D |
|--:|--:|--:|--:|--:|
| 0 | 0.0 | 0.0 | foo1 | 2009-01-01 |
| 1 | 1.0 | 1.0 | foo2 | 2009-01-02 |
| 2 | 2.0 | 0.0 | foo3 | 2009-01-05 |
| 3 | 3.0 | 1.0 | foo4 | 2009-01-06 |
| 4 | 4.0 | 0.0 | foo5 | 2009-01-07 |

### pandasの表示オプションの変更
```python
pd.set_option('max_rows', 2)
pd.set_option('max_columns', 3)
df
```
| | A | ... | D |
|:--|--:|--:|--:|
| 0 | 0.0 | ... | 2009-01-01 |
| ... |

元記事を表示

Pythonのビルトイン関数たち

# まえおき

- この記事は執筆中の[やさしくはじめるPythonプログラミング](https://github.com/simon-ritchie/python-novice-book-preview)の本の特定の章の部分抜粋です。
- 入門本なので初心者の方向けです。
- ビルトイン関数の章の内容が主になります。
- Qiita記事にマッチしていない箇所(「章」や「ページ」といった単語が使っていたり、改行数が余分だったり、リンクが対応していない等)があるという点はご留意ください。気になる方は↑のリンクの電子書籍版をご利用ください。
- コメントなどでフィードバックいただいた場合、書籍側にも活用・反映させていただく場合があります。

# 最初から使える関数たち : Pythonのビルトイン関数

本章ではPythonのよく使われるビルトイン関数について触れていきます。ビルトインという単語は聞きなれないものかもしれませんが、英語だと「built-in」という単語で、「作り付けの」とか「本来備わっている」、「内臓の」といったような意味を持ちます。

`built`という単語からも分かる

元記事を表示

numpyで行列の内積を求めてみた

#行列の内積を求める
( a行 b列 )×( b行 c列 )=( a行 c列 )という計算になる。
スクリーンショット 2020-06-22 0.12.02.jpg

ではこの計算をNumpyでしてみるとどうなるのか
ソースコードは以下の通りです。
####サンプルコード
```Python:matrixInnerProduct.py
# 乱数を発生させて(5行3列)×(3行4列)
# = (5行4列)の行列を求める
import numpy as np

a = np.random.randint(0, 14, size=(5, 3))
b = np.random.randint(0, 14, size=(3, 4))
print(a)
print(b)

print("内積の

元記事を表示

ホロライブメンバーの配信予定を取得して配信開始時刻に通知するDiscord botを作った

現在、ホロライブ+井の中ミュージックには28人のメンバーがおり、それぞれのメンバーの配信予定を把握することが難しいです。一応公式でホロジュールと呼ばれる各メンバーのスケジュールはありますが、それに乗らないような3時間前くらいに突如として現れるようなスケジュールまで追うのはなかなか難しいのではないでしょうか。

そこで、今回Discordに配信予定や配信時刻になったら通知が来るようなbotをミカグラくん([@hungry_and_fool](https://twitter.com/hungry_and_fool))と作りました。

見た目
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413178/b52651c2-189c-524f-4e98-8643d8c022c5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413178/891a2f2d-1a3c-7cbc-37ad-f

元記事を表示

pandas での reset_index() で series を dataframe にする

[データサイエンス100本ノック](https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess)やっています。
わからなかったことのメモです。

```
P-030: レシート明細データフレーム(df_receipt)に対し、
店舗コード(store_cd)ごとに売上金額(amount)の標本分散を計算し、降順でTOP5を表示せよ。
```

という問題で、自分の答えは以下でしたがうまくいきませんでした。
`df_receipt.groupby("store_cd").amount.var(ddof=0).sort_values("amount", ascending=False).head(5)`

正解は以下でした。
`df_receipt.groupby('store_cd').amount.var(ddof=0).reset_index().sort_values('amount', ascending=False).head(5)`

違いは `.reset_index()`だけです。
`re

元記事を表示

Pythonでのファイル入出力チェック|assertでのTDD

#ファイル入出力チェック
ファイルを開いてそれをバイナリ式にコピーして別のファイルで保存します。
2つの方法でファイルのチェックをするようにしています。
以下のファイルを読み込みます。

```C:HelloClang.c
/*******************************************
Hello.c
*******************************************/
#include

int main(){
int ii = 0;
int x = 1;
int y = 2;

for ( ii = 0; ii++; ii<10 ){ printf("X × Y = %d\n",x*y); x++; y++; } return 0; } ``` まず一つ目のソースコードです。 ##1) try・・・except・・・finally・・・ ```Python:try型 try: """・1・""" except FileNotFoundErro

元記事を表示

製薬企業研究者がPythonにおける正規表現についてまとめてみた

# はじめに

ここでは、Pythonにおける正規表現の基本について解説します。

# 主な正規表現

```python
import re

m1 = re.match(r'ab*', 'a') # 直前の文字(b)の0回以上の繰り返し
if m1:
print(m1.group(0))
else:
print('Not match')

m2 = re.match(r'ab+', 'a') # 直前の文字(b)の1回以上の繰り返し
if m2:
print(m2.group(0))
else:
print('Not match')

m3 = re.match(r'ab?', 'abb') # 直前の文字(b)の0回または1回の繰り返し
if m3:
print(m3.group(0))
else:
print('Not match')

m4 = re.match(r'ab$', 'abb') # 文字列の末尾と合致するか
if m4:
print(m4.group(0))
else:
print('Not mat

元記事を表示

【QtDesigner】PyQt5 で WebView を実装する

# PyQt5 で WebView を実装してみる

`QtDesigner` と `PyQt5` を用いて、簡易的なブラウザを作成しようと思い立ったのですが、
WebView を表示するための設定方法について、日本語の記事がなかなか見つからなかったため、備忘録としてここに残しておきます。

## 環境

- OS: MacOS Catalina 10.15.3

- QtDesigner: version 5.9.6

- PyQt5: version 5.15.0

## 結論
- WebView は、**Qt5.6 で削除された**。

- 代わりに、**QwebEngineView** を使用する必要がある。

- **QWebEngineView** を使用するには、 **QWidget を拡張して、QWebEngineView クラスを作成する**必要がある。

## 背景

冒頭でもさらっと書いた通り、簡易的なブラウザを作成しようと思い立ちました。
色々ググってみた結果、 `PyQt5` というライブラリを使用すれば `Python` でもわりと簡単に Web ページを

元記事を表示

Ubuntu18.04 (WSL)でpyspark+jupyterの環境を手早く作る

# やること
Ubuntu 18.04(WSL)上にpysparkを試すための環境をさくっと用意する。
anacondaやpyenvは使用しないので、使いたい方は随時対応してください。

# 前提環境
Windows 10 Home
Ubuntu 18.04 LTS (WSL) インストールしたばかりの状態から開始

# 作る環境
Spark 2.4.6
Hadoop 2.7
Python3.6.9
jupyter-notebook

# 手順
## まずはSparkのインストール
### jdkをインストール
```shell
sudo apt-get update
sudo apt-get install -y openjdk-8-jdk
```

### sparkをインストール
入れたいバージョンに応じて、各所変更すると吉。

```shell
wget http://ftp.riken.jp/net/apache/spark/spark-2.4.6/spark-2.4.6-bin-hadoop2.7.tgz
tar zxvf spark-2.4.6-bin-hadoop2.

元記事を表示

Scikit-LearnとTensorFlowによる実践機械学習~TensorFlow諦めた編~

**[Scikit-LearnとTensorFlowによる実践機械学習~Scikit-Learn編~](https://qiita.com/greatonbi/items/9c416e21eaca59f84e27)** の続きです。

前半(8章まで)は、ほぼScikit-Learnに関する話でした。
後半(9章以降)は、TensorFlowの話に移っていきます。

※書籍がTensorFlow1の内容で書かれているのに対し、どうやら現在はTensorFlow2みたいだということで、TensorFlow2ではどうなってるのかよくわからない部分が多いです。

内容に入る前に、メモ程度に参考になるサイトをまとめておきます。
  ・[サンプルコード(GitHub)](https://github.com/ageron/handson-ml)
  ・[TensorFlow公式サイト](https://www.tensorflow.org/)
  ・[PFN社のChainer Tutorial](https://tutorials.chainer.org/ja/02_Basics_of_Pyth

元記事を表示

ビット演算 右シフトを使って列挙する方法

# ビット演算 右シフトを使って組み合わせを列挙する方法

## 目的
競技プログラミングでよく出てくる右シフト演算を使ってパターンを列挙するみたいな方法を自分用にメモっておく

## 例題
[AtCoder Beginner Contest 079](https://atcoder.jp/contests/abc079)の[C問題](https://atcoder.jp/contests/abc079/tasks/abc079_c)などがそう。
問題としては、A,B,C,Dの4つの変数が与えられて、`A op1 B op2 C op3 D = 7`となるような演算子(+か-)をop1,op2,op3に入れる。
例えば、A=1,B=2,C=2,D=2の場合、`A + B + C + D = 7`になるので、op1,op2,op3全て+となる。

## ビット演算の導入
この問題で出てくる組み合わせは以下

| op1 | op2 | op3 |
| :---: | :---: | :---: |
| - | - | - |
| + | - | - |
| - | + | - |
| +

元記事を表示

PEP 584 (Add Union Operators To dict) を読んだよメモ

先日、[PEP 584 (Add Union Operators To dict)](https://www.python.org/dev/peps/pep-0584/) が [Final になったというコミット](https://github.com/python/peps/pull/1440)を見かけました。
そこで、今回は PEP 584 を読んでみようと思います。

## 概要

* ふたつの辞書を結合するいい感じの方法がほしい
* `d1.update(d2)` は d1 を書き換えてしまうため、一時変数を用意する場面があるし、式ではないのでパラメータにしていできない
* `{**d1, **d2}` ってキモい
* `collections.ChainMap` はマイナーな上に、 d1 を書き換える問題がある
* `dict(d1, **d2)` はキーが文字列以外の場合にエラーになる
* 辞書の結合に `|` 演算子を使えるようにする
* Python 3.9 から利用できます

## アプローチ

`d1 | d2` でふたつの辞書を結合します。同じキー

元記事を表示

PEP 614 (Relaxing Grammar Restrictions On Decorators) を読んだよメモ

先日、[PEP 614 (Relaxing Grammar Restrictions On Decorators)](https://www.python.org/dev/peps/pep-0614/) が [Final になったというコミット](https://github.com/python/peps/pull/1437)を見かけました。
そこで、今回は PEP 614 を読んでみようと思います。

## 概要

* これまでデコレータに利用できるのは `dotted_name` と呼ばれる、`.` つきの名前のみだった
* そのため、配列アクセスや辞書アクセスといった「式」の類はデコレータには使えなかった

```python
buttons = [QPushButton(f'Button {i}') for i in range(10)]

@buttons[0].clicked.connect # => NG
def spam():
...
```
* 文法を拡張して、デコレータに「式」を受け付けるようにした
* Python 3.9 から

元記事を表示

PEP 618 (Add Optional Length-Checking To zip) を読んだよメモ

先日、[PEP 618 (Add Optional Length-Checking To zip)](https://www.python.org/dev/peps/pep-0618/) が [Accept されたというコミット](https://github.com/python/peps/pull/1435)を見かけました。
そこで、今回は PEP 618 を読んでみようと思います。

## 概要

* `zip()` 関数を使うとき、暗黙的に各要素の長さが同じであることを期待していることがある (ことが多い)
* 長さの異なる要素を誤って与えてしまうと、意図せずデータを欠損してしまうことになる

```python
>>> list(zip([1,2,3], [4])) # 2, 3 は失われてしまう
[(1, 4)]
```
* 次のような関数があるときに、リストを渡すと意図通りに動くが、イテレータを渡すとうまく動かない (イテレータが先に進んでしまうので)。

```python
def apply_calculations(items):

元記事を表示

【Python】日本地図の市区町村をMatplotlibのbasemapを使って表示する

# 都道府県はBIツールでどうにかなるが、市区町村の地図は自分で作成しなきゃいけいない
BIツールで調べていくと、tableauでは一応できるが、ツールがないとどうしようもない事象が発生した。
調べていくと、どうもPythonでも同じようなことができるようなので、その導入方法を紹介する。

# 参考
↓のURLに参考にした記事を張っておくので、元ソースが見たいときはこちらをご覧ください。
- https://qiita.com/ty21ky/items/271274a7057d32061cb3

# 実行環境
- OS : Windows 10 Home
- Python : Ver 3.7
- Install Tool: Anaconda

# 最初にやること
BasemapはCondaでインストールできるので、そこからインストールする。
※もちろん、インターネットに接続できる状態で行う
```conda install -c anaconda basemap```
 
# 必要なデータを準備する
国土数値情報ダウンロードページから該当する都道府県を探し、登録された時期のデータをダウ

元記事を表示

[LINE Bot] LIFFとリッチメニューでも管理画面が作りたい! 2 -リッチメニュー切替-

この記事はこの記事の続きです
[[LINE Bot] LIFFとリッチメニューでも管理画面が作りたい! 1 -グループ管理-]()

# リッチメニューを作る
さて、前回はグループへの招待・退会で管理メンバーの追加・削除をできるようにしました。
その際にリッチメニューをユーザ用と管理者用に切り替えます。
今回はそのリッチメニューを作ります。

今回はユーザー用を 3 x 1 (1200 x 405)
管理者用を 3 x 2 (1200 x 810) のメニューを作ります。
動作確認のため、上の段はユーザと同じものにします

## Line Messaging APIでリッチメニューを作る
Line Account Managerで作成したリッチメニューは残念ながらAPIでは使えません。
画像を準備し、APIで作成する必要があります。
画像はpngかjpgで1MB以内です。

pythonで適当に書いたので、ライブラリをインストールします。

```bash
pip install line-bot-sdk
pip install pyyaml
pip install boto3
``

元記事を表示

倒立振子ロボット製作記~ソフトウェア編~

ハードウェア編は[こちら](https://qiita.com/shi78ge/items/74fb7aaeca70017761c7)

まずは動作させているところの動画です。

元記事を表示

DjangoRestFrameworkのTips

# バージョン情報
| module | version |
|:-----------------------|------------------:|
| Python | 3.7.7 |
| django-environ | 0.4.5 |
| Django | 2.2.11 |
| djangorestframework | 3.11.0 |
| djangorestframework-jwt| 1.11.0 |
| django-rest-swagger | 2.2.0 |
| django-filter | 2.2.0 |
| mysqlclient | 1.4.6 |

# Swaggerを使用したい
##

元記事を表示

pythonで音に合わせて動く波形(オーディオスペクトラム)を作ってみる

#はじめに

現状macにはオーディオスペクトラム(よくある音に合わせてぬるぬる動く周波数領域の波形)を使えるフリーソフトがないようです。そこで、pythonを使って自作して遊んでみます。

(windowsの方はAviUtlというフリーソフトで出来るようです。)

##状況と目的

手元には、音声波形を作りたい**wav形式の**ファイルがあります。(僕の場合はGarageBandで打ち込んだ曲の出力ファイルです。)これを動画形式にしたいのですが、静止画に音声だけ流れるような動画では少々味気ないです。

そこで、作った曲に合わせて動く**オーディオスペクトラム**を作って、多少なりとも動画映えするようにするのが今回の目的です。

こんな感じのものが作れます↓

[![【ポケモン剣盾】戦闘!ビート【8bit音源アレンジ】](http://img.youtube.com/vi/JPE54SlF6H0/0.jpg)](http://www.youtube.com/watch?v=JPE54SlF6H0)

元記事を表示

OTHERカテゴリの最新記事