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

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

データフレームについて–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. パ

元記事を表示

言語処理100本ノック解いてみた(今日から!)

# お腹すいた
今日からずっと書きます。フィードバックよろしく。
言語処理100本ノック : https://nlp100.github.io/ko/ch01.html
ど偉い俺様のギット:https://dongkeuny50.github.io/
初作成:2022/06/21
## 問1
“`python
a = “stressed”
print(a[::-1])
“`
説明するまでもない。
## 問2
“`python
“”.join([“schooled”[i* 2 + 1]for i in range(4)])
“`
同じく。競プロやってたらすぐです。これも一文でできなかったら今すぐ競プロやれ。

## 問3
“`python
“”.join([“shoe”[_] + “cold”[_] for _ in range(4) ])
“`

## 問4
“`python
from collections import Counter
string = “Now I need a drink, alcoholic of course, after the heavy

元記事を表示

condaを叩いたら「AttributeError: module ‘colorama’ has no attribute ‘init’」が出るようになり、なんとか解決できた話

# 0. 事の発端
それはPythonでのデータ分析を勉強中のことでした。
自然言語処理のお勉強で、形態素解析をするためにMeCabをjupyter noteboookで使いたい(ちなみにOSはWindows11)と思い、Anacondaにインストールする作業をしていました。
ところが、MeCabとMeCab-python3の両方をインストールしないといけないことが分かっておらず、コマンドプロンプトでMeCabのバージョンは出力できるのにいざpythonでimportするとエラーになったことで「あれれ~おかしいぞ~~??」とあれこれpathを変えてみたりAnacondaをupdateしてみたりしているうちに、コマンドプロンプトからもAnaconda Promptからも、condaコマンドを使おうとするととにかく「AttributeError: module ‘colorama’ has no attribute ‘init’」とエラーが出るようになってしまいました。

ちなみに超蛇足ですが、この他「コマンドプロンプトからjupyter notebookが開けなくなった」「コマンドプロン

元記事を表示

データフレームについて–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
“`

<

ec2ssmが便利だと思う

## ec2ssmが便利だと思う
某所でやっつけでつくったec2のNameタグをタブ補完してssmログインするツールを引数にprofileを指定して汎用性をもたせました。
ssmの設定については、このあたりの記事を参照。

https://zenn.dev/t_morooka/articles/eb98e6a5c9a493

ec2ssmはこちら。
https://github.com/yuhiwa/ec2ssm

ssm自体の説明は他にまかせます。
ec2ssmは“`ec2ssm Nameタグ“`でec2にログインできるaws cli(aws ssm)のラッパーです。

### 使い方

#### 1. Nameタグをインスタンスに設定する
分かりやすい名前をインスタンスのNameタグに設定しましょう。

#### 2. ~/.aws/credentialsに記載する
“`
# ~/.aws/credentials

[default]
aws_access_key_id=…
aws_secret_access_key=…

[myprofile]
aws_acces

データフレームについて–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
“`

ABC256E問題をトポロジカルソートっぽく解いた話

### E問題をトポロジカルソートっぽく解いた話
公式解説のYoutube放送中にコメントで「トポロジカルソートで解いた」と書いたら[snuke](https://atcoder.jp/users/snuke)さんに「どうやって解くんだろ」と言われたので「あれ?あまり一般的な解法ではないのかな」と思ってここで共有させていただきます。Qiitaに解法記事を載せるのは初めてなので、図や文章が読みづらかったらゴメンナサイ。
### 問題を見たときまず考えたこと
[ABC256E](https://atcoder.jp/contests/abc256/tasks/abc256_e)これ見た瞬間に、まず真っ先に頭に浮かんできたのは[ABC223D](https://atcoder.jp/contests/abc223/tasks/abc223_d)だったんですよね。こういう「AさんはBさんより先に」みたいな問題構造はA→Bの有向グラフだと捉えると上手くいくケースが多いです。

実際に今回の問題の入力例2を元にすると、こんな感じの有向グラフが出来上がります。
![スクリーンショット 2022-06

データフレームについて–04: 行,列の削除

# 行や列を削除する `.drop()`

“`
drop(labels=None, axis: ‘Axis’ = 0, index=None, columns=None,
level: ‘Level | None’ = None, inplace: ‘bool’ = False,
errors: ‘str’ = ‘raise’)
“`

pandas 0.21.1 以降では `labels` と `axis` で指定していたものが `index`, `columns` で指定できるようになった。

新しいバージョンをインストールして,`index`, `columns` を使おう。

“`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],
‘c’: [‘A’, ‘B’, ‘C’, ‘D’, ‘E’]
})
df
“`

【Mac M1環境】MS outlookから数百通の個別メールを、連続自動送信するコードの書き方。(丸2日作業を瞬殺した話)

<やりたい事>
下記の様なメールリストが、あります。(実際にには数百の宛先に送付する必要があります。)
![list0615.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1665829/0dee25a9-d930-c1d5-618a-d0d495805a29.png)

上のメールリストに対して、下記の様なOutlookメールを個別に自動送信して、楽をしたい。
(尚、手動のBCCメールは、経験上、誰も読まないのを知っているので、楽ですが、ダメです。あくまでも個別メールにしたいと思っている。)

```
山田様、
これからは本文です。本日は、こんにちは!テストです。先日はありがとうございました。これはテストです。
```
これですが、メール数通位なら、兎も角、数百通を手動で発信したら、丸2日は掛かります。また、手動特有のメール誤送信がマジで怖いですね。
従って、手動メール送信は論外です。

<もし、Windows環境なら>
因みに、過去にも、Windows環境なら構築したことがあります。
「Pytho

ベイズ統計学入門(1) ベイズ更新とは

観測データを増やしていくことで確率を更新していくベイズ統計学の基本的な考え方です。
例えば、赤球と白球が入った袋Aと袋Bがあったとします。
袋Aには(赤球,白球)=(6,4)
袋Bには(赤球,白球)=(5,5)
の分だけそれぞれの球が入っていることがわかっているとします。
ここで、A,Bどちらの袋であるかがわかっていない状態で袋から玉を取り出してみてA,Bどちらかを言い当てるということをしてみましょう。
(※ただし取り出した球は色を見た後すぐに復路に戻すとします。)

一回目: 赤が出ました。さて、どちらの袋でしょうか? …当然一回しか取り出していないのでわかりませんね(笑)
二回目: 赤が出ました。また赤です。もう一回取り出してみます。
三回目: 赤が出ました。なんとなくこの袋は赤が多いようだからAっぽいな。。。?

と回数を重ねていき、赤が出た回数が多ければ多いほど袋Aである確率(確信)が頭の中で更新されていくイメージが湧くかと思います。
これがいわゆるベイズ更新と言われるものです。データが多ければ多いほど精度は良くなっていくという直感的に理解しやすいのではないでしょうか?

データフレームについて--01

# データフレームって,みんなちゃんと理解していると思っているんだけど,念の為

## 1. 簡単なデータフレーム例の作成法

### 1.1. 方法1

辞書をデータフレームに変換する場合。

```python
import pandas as pd

df = pd.DataFrame({
"a": [1, 2, 3, 4, 5],
"b": ['a', 'b', 'a', 'b', 'b']
})

print(df)
```

a b
0 1 a
1 2 b
2 3 a
3 4 b
4 5 b

実行環境によっては,print() を使うときと,単に名前を入力するときで,表現に違いがあることもある。

以下では,表示の簡略化のため print() を明示的に使うことにする。

```python
df
```

a