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

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

Raspberry Pi 4 を使ったROS入門 第1回 環境構築

# はじめに
この記事は研究室の学生の教育用に作成してゆきます.
現在はROS2がメジャーとなってきておりますが,まずは自習が出来るよう文献が豊富なROS1でROSの扱いに慣れてみます.
ROSは既に多くの文献があり,それだけでも自習可能ですが解説されているバージョンや環境が違い,初心者には躓きやすい内容だと思ったため,改めてまとめてみます.

# 動作環境
Raspberry Piを使用します.(用意できるならUbuntu入りのPCが◎)
ROSはUbuntu上で動くソフトなのですが,設定の違いによってトラブルが起きやすいので,クリーンインストールしてから始めることをお勧めします.
ROSのバージョンはUbuntuのバージョンとリンクしてます.

本記事で使用する機器とバージョン
| 使用機器 | Ubuntuバージョン | ROSバージョン |
|:————:|:————:|:————:|
|Raspberry Pi 4 Model B / 4GB|20.04|Noetic Ninjemys|

# 準備する物

1. Raspber

元記事を表示

データフレームについて–07: パイプ

# パイプ

関数型言語では,データ処理のときに関数を入れ子にすることで中間結果(変数)を明示しないというやり方が,ある意味普通である。

## 1. 入れ子式に関数を呼ぶ場合

“`python
import pandas as pd
df = pd.DataFrame({
‘a’: [1, 2, 3, 4, 5],
‘b’: [1.2, 3.4, 5.6, 7.8, 9.0]
})
df

def func1(df):
return df.transform(‘sqrt’)

def func2(df, power=2, constant=1):
return df.transform(lambda x: x**power + constant)
“`

“`python
print(func2(func1(df)))
“`

a b
0 2.0 2.2
1 3.0 4.4
2 4.0 6.6
3 5.0 8.8
4 6.0 10.0

## 2. パ

元記事を表示

【Pandas】行と列のデータを取得する方法 | loc/iloc

## 【はじめに】

データ加工やデータ分析、機械学習の領域においてはデータを操作することが多いです。

今回は、Pythonライブラリの「Pandas」の中でも、行と列のデータを取得する方法として、「loc」と「iloc」について使い方を紹介していきます。

### 本記事の内容

– pandasのインポート
– csvファイルの読み込み
– データ型を調べる
– 行数、列数を取得する
– 列を取得する
– 行と列を取得する:loc()
– 列を取得する:iloc()

## 【pandasのインポート】

“`
import pandas as pd
“`

## 【csvファイルの読み込み】

「1920年から2015年までの全国の人口推移のデータ」を使用します。
“`
df = pd.read_csv(‘data.csv’, encoding=’shift-jis’)
df
“`

