>100 Views
September 07, 23
スライド概要
データサイエンス体験動画「データサイエンス チュートリアル 猫のタロー編」、第17回目、Section 15「分析するための列の作成」です。
Section 13で解説したOLAPキューブの分析手法を実践していくために、その前段階であるデータ作成を行います。 「Quantity」(数量)と「UnitPrice」(単価)の積から合計値の列を追加、データ型datetimeから文字列で年、年月を取り出した列の追加を解説します。
今回の動画は、それらを実現する下記のプログラムを解説します。
㉛ データ名[“新列名”] = データ名[“列名1”] * データ名[“列名2”]
㉜ データ名[“新列名”] = データ名[“列名”].dt.strftime(“%Y%m”)
1st STEP同様、動画のテキスト、追加情報は下記のブログを参考にしてください!
■この動画のブログ
データサイエンス チュートリアル
https://tutorial4datascience.blogspot.com/
1 2nd STEP 集計とグラフ描画 Section 15 分析するための列の作成 ㉛ データ名[“新列名”] = データ名[“列名1”] * データ名[“列名2”] ㉜ データ名[“新列名”] = データ名[“列名”].dt.strftime(“%Y%m”)
2 Section 15 分析するための列の作成 1. OLAPキューブの分析手法 それでは、これからSection 13で解説したOLAPキューブの分析手法を実践していきま しょう。ここでは、スライシングとドリルダウンを行っていきます。 Section 15は、その前段階のデータ作成です。
3 Section 15 分析するための列の作成 2.列と列の四則演算 「id_pos6_2」は、「InvoiceNo」(請求番号)ごとのデータですが、「Quantity」(数 量)と「UnitPrice」(単価)の列はありますが、 「InvoiceNo」ごとの合計金額の列が ありません。分析を進めていくためには、合計金額の列を作成すると便利ですので、それを 作りましょう。 「Quantity」 と「UnitPrice」を掛け合わせれば、合計金額になりますね。 異なる「列1の数値」と「列2の数値」を掛け合わせた数値を格納する新しい列を作成する には、㉛を使います。この場合、列1と列2はすべての要素が数値である必要があります。 ㉛ データ名[“新列名”] = データ名[“列名1”] * データ名[“列名2”] 「*」は、掛け算ですが、もちろん、足し算「+」、引き算「ー」、割り算「/」も使えます。
4 Section 15 分析するための列の作成 参考:新たな列の作成 列と列との掛け算だけでなく、列に数値を加えたり、文字列を加えることも可能です。 ■列のすべての要素にある数値を加える。ただし、列は数値(整数か小数点)であること が必要。 データ名[“新列名”] = データ名[“列名”] + 1 ■列のすべての要素にある文字列を加える。ただし、列は文字列であることが必要。 データ名[“新列名”] = データ名[“列名”] + “_all”
5 Section 15 分析するための列の作成 3. データ型datetimeの一部を文字列に変更する データ型datetimeは計算が可能ですので便利なのですが、集計表を作る時は長いの で見た目がよくありません。年月日で十分です。 このような時は、カンマに続けて「dt.strftime()」を使います。()内には、「” “」で囲んで、 「書式コード」を記入します。例えば、”%Y%m”は西暦4桁と月2桁、”%d”は日2桁 をdatetimeの要素から文字列として抽出します。 他の代表的な書式コードは、次ページの「参考:書式コード」を参照してください。 「dt.strftime()」を使って、任意の書式コードで指定した文字列に変換した新しい列を 作成するには、下記のプログラムを使います。 ㉜ データ名[“新列名”] = データ名[“列名”].dt.strftime(“%Y%m”)
6 Section 15 分析するための列の作成 参考:書式コード 「dt.strftime()」の()内に「” ”」で囲んで文字列を指定する「書式コード」には、下記のよう なものがあります。 書式コード %Y %m %d %H %M %S %y %l %x %X %a %A %z %Z 説明 西暦(4桁表記。0埋め) 月(2桁表記。0埋め) 日(2桁表記。0埋め) 時(24時間制。2桁表記。0埋め) 分(2桁表記。0埋め) 秒(2桁表記。0埋め) 西暦の下2桁(0埋め) AM/PMを表す文字列 日付をMM/DD/YY形式にしたもの 時刻をhh:mm:ss形式にしたもの 曜日の短縮形 曜日 現在のタイムゾーンとUTC(協定世 界時)とのオフセット 現在のタイムゾーン 例 2021 11 04 17 37 28 21 PM 11/04/21 17:37:28 Thu Thursday +0900 JST 出典:https://atmarkit.itmedia.co.jp/ait/articles/2111/09/news015.html
7 Section 15 分析するための列の作成 ㉛ データ名[“新列名”] = データ名[“列名1”] * データ名[“列名2”] まずは、㉛を用いて、「id_pos6_2」に 「Quantity」(数量)と「UnitPrice」(単価)を掛け 算した値を格納する列「Total」を追加します。 これは、 「InvoiceNo」(請求番号)ごとの合計金額になります。
8 Section 15 分析するための列の作成 ㉜ データ名[“新列名”] = データ名[“列名”].dt.strftime(“%Y%m”) 次に、㉜を使って、年月を格納する「Month」、年を格納する「Year」という名称の列を追加しま す。
9 Section 15 分析するための列の作成 ⑫ データ名[[“列名”]] 見栄えよくするために、時間関係をまとめたり、金額関係をまとめるために⑫を用いて、 「id_pos7」と宣言しておきましょう。