Python関連のことを調べてみた2022年05月02日

Python関連のことを調べてみた2022年05月02日

Qiitaの記事からコードブロック部分だけ抽出して表示するPythonスクリプト

Qiitaの記事に書かれたコードを動作確認することが多いので、Qiita記事のURLを指定してコードブロック部分だけを表示するスクリプトを作りました。

### 使用例

“`text:すべてのコードブロックを表示
$ python3 qiitacode.py https://qiita.com/shiracamus/items/556ff8d916712a9f7055
“`

“`text:c言語部分だけ表示
$ python3 qiitacode.py https://qiita.com/shiracamus/items/556ff8d916712a9f7055 c
“`

“`text:Python(py)部分だけ表示
$ python3 qiitacode.py https://qiita.com/shiracamus/items/556ff8d916712a9f7055 py
“`

### プログラムコード

“`py:qiitacode.py
#!/usr/bin/env python3

“””
download a Qiita article and p

元記事を表示

トラッキング技術まとめ

Hi

人工知能を使ったトラッキングって、なんか燃えますよね。簡単に3つほど紹介したいと思います。全てpythonで書かれています。

DeepLabCut version2

https://github.com/DeepLabCut/DeepLabCut

・複数の個体のトラッキングが可能

・nature methods(impact factor:28.5)に今年の4月に記載された

・ラベリング付けは、GUI

.日本語の資料が豊富(もちろん、英語も)

SLEAP version1

https://github.com/murthylab/sleap

・複数の個体のトラッキングが可能

・nature methods(impact factor:28.5)に今年の4月に記載された

・ラベリング付けは、GUI

.日本語の資料がほぼない(ドキュメントが読めれば問題なし)

DeepPoseKit

https://github.com/murthylab/sleap

・単一個体のトラッ

元記事を表示

AWS DynamoDB メモ 項目削除ではまったこと

# エラーと原因

– エラーメッセージ

“`
[ERROR] ClientError: An error occurred (ValidationException) when calling the DeleteItem operation: The provided key element does not match the schema
“`

– 原因

`DynamoDB.Table()` クラスの `delete_item()` メソッドの `Key` 引数にプライマリキー以外のキーを指定していた

– 関連するドキュメント

> A map of attribute names to AttributeValue objects, representing the primary key of the item to delete.
>
>For the primary key, you must provide all of the attributes. For example, with a simple primary key, you only ne

元記事を表示

Pythonで画像に線や文字を描画

# 始点と終点を指定することで線が描けます

“`python
import cv2

img = cv2.imread(“bird.jpg”)

img = cv2.line(img,(210,80),(240,30),(255,0,0),1) # source, start, end, color, line width
img = cv2.line(img,(230,100),(280,50),(255,0,0),1)
img = cv2.line(img,(250,120),(320,70),(255,0,0),1)

cv2.imshow(img)
“`

![bird.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/dbe1f5db-ca41-d628-93d8-2096416391cc.jpeg) ![ダウンロード (48).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/9

元記事を表示

pandasでカラムが特定の文字列を含むか1行ずつチェックし、その行のみを抽出

“`python
import pandas

timestamp = ‘timestamp’

df1 = pandas.read_csv(‘a.csv’)
df2 = df1.sort_values(by=[“key”,”date”])
print(df2)

df3 = pandas.DataFrame({})

for index, row in df2.iterrows():
if row[‘op’] in (“INSERT”, “UPDATE”): # check
df3 = df3.append({‘OP’: ‘I’, ‘TIMESTAMP’: timestamp, ‘KEY’: row[‘key’]}, ignore_index=True)

print(df3)
“`

元記事を表示

pandasで2つ以上のカラムの値でソート

“`python
import pandas

timestamp = ‘timestamp’

df1 = pandas.read_csv(‘sample.csv’)
df2 = df1.sort_values(by=[“column1″,”column2”])