[![Image from Gyazo](https://i.gyazo.com/11406bae9050e6b1fb844661e903b40b.png)](https://gyazo

元記事を表示

東京海上日動プログラミングコンテスト2022(AtCoder Beginner Contest 256) 参戦記

# 東京海上日動プログラミングコンテスト2022(AtCoder Beginner Contest 256) 参戦記

## [ABC256A – 2^N](https://atcoder.jp/contests/abc256/tasks/abc256_a)

1分で突破. 書くだけ.

“`python
N = int(input())

print(2 ** N)
“`

## [ABC256B – Batters](https://atcoder.jp/contests/abc256/tasks/abc256_b)

4分で突破. 素直にシミュレーションすればいい.

“`python
N, *A = map(int, open(0).read().split())

P = 0
cells = [0] * 4
for a in A:
cells[0] = 1
for i in range(3, -1, -1):
if cells[i] == 0:
continue
if i + a >= 4:

元記事を表示

ポリヤの問題解決技法

今回は、昔読んだ問題解決に関する本についてお話したいと思います!問題解決は誰にとっても重要なスキルですが、開発者やエンジニアにとっては特に重要なスキルです。

![画像説明](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yh9zdo2lxqpm3kv9a0ex.jpg)

1945年にジョージ・ポリアは「How To Solve It」という本を出版し、100万部以上売れたそうです。私はレジュメを作成し、彼の本からいくつかのコンテンツを再利用するつもりです、したがって、私はここですべてを要約しようと思います

ポリアは問題解決のための**4つの基本原則**を明らかにしました。

## 第一の原則:問題を理解する

まず、自分自身に問うべき簡単なことは、「質問・問題の意味を理解しているか」ということです。

– 問題を説明するときに使われる言葉をすべて理解しているか?
– 何を見つけるか、何を示すかを問われていますか?
– 問題を自分の言葉で言い直すことができますか?
– 問題を理解するのに役立つような絵や図が思

元記事を表示

データフレームについて–06: 統計量の計算

# 統計量の計算

“`python
import numpy as np
import pandas as pd

df = pd.DataFrame({
‘a’: [1, 2, 3, 4, 5],
‘b’: [1.2, 3.4, 5.6, 7.8, np.nan]
})
df
“`

<

Pytorch + EfficientNetで友人2人の顔を判別する画像分類モデルを作ってみた

# はじめに
※1年くらい前にやったネタを今更記事にしました。古い情報もあるかもだけど許してね

iPhoneの写真には、ピープルという機能がありまして、保存している写真に誰が写ってるのかを整理してくれます。
ある日、この機能で写真を眺めていたところ、時折友人M氏とY氏を間違えて判定しているところがありました。
2人の顔はそこまで似ていないと思ったので、実際にAIモデルで2人の顔画像を学習してみたら、うまく判定できるのか?
そう思い、Pytorchの勉強もかねて、EfficientNetをFine Tuningしてみて、精度を測ってみることにしました。

# 実行環境
なんとローカルで実行してます。そろそろアップグレードしたい…

OS : Win10
CPU : Intel Core i7-7700k
CPUメモリ : 16GB
GPU : GeForce GTX1070
GPUメモリ : 8GB

# データセットの用意
データセットはiPhoneに入っている、友人M氏とY氏が写っている写真を、適当に手動で顔部分だけトリミングしたものを使用しました。
大きさは幅3000pxを超える

random.choice() vs secrets.choice() 速度比較

# random.choice() vs secrets.choice() 速度比較

疑似乱数生成器である random.choice() と
暗号論的擬似乱数生成器 secrets.choice() の速度比較してみました。

セキュアな乱数生成するのに secrets.choice() 使いたいけど、100倍くらい遅かったらやだなぁというのがモチベーションです。

## こんなソース
“`python
import random
import secrets
import time
import statistics

random_times = []
secrets_times = []
for i in range(100):
random_start_time = time.time()
random_result = random.choice([“a”,”b”,”c”,”d”])
random_times.append(time.time() – random_start_time)

secrets_start_time = tim

numpy.stackのaxis=-1について

# 概要
numpyやpandasでしばしば出くわす`axis=-1`について苦手意識があるので、
Pythonの数値計算ライブラリnumpyのnumpy.stackに話を絞ってまとめる。

# 環境
“`
$ python –version
Python 3.10.0
$ pip freeze | grep numpy
numpy==1.22.4
“`

# 内容
## ドキュメント
> numpy.stack(arrays, axis=0, out=None)
> Join a sequence of arrays along a new axis.
>
> The axis parameter specifies the index of the new axis in the dimensions of the result. For example, if axis=0 it will be the first dimension and if axis=-1 it will be the last dimension.

「新しい軸(axis)に沿って、配列

【超簡単】Pythonライブラリ「Pandas」の基本的な使い方

【はじめに】

PandasはPythonで利用できる、データ解析のためのライブラリです。

  • データの読み込みや統計量の表示
  • データのグラフ化
  • データ分析

などを行う際に頻繁に使用するコードが集められています。

https://pandas.pydata.org/docs/reference

今回は、誰でもpandasを使いこなすための第一歩として基本的な使い方を紹介します。
※一部違うライブラリを使用する場面があります。
### 本記事の内容
– pandasをインポートする
– CSVファイルを読み込む
– データ型を確認する
– データフレームの情報を取得する
– 統計量を取得する
– グループごとに集計する
– データを並べ替える
– グラフ化する

### 【pandasをインポートする】

“`Python
import pandas as pd
“`

ポイント

as pdとして読み込むことでpandasを「pd」として使

簡単にランダムデータを作れるpythonライブラリを作ってみた

https://github.com/yoyoyo-yo/data_factory

新しいライブラリとかを試したい時に都合いいデータを探すのってなんかめんどうだなってなったとき

これを使えばランダムで都合良いデータがつくれます!

遊んでみてください!

使い方は拙い英語でGitに載せてます

簡単なノイズ入りデータの作成から、狙った相関係数になるカラムの作成までできます

[Python] [EXCEL] 結合セルをdataframeに読み込んで、欠損地の各行に値を入れる ☆便利☆

エクセルで複数のセルが結合されているものを読み込む時と、先頭の行のみに
値が入り、他はNaTになってしまいます。
(このような結合されたエクセル)
![スクリーンショット 2022-06-20 174854.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/823476/aa33b5d5-cdc2-89d4-8643-b8ab3f104dfe.png)

Pandasで読み込むと・・
“`python
import pandas as pd
df=pd.read_excel(‘MergedCellTable.xlsx’) #上のファイル名です
“`
![スクリーンショット 2022-06-20 181608.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/823476/d554f65a-654d-85b0-21a5-a00b63746755.png)
そこで、結合されていた列に対してmethod=’ffill’でfilln

AtCoderで入茶した感想【色変記事】

こんにちは!みちらからと申します!
半年強かけてついに**AtCoder**で**茶色コーダー**になることができたので感想などをつらつらと書いていこうと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611375/592c018f-7d4a-424e-5ac4-4b636dcf0345.png)
レーティングのグラフ
# 2021年12月〜2022年3月頃まで
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611375/858e1404-6adc-62d7-9d1c-e0f3c9b2cfd4.png)
↑このへん
**始めてすぐの時です**
AtCoderを始める前からある程度のPythonのプログラムは作れたのでTwitterでAtCoderを見てやってみようかな〜と思い、せっかくなら知らない言語でと参加しようとC++の勉強を始めます。この頃は**A問題**だけ解いて満足

