117 Views
March 06, 25
スライド概要
forループで一気に作成したデータを縦型に変形し、本編で作成したデータ「naihuku」と同じ形に整形していきます。本編を思い出して、復習しましょう。
その後、2つのDataFrameが同じものかどうか確認します。
1 3rd STEP 応用編 医療 Supplement 2 DataFrameの比較 34’ データ名.reset_index(drop=True) 96 データ1.equals(データ2) 97 データ1.compare(データ2)
2 Supplement 1で作成したデータ24個を、本編で行ったように、縦型に変形した一つ のデータにまとめます。24個のデータは、フォルダー「データ2」に保管されていますね。 ここからしばらくは、本編の復習になります。
3 Supplement 2 DataFrameの比較 1.フォルダー「データ」の全ファイル名の取得 データを結合するプログラムに渡すために、「glob」を使って、フォルダー「データ2」の全ファイル名 を取得し、「all_files」と宣言します。
4 Supplement 2 DataFrameの比較 2.結合したデータの作成 フォルダー「データ2」に格納されている24のファイルを読み出し、縦型に結合していきます。 「glab.glob」 で取得したファイル名のリスト「all_files」を「forループ」で逐次受け取り、 「append」を使って、「pd.read_csv」で読み込んだデータを末尾に加え、空の「list」に追加 していきます。次にその「list」 を「concat」に渡し、「list」 のデータを結合します。
5 Supplement 2 DataFrameの比較 3.縦型(long型)に変換する(1) 「melt」 を使って、結合したデータ「df_all」を縦型(long型)に変換します。
6 Supplement 2 DataFrameの比較 4.縦型(long型)に変換する(2) 結果は、下記のようになります。 列名「個数」の要素に「-」があります
7 Supplement 2 DataFrameの比較 5. 「-」をNaNに置換する データ「df_all4」をよく見ると、列名「個数」末尾の方に、「-」が存在します。 これは、役所が作成した文書によく見られますが(Excelの列を結合しています)、データ が存在しないことを表します。しかし、Pythonはその意味を理解しません。欠損値「NaN」 と変換しておきましょう。
8 Supplement 2 DataFrameの比較 6.データの保存 結合して、縦型に変換したデータ「df_all2」を保存します。 名前は「naihuku_new」で、csv形式でフォルダー「医療データ」直下に保存しましょう。
9 「naihuku_new」と本編で作成した「naihuku」は、本当に同じものでしょうか? 確認してみましょう!
10 Supplement 2 DataFrameの比較 プログラム解説1 reset_index( )の引数 「2nd STEP 集計とグラフ描画」の「Section 16 seabornでグラフ描画(1)」では、 groupbyを使って集計表をseabornでグラフ化する際に、34を使いました。 34 データ名.reset_index() 「2nd STEP 集計とグラフ描画」の「Section 16 seabornでグラフ描画(1)」では、 groupbyを使って集計表をseabornでグラフ化する際に、34を使いました。 元のindexを削除し、データに残らない様にするには、34’を使います。 34’ データ名.reset_index(drop=True)
11 Supplement 2 DataFrameの比較 7.「naihuku」の読み込みとソート 本編で作成したデータ「naihuku」を読み込みます。 この際、不要なindexを読み込まないように「index_col=0」を引数に追加します。その後、 ソートして、「reset_index(drop=True, inplace=True)」とし、これも不要なindexを 読み込まないようにします。
12 Supplement 2 DataFrameの比較 8.「naihuku_new」の読み込みとソート 先ほど作成したデータ「naihuku_new」を読み込みます。 「naihuku」を読み込んだ時と同様、不要なindexを読み込まないように「index_col=0」を 引数に追加します。その後、ソートして、「reset_index(drop=True, inplace=True)」とし、これも不要なindexを読み込まないようにします。
13 「naihuku」と「naihuku_new」の列名は下記のようになります。 '薬効分類', '薬効分類名称', '医薬品コード', '医薬品名', '薬価基準収載医薬品 コード', '薬価', '後発品区分', ‘年度’, '剤型_場所', '都道府県番号', '個数’ ‘医薬品名‘が決れば赤色の列の要素は、自動的に決まります。 すなわち、「医薬品名」、 「年度」、 「剤型_場所」 、「都道府県番号」が決れば、たっ た一つの行を選ぶことができますね。 DataFrameの比較をするために、「equals」を使いますが 「equals」は、各行ごとに比較しますので、各行の順番 を揃えておく必要があります。
14 Supplement 2 DataFrameの比較 9.「naihuku」と「naihuku_new」のデータ型の確認 「naihuku」と 「naihuku_new」のデータ型を 比較してみましょう。 改行文字「¥n」を入れることによ り、二つのデータの結果を縦に表 示することができ、比較しやすく なります。 列「薬効分類」のデータ型が異 なっていますね。 データ型が異なっていると、 DataFrameの比較ができませ んので、揃えることにします。
15 Supplement 2 DataFrameの比較 10.「naihuku」と「naihuku_new」のデータ型の確認 「naihuku」の「薬効分類」が、小数になっていますので、整数に替え、それを「naihuku2」と 宣言しておきます。
16 Supplement 2 DataFrameの比較 プログラム解説2 equals 2つのDataFrameが同じものであるかどうかを判定するには、「equals」を使います。 96 データ1.equals(データ2) 結果が「True」なら2つのDataFrameはすべての要素が同じ、「False」なら同じデータで はありません。 【参考】 値の違うindexと列を特定するには、「compare」を使います。 97 データ1.compare(データ2)
17 Supplement 2 DataFrameの比較 11.「naihuku2」と「naihuku_new」を比較 「equals」を使って、「naihuku2」と「naihuku_new」を比較します。 結果に、「True」が出ているので、この2つは等しいデータです。 forループを使った今回のプログラムにミスはなかったということですね。
「3rd STEP 応用編 医療」を終了します! 最後までご覧いただき、ありがとうございました。 4th STEPは、機械学習をテーマにする予定です。 データサイエンス チュートリアル データ思考を身に付けよう!