>100 Views
November 07, 24
スライド概要
今回は、私、小次郎が作成した都道府県別番号マスタを使って、都道府県別番号を都道府県名に変換していきます。
元データとマスタのように、2つのデータを共通な列名で結合する場合、「merge(マージ)」を使って、下記のようにプログラムを書きます。
●pd.merge(データ1, データ2, on=“列名”, how=‘結合方法’)
「データ1」を「left」、 「データ2」を「right」と呼び、「on=」の次の列名には「left」と「right」に共通な列名を指定します。この共通な列名を「キー」と呼びます。
また、マージによる結合の仕方には、「キー」以外の列の要素(行)に関して、それぞれの行をどのように残すかにより次の4種類に分類できます。
① inner join(内部結合)→これはデフォルトとなります。
② left join(左結合)
③ right join(右結合)
④ outer join(外部結合)
************
★この動画のブログ
■ データサイエンス チュートリアル
https://tutorial4datascience.blogspot.com/
★参考資料
■ 都道県番号マスタ
https://docs.google.com/spreadsheets/d/1U8GBBfkfeVfRVhBriE2bFqd88fKtqrvR/edit?gid=742728719#gid=742728719
1 3rd STEP 応用編 医療 Section 8 マスタを使って新たな列を追加 【復習】 75 pd.pivot_table(データ名, index=“列名1” , columns=“列名2”,, values=“列名3” , aggfunc=’関数’, 他の引数) 91 pd.merge(データ1, データ2, on=“列名”, how=‘結合方法’)
2 Section 8 マスタを使って新たな列を追加 1.単年度のデータセットの作成 まずは、年度ごとの分析をしていきますので、前回作成した「df2」(「医薬品名」ごとの 「薬価」を算出した列「金額」を追加したもの)の令和2年度のみを抽出したデータセット 「df3」を作成します。
3 Section 27 ピボットテーブル(1) 基礎編の復習です!(Section 27) プログラム解説1 ピボットテーブル 必須項目 Pandasの「pivot_table」は、クロス集計表を作成する機能を持つプログラムです。 「pivot_table」は、大量のデータをすばやく集計でき、柔軟な(思い通りに)集計を行う ことができます。 75 pd.pivot_table(データ名, index=“列名1” , columns=“列名2”,, values=“列名3” , aggfunc=’関数’, 他の引数) 列名1 「表側」、すなわち、「まとめる」項目にしたい列を指定。 列名2 「表頭」すなわち、「分割」する項目にしたい列を指定。 列名3 「計算する値」にしたい列を指定。 「列名1」、「列名2」は、集計したい表によって、どちらかを省略することが可能です。 ■「列名1」を省略すると、表側は「列名3」になります。 ■「列名2」を省略すると、表頭は「列名3」になります。
4 Section 8 マスタを使って新たな列を追加 2.都道府県番号ごとの金額(薬剤費)の合計 次に、都道府県ごとに使用された医薬品の合計金額(薬剤費の合計)を求めてみ ましょう。 「pivot_table」を使い、 indexにはまとめる項目すなわち「都道府県番号」、values には計算する値すなわち「金額」 、aggfuncは関数すなわち「合計」を指定して、下 記のようにプログラムを書きます。「index」は、後にグラフを描きますので、リセットしてお きましょう。
5 Section 8 マスタを使って新たな列を追加 3.「都道府県番号マスタ.xlsx」をマイドライブにアップロードする この集計表は、「都道府県番号」になっていますが、わかりにくいので、 「都道県番号」を 「都道府県名」に置き換えていきます。小次郎が作成した「都道府県番号マスタ.xlsx」 を使います。下記のURLに保管していますので、ダウンロードして、マイドライブの「分 析.ipynb」と同じ階層にダウンロードしておきます。 https://docs.google.com/spreadsheets/d/1U8GBBfkfeVfRVhBriE2bFqd88fKtqrvR/edit?usp=sharing&ouid =106292536926943509337&rtpof=true&sd=true 都道府県番号マスタ.xlsx
6 Section 8 マスタを使って新たな列を追加 4. 「都道府県別番号マスタ.xlsx」を読み込む マイドライブの「都道県別番号マスタ.xlsx」を読み込み、「kenbangou」と宣言します。 この時、「都道府県番号」を整数型「int」で読み込みます。これは、後ほど、 「都道府県 番号」順にソートするためです。 「index」は、リセットしておきましょう。
7 Section 8 マスタを使って新たな列を追加 プログラム解説1 merge(マージ) 2つのデータを2つのデータに共通な列名で結合する場合、「merge(マージ)」を使って、91のよ うにプログラムを書きます。これは、トランザクションデータにマスタを使って新たな列を追加するよ うな場合によく使います。 ※ トランザクションデータ:業務や取引、システムの稼働状況などを記録したデータです。データベースを利用するほどデータ量が増えていき、 日々の業務データでは膨大な量になります。 ※ マスタ:マスタデータを略したもので、業務で扱う基本データのこと(【例】 商品マスタ、顧客マスタ、従業員マスタ、給与マスタ等)。 91 pd.merge(データ1, データ2, on=“列名”, how=‘結合方法’) 「データ1」を「left」、 「データ2」を「right」と呼び、「on=」の次の列名には「left」と「right」に 共通な列名を指定します。この共通な列名を「キー」と呼びます。 この「キー」により、 「left」と「right」のデータが結合されるのですが、 「キー」が「left」にはあるが 「right」に無い行が存在することもあります。その逆もあります。そこで、それぞれのデータの行をど のように残すのかを指示する方法が「how=‘結合方法’」です。 次のページで解説しますが、何も指示しないと(デフォルト)、 「キー」が「left」と「right」の両 方にある行を残す「how=‘inner’」になります。
8 Section 8 マスタを使って新たな列を追加 プログラム解説2 merge(マージ)の結合方法 マージによる結合の仕方には、「キー」以外の列の要素(行)に関して、それぞれの行をどのよう に残すかにより次の4種類に分類できます。 ① inner join(内部結合)→デフォルト leftとright両方に共通するキーを持つ要素(行)を残す pd.merge(データ1, データ2, how=‘inner’) ② left join(左結合) leftを基準に結合。rightにキーが存在しない要素(行)も残る。 pd.merge(データ1, データ2, how=‘left’) ③ right join(右結合) rightを基準に結合。leftにキーが存在しない要素(行)も残る。 pd.merge(データ1, データ2, how=‘right’) ④ outer join(外部結合) leftとrightのすべての要素(行)が残る。 pd.merge(データ1, データ2, how=‘outer’)
9 Section 8 マスタを使って新たな列を追加 5.「都道府県」の列を追加(1) 「都道府県番号」をキーにして、元データの「df4」に「kenbangou」をマージ(結合)し ます。 マージの結合方法は、「how=‘left’」とします。
10 Section 8 マスタを使って新たな列を追加 6. 「都道府県」の列を追加(2) ためしに、マージの方法を、inner join(内部結合)でやってみます。 inner joinはデ フォルトなので、「how」以下を記載しない「df5_1」を作ってみます。先ほどの「df5」と同 じように結合データができました。
11 Section 8 マスタを使って新たな列を追加 7.集計表を都道府県番号順に並べ替える 細かいことですが、北海道の次に群馬県が来る表は、見にくいので、Section 20の 「⑰ データ名.sort_values(“列名”)」を使って、ソートします。後々使うので、 「inplace=True」も加えておきます。