Effective Python 第2版 を自分なりにまとめてみる part4

# はじめに
こちらの書籍のまとめになります

[Effective Python 第2版 ――Pythonプログラムを改良する90項目](https://www.oreilly.co.jp/books/9784873119175/) (Brett Slatkin 著、黒川 利明 訳、石本 敦夫 技術監修)

– 全てのパートをまとめているわけではありません
– 個人的に難しくて理解できていなかったり腑に落ちていない箇所は省いています
– もしくは新たな気づきは特にないなと感じたところも省略しています
– コードに関しては書籍のものを丸々掲載するでなく、改変しています(その過程も個人的に有意義な時間でした)
– そのような理由からこのブログでは多くの部分を削ってしまっています。オリジナルの書籍はかなり勉強になるなと思いました。興味ある人は是非読んでください。
– このページでは本書の6〜7章序盤をまとめています。他の章はこちらを参照ください

– [1〜3章](https://qiita.com/Takayoshi_Makabe/items/d49713937b1b482458

【ServiceNow】Requested Itemの添付ファイルを取得したい

### はじめに

– バージョン
– ServiceNow: Rome

 テーブル“Requested Item[sc_req_item]“には、以下のようにファイル添付することが
可能です。今回は、これらの添付ファイルをAPI経由でダウンロードする方法を調査しました。

![request_item.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554812/c52fa07b-213b-75dd-e051-95a0d7782316.png)

### 1. サンプルコード

 今回作成したコードは以下です。シンプルさ重視のためエラー回避等はしておりません
ので、実際に使用する際は適宜修正願います。

“`python
import requests
import os
from typing import List

# Set the request parameters
BASE_URL = “https://devXXXXXX.service-now.com”
USER =

Pythonで動画をダウンロードするプログラムを作った話

今回は…

youtubeの動画を1チャンネルまるごとダウンロードするプログラムを紹介します。

プログラム

今回使うモジュール
“pytube“
“pandas“
“datetime“
“youtube api“

モジュールダウンロード
“pip install _________“
“python3 -m pip install __________“

まずは、ダウンロードするチャンネルの動画ID等を用意します
“`python:input.py
import pandas as pd
from apiclient.discovery import build
from apiclient.errors import HttpError

API_KEY = ‘******************’ #伏せてあります、使うときは、api keyを取得すること
YOUTUBE_API_SERVICE_NAME = ‘youtube’
YOUTUBE_API_VERSION = ‘v3’
CHANNEL_ID = ‘********’ #ここ

EC2のDeep Learning AMIインスタンスで source activate 仮想環境 できないときの対処法

# はじめに
EC2でDeep Learning AMIインスタンスを作成し、公式ドキュメント通りにpytorch用の仮想環境内で作業しようとしたらエラー吐かれたのでまとめます。

# 公式ドキュメントの記載

[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/dlami/latest/devguide/tutorial-conda.html)にはこのように記載されています。

>サーバーにログインすると、サーバーの「その日のメッセージ (MOTD)」が表示され、さまざまなディープラーニングフレームワークを切り替えるための各種の Conda コマンドが示されます。

>例えば、
`for MXNet(+Keras1) with Python3 (CUDA 10.1) _____________________ source activate mxnet_p36`
と表示された場合は、環境に MXNet、Keras 1、Python 3、および CUDA 10.1 が存在しています。また、この環境を有効化するには、次のコマンドを使用します。
`$

Pythonによる因果推論~傾向スコア~

# はじめに
傾向スコアを用いた因果推論手法について、Pythonによる実装を交えてまとめました。内容について誤り等ございましたら、コメントにてご指摘いただけますと幸いです。

# 傾向スコア

傾向スコアとは、属性ベクトル$X^i$から予測される処置が施される確率(すなわち、処置を受ける傾向)のことです。$$P(Z^i=1|X^i) = E(Z^i|X^i) = e(X^i)$$と表されます。効果検証にて傾向スコアを利用する際には、$${Y^i_1,Y^i_0} \perp Z^i | e(X^i)$$という条件付き独立の仮定が満たされている必要です。

:::note warn
[因果推論における回帰分析](https://zenn.dev/articles/f0b91f19da2812/)では、条件付き独立の仮定(CIA)
$${Y^i_1,Y^i_0} \perp Z^i | X^i$$が満たされている必要があり、傾向スコアでは条件$X^i$が$e(X^i)$に緩められているものだと覚えておくことをおすすめします。
:::

傾向スコアを用いた因果推論手法はたくさんありますが

特異値分解をリーマン多様体上の最適化で実装してみた。

# はじめに

リーマン多様体上の最適化でも特異値分解を解くことができるとのことでPythonで実装してみました。文献1のAlgorithm 4.4.3を実装したつもりですが、まだよく理解してないので間違いがあるかもしれないです。気づいた方はやさしく教えて頂けると嬉しいです。

# 特異値分解の実装

“`python
import numpy as np
import os
import datetime

class alg443():
def __init__(self):
time = datetime.datetime.now()
self.fn = time.strftime(‘%Y%m%d%H%M%S’)

def initial_point(self,A):
U0, S0, V0T = np.linalg.svd(A, full_matrices=True)
p = len(S0)
U0 = U0[:,:p]
V0 = V0T.T[:,:p]
U0 = np.ones(U0.shape)
V0

データフレームについて–05: データフレームの変容

# データフレームの変容

“`python
import pandas as pd
df = pd.DataFrame({
‘a’: [1, 2, 3, 4, 5],
‘b’: [1.2, 3.4, 5.6, 7.8, 9.0]
})
df
“`

a