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

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

たった3時間で言語処理をする。~MeCabとWordCloudとGoogle Colabでサクッと簡単~

# Introduction

## きっかけ
最近はWebアプリ開発にかまけて、楽しい楽しい言語処理を疎かにしていたので、久々にさわってみたくなりました。言語処理といえば、、、MeCabですね。

https://qiita.com/Senple/items/1ad08b1a7ac9560bef62

ただ現在はMac使いのボク(キリッ)ですが、米津玄師+WordCloudの記事当時は、WindowsによるMeCabの環境設定に大いに苦労しました。もうあんな思いはしたくないですし、時代はクラウドなので、クラウドでの環境設定に興味を持っていました[^1]。言語処理といっても、仰々しいことをやるのはしんどいので、簡単[^2]にWordCloudでの可視化と組み合わせてみました。
実際の作業は、思い立って画像をダウンロードするまで、3時間かかってないです[^3]。 簡単楽ちん♪

## 結論
こんな感じのpngファイルが完成します。

![sample_shirasujiro.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

kivyMDチュートリアル其の什肆乃弍 Components – Layout篇

ハロー、Qiita!いかがお過ごしでしょうか。

はい、今週も相変わらずやっておりますが、元気にやっていきましょう。

今週は何といっても、月食についての話題がホッとではなかったでしょうか。私も外を
歩いているところで見かけましたが、あまりよく分からなかったですね。時間帯もあった
のでしょうが、肉眼では捉えにくかったです。みなさんはどうでしたでしょうか。

今週のKivyMDですが、先週から伝えている通り今日でコンポーネンツが終了します。
長かったような短かったようなよく分からない気持ちでもありますね。。ですが、完全に
終わりといった訳でも無く、ポロポロ有効化されてないプロパティなどあってバージョン
アップをしないと挙動が変わっているか分からないものもあります。一覧は以下の通りです。

* NavigationRail
* Snackbar
* FileManager
* (*Picker)
* (DataTables)

バージョンアップ後にポロポロ出てきたものを検索すると、ざっと上記5つが浮上してきま
した。前半2つは検索して見てもらえれば、どんな意図しない挙動があるか見ることがで

元記事を表示

PostgreSQL: テーブルの所有者を変更する (Python3)

PostgreSQL で複数のテーブルの所有者を変更する方法です。
Ubuntu 21.10 で確認しました。

ライブラリーのインストール

“`bash
sudo apt install python3-dotenv
“`

“`text:.env
user=’******’
password=’******’
data_base=’******’
“`

“`py:change_owner.py
#! /usr/bin/python3
# -*- coding: utf-8 -*-
#
# change_owner.py
# Nov/20/2021
#
# ——————————————————–
import os
import sys
import psycopg2
import psycopg2.extras
from dotenv import load_dotenv
#
# ——————————————————

元記事を表示

AOJトライに関する知識知見の記録共有:Volume0-0044

# タスク概要
Prime Number II

https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0044

# コード実装例
TIPS

1. 例外処理含む評価パターンを追加
1. 入力値自体が素数にその旨出力
1. 出力数をパラメータ変数指定し調整可能に

“`
import pprint, sys
import sympy

def core(arg, n=3):
r = [arg] if sympy.isprime(arg) else []
return [sympy.prevprime(arg)] + r + [sympy.nextprime(arg, i) for i in range(1, n+1)]

def app(*args):
ret = []
for arg in args:
try:
r = core(arg)
except Exception as e:
r = e

元記事を表示

C# から Python へ JSON の受け渡し

C#からPythonへJSON文字列を送り、少し編集してC#側に戻すサンプル。
Pythonにあまり詳しくないC#経験者向けに書いています。

# 環境

– Windows10 64bit
– Visual Studio 2022
– .Net6.0
– Newtonsoft.Json
– Python 3.6.8

# C#側

標準入出力を介してやり取りする形になります。

“`c#:Program.cs
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Diagnostics;

// Pythonファイルのパス
string pythonFile = “Program.py”;

// Python側に渡すJSON
JObject inputJObj = JObject.Parse(@”{
‘CPU’: ‘Intel’,
‘Drives’: [
‘DVD read/writer’,
‘500 gigabyte hard drive’
]
}
“);

var proce

元記事を表示

Python ctypes 構造体 pragma pack (push,1)

本日はPythonのctypesに関する記事です。
実用的な内容ですので是非LGTM ストックお願いします ^__^

## ctypesとは

C言語のデータ構造をPythonで扱うことができるライブラリです。
Pythonをインストールするときにこちらのライブラリは標準でインストールされます。

Cの構造体をPythonでも扱いたいときなどに非常に便利です。

> [Python ctypes 公式ドキュメント](https://docs.python.org/ja/3/library/ctypes.html)

## 事例

今回紹介する例としては、

C側:構造体のデータをバイナリでログとして出力
Python:C側で吐き出されたバイナリのログデータを読み込んで表示

PythonでCのログを解析することで2次利用(可視化や機械学習)が各段にしやすいのでマスターしたい技術です。

# pragma pack (push, 1)

C側では構造体を定義するとき、 pragma pack をよく利用します。
これをPythonで定義するためには、下記が必要なので忘れないでください。

元記事を表示

【Python3】「ModuleNotFoundError」の対応

#はじめに
Webスクレイピングをやろうとして、WebDriverや beautifulsoupなどモジュールはインポートできてるのに、seleniumやbs4が認識されず、「ModuleNotFoundError」が発生してました。
結論としてデフォルトパスが通ってなかっただけなのですが、すごく遠回りして「sys.path.append()」でパスを追加するなど非エンジニアの私としては難しかったので、一番簡単だった方法を記載します。
※Windows10環境

・システムのプロパティから「環境変数」をクリックします。
![qiita1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2265307/ad57b515-3143-50a5-5e40-2db3d0248fca.png)

・ユーザの環境変数に新規で「変数名」をPYTHONPATHで「ModuleNotFoundError」となるライブラリのパスを「変数値」に指定。
(パスは「pip show selenium」などのコマンドで表示)
![qi

元記事を表示

WebTransportでもテキストチャットがしたい!(WebSocket比較あり)

# チャットなんてWebSocketで簡単にできるでしょ?

WebTransportをチェックしている皆様こんにちは。
特に仕事でもないのにWebTransporttが気になって仕方ない私です。
(しかも git add 直前に文字化けを直そうとしてファイルが消えましたが挫けません!)

さて、前回は簡単なechoをして1対1のやりとりができました。
そこで今回は複数人への送信ということでグループでのテキストチャットルームをやってみます。

まあ、WebTransportでもWebSocketとそんなに変わらずすぐできるでしょ。とか思っていました。

## 今回作ったもの

[ソースコードはgithub](https://github.com/alivelime/sample_webtransport_echo/tree/master/chat)

クラスター・サーバー上等でのmatplotlibに関するメモ

– [サーバサイドにおけるmatplotlibによる作図Tips](https://qiita.com/TomokIshii/items/3a26ee4453f535a69e9e)
– matplotlib.use(‘TkAgg’) and matplotlib.use(‘Agg’)

元記事を表示

matplotlibのsubplotはもうやめたい その2

Matplotlibのsubplotが使いにく過ぎて、はるか昔にこんな記事を書いた。https://qiita.com/ponnhide/items/fb375a610e4a9c0f743a
今回はその記事の続きで、subplot用の新しいツールをつくってみたという話。

# Matplotlibのsubplotは使いにくい
正直言って、Matplotlibのsubplotは依然として使いにくい。僕はmatplotlibの自由度の高さが好きで、どれだけggplotを布教されてもmatplotlibを使い続けているのだけど、subplot周りの実装は真面目に微妙だと思う。そして、この点は他の人からも指摘がなされ、改善が求められている。

– https://twitter.com/kasparmartens/status/1381991445381406722?s=20
– https://github.com/has2k1/plotnine/issues/46

これらの要望に対する返しとして、最近matplotlibはある機能を実装してくれた。それが [subplot_mosaic]

元記事を表示

重相関係数の意味あい

重回帰分析において,重相関係数の二乗(決定係数ともいうが)は独立変数どもが従属変数をどの程度説明するかを表す。
つまり,重相関係数が 0.5 ということは,独立変数どもが挙って従属変数を説明しようとしているが 0.5^2(Python なら 0.5**2であるが)つまり,0.25(つまり 25 %)しか説明できないということ。これは,ヤバいよね。

なお,重回帰分析の最も単純な場合である回帰分析においては,重相関係数は相関係数の絶対値を取ったものであり,重相関係数の二乗は相関係数の二乗に他ならない。
つまり,独立変数と従属変数の間の相関係数が r の場合,重相関係数は abs(r) であり,重相関係数の二乗(決定係数)は r^2 である。

相関係数の絶対値が 0.7 以上であれば,「強い相関がある」というように判断されるが,「独立変数は従属変数の 0.7^2 = 0.49 つまり,半分以下しか説明できていないのだよ」ということだ。

“`R
> x = c(3, 2, 4, 5, 1)
> y = c(1, 3, 4, 5, 6)
> ans = lm(y ~ x)
> summ

元記事を表示

Python 配列の使い方(自分用)

#リスト(配列)の初期化
角かっこ「[]」で囲み、要素をカンマ「,」区切りで並べる

“`python
empty_list = []

# 整数配列
int_list = [0, 1, 2]
“`

# 要素へのアクセス
###インデックスで
“`python
mylist = list(range(10))

# 正数は先頭からのインデックス
n = mylist[1]

# 負数は末尾からのインデックス 末尾の要素のインデックスが-1
n = mylist[-2]

# popメソッドで指定したインデックスにある要素をリストから取得して削除
value = mylist.pop() # インデックスを指定しない場合は末尾の要素が削除される
print(‘popped value:’, value) # popped value: 9
print(‘mylist:’, mylist) # mylist: [0, 1, 2, 3, 4, 5, 6, 7, 8]
“`
### スライスで
“`python
mylist = list(ran

元記事を表示

AWS Lambdaからsuds-py3を使ってSOAP API連携をしてみた

RESTにとって変わられがちですが、ちょっと触る機会があったので、
表題の件を簡単かつざっくり解説していきます。

なお連携対象はOracle B2C ServiceのSOAP APIの想定です(http://documentation.custhelp.com/euf/assets/devdocs/unversioned/Connect_KFAPI/Default.htm)

##環境
Python3.8
AWS Lambda プロキシ統合あり

ライブラリ
suds-py3 1.4.4.1

##準備

まずはライブラリをインストール

“`
$ pip3 install suds-py3
“`

##実装

内容は連携するAPIに準じて読み替えてください。
インポート関係はこんな感じです。

“` python3
import os
import json
from suds.client import Client
from suds.wsse import *
from suds.sudsobject import asdict

WSDL = os.environ[

元記事を表示

俺的、Pythonに標準で搭載された便利機能たち

Pythonの利点はやはり`pip`を使って超簡単に超便利なモジュールをインストールできること. だが, Python自身も負けてない. ここでは筆者がよく使うPythonに標準搭載の便利だと思う機能を適当に紹介していく. いろんなものを詰め込んだのでかなり雑多な内容になってしまったが, これを読んだ人のPython人生の一助とならんことを願う.

# `functools.partial`

引数を部分的に指定された関数を生み出せる.

“`python
from functools import partial

def super_genius_function(arg1, arg2, arg3, args4, kwarg1=None):
# do something
return

# 最初の二つの引数を固定
arg12_fixed = partial(super_genuis_function, 1, 2)
# kerwordで指定もできる
arg34_fixed = partial(super_genuis_function, arg3=3, arg4=4

元記事を表示

Python3: Google Cloud Storage にアクセス

GCE の Ubuntu 21.10 で確認した方法です。GCE で実行するので、認証の部分のコードを省略できます。

スクリプトでアクセスする方法はこちら
[Google Cloud Storage にスクリプトでアクセス](https://qiita.com/ekzemplaro/items/cd648c8f14c7421a928b)

バケットの一覧

“`py:list_bucket.py
#! /usr/bin/python
#
# list_bucket.py
#
from google.cloud import storage
#
client = storage.Client()
#
for bucket in client.list_buckets():
print(vars(bucket)[‘name’])
print()
#
“`

ファイルの一覧

“`py:list_files.py
#! /usr/bin/python
#
# list_files.py
#
from google.cloud import storage
#

元記事を表示

スライスでtorchのunsqueeze的な処理

スライスにNoneを追加するとNoneを追加した次元に空の次元が追加される。

“`py
>>> import numpy as np
>>> x = np.ones((32,27,517))
>>> x[:,:,None,:].shape
(32, 27, 1, 517)
“`

元記事を表示

python の zip 関数の動き

# zipが何をしているか?

zipがどのように動くか気になったのでpythonチュートリアルで調べた。

[pythonチュートリアル 5. データ構造より抜粋](https://docs.python.org/ja/3/tutorial/datastructures.html#nested-list-comprehensions)

“`python
matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
]
print(list(zip(*matrix)))
“`
>[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]

ネストしたfor

“`
vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
list = [num for elem in vec for num in elem]
list = []
for elem in vec:
print(elem)
for num in elem:

元記事を表示

pd.date_rangeより特定日時のインデックスを取得する方法

追記
`pandas.get_loc()`や`pandas.searchsorted()`というメソッドがあることを教えていただきました.コメント欄をご覧ください.

———————————

暗算でも良いですが,パソコンに考えてもらった方が安心ですよね.
numpy.whereを使います. numpyは不要です.コメント欄をご覧ください.

“`python3
import pandas as pd
import numpy as np

# 時系列の作成
times = pd.date_range(‘2015-04-01 00’, ‘2015-04-30 18′, freq=’6H’)

# 特定日時
t = ‘2015-04-13 12’

# 特定日時のインデックスの取得
i = np.where(times==t)[0][0]
“`

最初の[0]はタプルのアンパック,次の[0]はnumpy.ndarrayのアンパック,最終的にnumpy.int64を返します.

numpy.whereはTrue

元記事を表示

Pythonによるメール配信(SMTPAuthenticationError )

環境:Windows10 pro
python 3.9
VsCode

勉強の為に
pythonからコードを書いてメールをテスト送信しました。

““
from email import message
import smtplib

smtp_host = ‘smtp.gmail.com’
smtp_port = 587
use_smtps = any
from_email =’#####@gmail.com’
to_email = ‘####@outlook.jp’
username = ‘####@gmail.com’
password = ”

msg = message.EmailMessage()
msg.set_content(‘Test email’)
msg[‘Subject’] = ‘Test email sub’
msg[‘From’] = from_email
msg[‘To’] = to_email

server = smtplib.SMTP(smtp_host, smtp_port)
server.ehlo()
server.starttls()
s

元記事を表示

ApexLegendsの戦歴をPythonで取得してみよう

# はじめに
この記事ではPythonのライブラリである[ApexTrackerPy](https://github.com/nerrog/ApexTrackerPy)を使用したPythonでのApexlegendsの戦歴の取得方法などを解説します。

# 目次

* APIの登録
* APIの種類について
* 登録
* 実際に戦歴を取得してみる
* APIの呼び出し方
* 値を取り出してみる
* おまけ:現在のマップを取得してみる

# APIの登録
## APIの種類について
ApexTrackerPyでは[UNOFFICIAL APEX LEGENDS API](https://apexlegendsapi.com/)と[TRACKER NETWORK API](https://tracker.gg/developers/docs/titles/apex)の2種類に対応しています。
UNOFFICIAL APEX LEGENDS APIは戦歴以外にもサーバーステータスやマップローテーションなど多くの情報が取得できます。
戦歴(プレイヤーステータス)

元記事を表示

OTHERカテゴリの最新記事