296 Views
February 22, 24
スライド概要
今回は、NDBオープンデータのホームページにあるデータを読込み、見やすい形に整形していきます。
そのために、下記のようなプログラムを解説していきます。
● Excelの最初の何行かを読み飛ばす「skiprows」、「skipfooter」
● データの列名を変更する「rename」
● 文字列を上下と同じように埋める「fillna」
★この動画のブログ
■ データサイエンス チュートリアル
https://tutorial4datascience.blogspot.com/
1 3rd STEP 応用編 医療 Section 2 URLからデータを読み込む 80 url = “Excelファイルのありか" データ名 = pd.read_excel(url) 81 skiprows=[数字1, 数字2, 数字3, ・・・] 82 データ名.rename(index={古い行名1:新しい行名1, ・・・}, columns={古い列名2:新しい列名2,・・・}) 83 データ名["薬効分類"].fillna(method='ffill')
2 Section 2 データの読み込み 1.フォルダー、ノートブックの作成 まずは、Googleドライブの「マイドライブ」に「医療」というフォルダーを作成し、左上の 「+ 新規」→「その他」→「Google Colaboratory」をクリックして、新しいノートブックを作り、 名称を「連結データの作成.ipynb」とします。
3 Section 2 データの読み込み プログラム解説1 Excelファイルの読み込み WEBに存在するExcelファイルをダウンロードするには、下記のプログラムを使います。 80 url = “Excelファイルのありか" データ名 = pd.read_excel(url) 今回の例のように、最初の2行や、4行目を読み込みたくない場合は、引数としてskiprows を使います。 すなわち、Excelの最初の何行かを読み飛ばす場合は、skiprows=数字、 複数の行を読み飛ばす場合は、 81 skiprows=[数字1, 数字2, 数字3, ・・・] と記入していきます。 数字1、数字2、数字3は、Excelの行番号で、0から始まることに注意してください。 同様に、skipfooterを使うと、最後の何行を読み込まないように指定ことができます。この場 合も、 Excelの行番号は0から始まることに注意してください。
4 Section 2 データの読み込み 2.Excelファイルの読み込み(読み込み方法を指定していない場合) 80を使って、 Section 1 スライド8の一番最初のURLを読み込んでみましょう。 引数を何も指定しないと、下記のようになります。
5 Section 2 データの読み込み 3.Excelファイルを見てみよう Excelファイルを見てみると、表を見やすくするために、Excel特有の処理が施してあります。 これらは、連結データを作成する際に、邪魔になります。 最初の2行は、但し書きなので、 必要ありません。 2行が結合されています。
6 Section 2 データの読み込み 4.不要な行を読み飛ばす 81を使って、1、2、4行目を読み飛ばすと、少しきれいになってきました。 それでも、改行を表す「\」が入っている列名(①)、薬効分類が最初の一行だけしか表示さ れていない(②)というの不具合が生じています。 ① ②
7 Section 2 データの読み込み プログラム解説2 列名を変更 データの列名を変更する場合は、プログラム82を用います。 82 データ名.rename(index={古い行名1:新しい行名1, ・・・}, columns={古い列名2:新しい列名2,・・・}) 行名・列名のいずれかのみを変更したい場合は、引数indexとcolumnsのどちらか一方だけ を指定します。 ただし、元のデータは変更されないので、後々使う場合は新たなデータ名を宣言しておきます。
8 Section 2 データの読み込み 5.①改行を表す「\」が入っている列名の修正 ①を82を使って、修正してみましょう。
9 Section 2 データの読み込み プログラム解説3 文字列を上下と同じように埋める Excelでは、行を結合して「薬効分類」を表示させていますので、Pandasで読み込んだ時に 欠損値「NaN」と示されてしまいます。 一つ上の「薬効分類」と同じものですから、一つ上と同様な文字列を埋めなくてはなりません。 その場合、「fillna(method=‘ffill‘)」を用います。 83 データ名 ["薬効分類"].fillna(method='ffill') 後ろの値に置換する場合は、 「fillna(method=‘bfill‘)」を使います。
10 Section 2 データの読み込み 6.②薬効分類が最初の一行だけしか表示されていない点を修正 ②を83を使って、上の薬効分類の数字で埋めましょう。