print(df2)
“`

元記事を表示

【Python】pandasやscipyを使って気象データ分析

# Pythonを使った気象データ分析 -雨が多いのは何曜日?

「週末は緊張感が切れて、天気も雨になりやすい」なんて聞いたことありませんか?

この記事では、気象庁のデータを利用したその真偽の検証を例題として、Pythonでのデータ分析、可視化手法を紹介します!

## 条件

* もっとも人数の多い東京における降水データを利用
* 過去30年分の降水量について各曜日ごとに合計し、統計的に比較
* 今回、利用、紹介するpythonのツール(ライブラリ)は以下
* pandas: 表形式(.csv)のデータ分析に利用できるライブラリ (csvファイルの操作に利用)
* scipy: 科学技術計算に利用できるライブラリ (得られた統計データの検定に利用)

## 統計データの準備

まずは [気象庁のホームページ](https://www.data.jma.go.jp/risk/obsdl/index.php) から東京の過去データのcsvファイルを取ってきます。
ここでは、1992年4月29日から2022年4月29日までのデータを取得して解析を行いました。

実際にダウンロード

元記事を表示

【Pandas】DB→DataFrame, DataFrame→DBに変換する!

データ分析ライブラリであるPandasを使うとDBから取得したデータをDataFrameに変換したり、DataFrameをDBにinsertすることが簡単にできる。

今回はその方法について記載する。

まずは書き方から紹介!

## DB→DataFrame

“`python
import sqlalchemy as sa
engine = sa.create_engine(
sa.engine.url.URL.create(
drivername=”mysql+pymysql”, # or postgresql
username=db_user, # e.g. “my-database-user”
password=db_pass, # e.g. “my-database-password”
host=db_hostname, # e.g. “127.0.0.1”
port=db_port, # e.g. 3306
database=db_name, # e.g.

元記事を表示

過去ツイ(黒歴史)をPythonで消し去る

こんにちは、趣味Androidエンジニアのmomoritoです。
今回はPythonを利用して、自身の過去のツイート(黒歴史)を削除します。

# 事前に必要なもの
– Pythonの動作環境(筆者はPython3.8.1)
– Pythonを書くエディタのようなもの(筆者はVSCode)
– API_KEY,API_SECRET,TOKEN_KEY,TOKEN_SECRETの4つ
※本記事ではAPIキー類の取得方法は割愛します。「twitter api 取得」あたりでググると先人の記事がいっぱい出てきます。
– 自身の全Twitter履歴
※ツイートIDを手に入れるために必要です。「twitter 出力」あたりでググるとこれまた大量に記事が出てきます。
※ツイートIDを既に把握しているのであれば、全Twitter履歴は必要ありません。
※ツイートIDのみを抽出してCSV化[tweetList.csv] しています。(後述)

https://developer.twitter.com/en

https://help.twitter.com/ja/managing-your-acco

元記事を表示

Blenderで数理最適化による分割の復元

## 概要

メッシュの**細分化を戻す**処理を数理最適化で試してみたので紹介します。

## 方針

細分化では三角面と四角面を分割します。ここでは、四角面のみ対象にします。
分割により追加された点の多くは、4辺と4面に接続しています。
この点を溶解対象候補とします。また、1つの四角面で1点までしか溶解できないとします。
さらに、溶解した点がなるべくつながるようにします。

## 準備

### PuLPのインストール

数理最適化のパッケージを使うので、インストールが必要です。
普段は、[Python-MIP](https://www.python-mip.com/)を使うのですが、Blenderでは動かないので、代わりに[PuLP](https://github.com/coin-or/pulp)を使います。
PuLPのインストール方法は、「[Blenderで可能な限り三角面を四角面に変換する(数理最適化)](https://qiita.com/SaitoTsutomu/items/b608c80d70a54718ec78)」を参照してください。

### コードの準備

Sc

元記事を表示

リスト内包表記に入門する【Python】

# やりたいこと
リスト内包表記に入門する。

# リスト内包表記(list comprehension)とは

[公式ドキュメント](https://docs.python.org/ja/3.8/tutorial/datastructures.html#list-comprehensions)より抜粋
“`
リスト内包表記はリストを生成する簡潔な手段を提供しています。
主な利用場面は、
あるシーケンスや iterable (イテレート可能オブジェクト) のそれぞれの要素に対してある操作を行った結果を要素にしたリストを作ったり、
ある条件を満たす要素だけからなる部分シーケンスを作成することです。
“`

リストから別のリストを作成する際の便利な記法、といったもののようです。

## 基本の書き方

“`
[式 for 任意の変数 in イテラブルオブジェクト]
“`

※ イテラブルオブジェクト[^1]
[^1]: イテラブルオブジェクトとしては、リスト、タプル、辞書、文字列などがあります。forで繰り返し処理を行うことができます。

# リスト内包表記の使い方

## 例

元記事を表示

[AtCoder]双方向辞書

# 双方向からアクセスできる辞書
辞書のvalueの検索は計算量がNかかるため、valueからも計算量1でアクセスできる辞書を作成しました。
使用は自由ですが、自分用なのでコードが汚いです。

# 実行環境
Pypy3(7.3.0)

# コード
~~~
class WD():
#keyからvalueもvalueからkeyも計算量1で
#アクセスできる辞書
#例 key:リンゴ,value:apple
def __init__(self):
self.Dict1 = {}
self.Dict2 = {}
def print(self):
print(“D1”,self.Dict1)
print(“D2”,self.Dict2)
def set(self,value1,value2):
#keyとvalueを入力(set(リンゴ,apple))
self.Dict1[value1] = value2
self.Dict2[value2] = value1
def retvalue1(self,value1

元記事を表示

値の大きさごとにランク付けしよう!:rank(),sort_values()他

この膨大なデータ、値が大きい順にランク付けしたいなぁ
この商品データを単価が大きい順にランク付けしたいなぁ
こんな時、データ加工の時によくあることだと思います。

そんなときは、値順にランク付けが出来る`rank()`関数というものがあります。
最初にデータを用意していきます。
“`Python
import pandas as pd
import numpy as np

df01 = pd.DataFrame( {‘name’:[‘A’, ‘B’, ‘C’, ‘D’ ,’E’,”F”],
‘math’:[60, 70, 80 ,90,100,60]})
df01
“`
“`
name math
0 A 60
1 B 70
2 C 80
3 D 90
4 E 100
5 F 60
“`
今回については、6行しかありませんので、分かりやすいかと思いますが、実際の実務では100万行などなる場合も全く珍しくありません。
そんな膨大なデータを一気にランク付け出来たら便利ですよね。
それでは、実際にコードを書いていきます。
“`Python
rank = df01[“math”]

元記事を表示

Mecabで解析した日本語文章をWordCloudで可視化しよう

# 環境
・MacOS
・python 3.8.7
・mecab-python3 1.0.3
・matplotlib 3.3.3
・wordcloud 1.8.1

# 概要
業務上SEO対策の一環で、競合サイトを解析する機会がありますが、どのようなキーワードを使って訴求しているか、一目で分かる方法がないか考えた結果、上述のライブラリをJupyter Notebookを使って実装することにしたので、参考までに記します。

# 手順
・事前に、必要に応じてライブラリ(Mecab,Matplotlib,WordCloud)をインストール
・該当ページのテキストをコピーし、任意のファイルに貼り付け
・Mecabで形態素解析
・WordCloudで可視化

# 該当ページのテキストをコピーし、任意のファイルに貼り付け
解析したいページのテキストを抽出し、テキストを貼り付けたファイルを読み込む。
“`python:index.ipynb
f = open(‘your_text.txt’)
text = f.read()
f.close()
“`

# Mecabライブラリをインポート
Me

元記事を表示

[AtCoder]Pythonにおける配列のコピー

# 目的
pythonを使用すると、配列を代入した際に値が書き換わってしまい困ってしまうケースがあると思います。
そこで、どのような場合に値が書き換わるのか、どのように対処できるのかをまとめました。
# 環境
AtCoderでの使用を前提としているため、AtCoderのコードテストで実行しています。
言語は実行速度を考慮しPypy3(7.3.0)としています。
# 一次元配列
## 代入される例
~~~
A = [0,1,2]
B = A
B[0] = 3
print(A)
#[3, 1, 2]
~~~
上記の例では、BにAを代入するとBの要素を変更してもAの配列が書き換わります。
これはBへはAの配列のコピーでなく、Aの配列をアドレスごと代入しているからと考えられます。

## 代入されない例
~~~
A = [0,1,2]
B = A[0]
B = 3
print(A)
#[0, 1, 2]
~~~
ここではBに配列ではなく、int型の値が代入されるため、Bの値を変更してもAの配列は変化しません。

## 対処法
~~~
A = [0,1,2]
B = A.copy()
B[0]

元記事を表示

非エンジニアにクラウド技術の良さを伝えてみる

こんにちは、記事作成を1か月くらいサボタージュした、むっそでございます。
**とかく資本主義社会は誘惑が多すぎて**1つのことに集中するの激ムズです
(意志よわよわな自分を反省しています)

先日大学の友人(営業職)と久しぶりに会ったのですが、**「クラウド技術の良さがさっぱりわからん」** みたいなことを言っておりました。

確かに開発者じゃないといまいちクラウドの凄さは分からないかもなぁと思って記事を書こうと思いました。この題材自体は**N番煎じすぎてネットに記事はあふれかえってます**が、開発者視点で話せればなぁと思います。

一応、出身大学は経済学部なので「IT分からなすぎてマジ卍」という気持ちも通ってきておりますし、すこしばかりお悩み解決的なことはできるのではないかなと思います。

# はじめに

非エンジニア視点でクラウドの良さが伝わるように書きたいと思うのですが、非常に残念なことに [知識の呪い](https://ja.wikipedia.org/wiki/%E7%9F%A5%E8%AD%98%E3%81%AE%E5%91%AA%E3%81%84)みたいなやつはどうして

元記事を表示

PythonのTkinterでじゃんけんゲームを作ってみた

## ゲームのソースコード

ゲームのプロジェクトは以下のリポジトリになっています。
初めてPythonでGUIを作った、無理矢理クラスやファイルを分けた、コメントが少なかったりと改良の余地はかなりある物となっていますので一から作り直すかもしれないです。

https://github.com/yuki-ono-vlb/JankenGame

## ゲームの内容

ゲームとしては、以下の内容となっています。

1. プレイヤーとエネミーに分かれてじゃんけんをする
1. プレイヤーはグー、チョキ、パーのボタンを用意してそこから選択してもらう
1. エネミーはランダムで決められた手を出してくる。
1. 負けた方は、基本1 ~ 3の間でHPが減っていく。
1. 10分の1の確率でクリティカルヒットが発生して基本ダメージが5倍のダメージとなる
1. 先にHPが0以下になった物の勝利
![Janken.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2191889/fe8b6aa3-0388-84e9-2603

元記事を表示

BigQueryの操作。pandas.DataFrameで。

# はじめに
Pythonのpandas.DataFrameを使ったBigQueryの読み書きです。
Pythonのコーディングだけでなく、GCPの設定も書いてある点が、この記事の価値です。

https://github.com/yo16/BigQuery_python_practice

## ポイント
– GCPのサービスアカウントに必要な権限を調べた
– 認証を含めた、最小限のサンプルコードを作った
– 皆さんおなじみのpandasのDataFrameを使った

## 目次
– 準備
– [(1) Pythhon環境](#1-Python環境)
– [(2) GCP環境](#2-GCP環境)
– コーディング
– [(1) 認証](#1-認証)
– [(2) 読む(select)](#2-読むselect)
– [(3) 書く(insert)](#3-書くinsert)

—–

# 準備
## (1) Python環境
“`
pip install pandas-gbq google-auth
“`

## (2) GC

元記事を表示

[Python実践]argparseに挑戦してみよう!《add_argument編》

# はじめに

今回はPythonの「**argparse**」の基礎と「**add_argument**」の使い方について解説していこうと思います!

第1弾はこちら!

https://chaldene.net/argparse-argumentparser

第3弾はこちら!

https://chaldene.net/argparse-parseargs

「**argparse**」はコマンドライン引数を渡してくれるもので、Pythonエンジニアを目指している方は知っておいた方が良いものになります。

ぜひこの記事でマスターしていってください!

この記事はPythonの公式ドキュメントを参考にしています。

Pythonに限らず、プログラミング言語の公式ドキュメントは非常に読みにくいので、この記事でわかりやすく解説していきます。

「**argparse使ってみたい**」

「**コマンドライン引数を渡してみたい**」

「**argparseって何?**」

「**自作モジュール作ってみたい**」

「**他の人が書いたコードでargparseの部分がわからない**」

元記事を表示

WSL2にPythonインストール

“`
sudo apt update -y
sudo apt-get install -y software-properties-common
sudo apt update -y
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install -y python3.10 python3.10-distutils
sudo update-alternatives –install /usr/bin/python python /usr/bin/python3.10 1
curl -sSL https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
pip install –upgrade pip
“`

元記事を表示

OTHERカテゴリの最新記事