アラフォーから色々始めるリケジョの独り言

アラフォーになって色々始めてみました手探りでがんばります。

【Python】100本ノックやってます。p‐58~p-61

P-058: 顧客データ(df_customer)の性別コード(gender_cd)をダミー変数化し、顧客ID(customer_id)とともに10件表示せよ。

ダミー変数とは何ぞやから始まる。

self-methods.com

これがわかれば特に難しいことはなし。

 

P-059: レシート明細データ(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、売上金額合計を平均0、標準偏差1に標準化して顧客ID、売上金額合計とともに10件表示せよ。標準化に使用する標準偏差は、分散の平方根、もしくは不偏分散の平方根のどちらでも良いものとする。ただし、顧客IDが"Z"から始まるのものは非会員を表すため、除外して計算すること。

ritsu-programming.hatenablog.com

意味が分からなすぎた、、、

www.codexa.net

 

標準化=一般的に平均0、分散と標準偏差が1になるように値を変化させる
正規化=一般的に最大値を1、最小値0にする

 

pandasに見慣れてしまったので、他のはちょっと、、、ってなって、pandasで解決したけど、解答を見るとまた違う感じ。

手段なんてものは調べれば出てくるので、そもそも正規化・標準化の意味を知る方が優先かな・・・(;´∀`)

 

P-060: レシート明細データ(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、売上金額合計を最小値0、最大値1に正規化して顧客ID、売上金額合計とともに10件表示せよ。ただし、顧客IDが"Z"から始まるのものは非会員を表すため、除外して計算すること。

59で見たサイトを見てそのままやってみた。

pandasがやっぱりわかりやすい。

 

P-061: レシート明細データ(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、売上金額合計を常用対数化(底10)して顧客ID、売上金額合計とともに10件表示せよ。ただし、顧客IDが"Z"から始まるのものは非会員を表すため、除外して計算すること。

Numpy使えば難しくはないんだけど、解答で+0.5してるのなんで・・・?これもまた数学的な知識不足のせいだな。

infoma-study.com

 

ほぼもう答えだけど笑。その理由がここに書いてあった。

omathin.com

これで完了ではありますが、常用対数化には注意点が必要です。

それは常用対数化するデータの中に0が含まれている場合の対応です。 常用対数化する際には10(0)は計算できないのです。高校数学で学ぶ真数条件というものですね。これに対処するために、一般的には1を加える対応を行います。なぜ1なのかという理由は特に存在しないようです。

 

そもそも対数化の目的がわからないのと、対数が何を示しているのかがわからないから、1を足してもいい理由がわからない・・・