みなさん,こんにちは。
シンノユウキ(shinno1993)です。
食品標準成分表をPower Queryで整形する方法について,連載形式で紹介しています。
前回の記事はこちら:
前回はPower Queryで複数のシートを縦に結合する方法を紹介しました。
今回はPower Queryで不要な行・列を削除する方法を紹介します。前回は複数のシートを結合し,データを読み込みましたが,不要な行・列が存在します。それらを削除していきましょう。
では行きましょう!
Power Queryで不要な行・列を削除する方法
行を削除する方法
Power Queryでは行を削除する方法として多くの種類が用意されていますが,使用の頻度が高いのは下記の3つだと思います:
- 先頭から数行を削除:データの先頭から数行を削除します
- 途中から数行を削除:特定の行から数行を削除します
- フィルタリングによる削除:データのフィルタリングにより,行を削除します
このうち,食品標準成分表の整形で使用するのは1と3です。正直,この2つさえ使いこなせれば,ほとんどのケースに対応可能だと思います。私が主に使っているのもこの2つです。これについて,下記で紹介します:
先頭から数行を削除する方法
行を削除する前に,ヘッダーとして残すべき行を決めましょう。食品標準成分表のExcelファイルを確認すれば分かりますが,栄養素項目名は階層構造になっており(炭水化物→利用可能炭水化物→差し引き法による利用可能炭水化物など),ヘッダー行として1行を選び出すのは困難です。そこで,栄養素項目名でなく,成分識別子をヘッダーとして残すようにすることとします。こうすることで,計算に使えるデータ形式として変換できます。
まず,先頭から不要な行を削除します。成分識別子を残すのであれば,1行目から10行目まで削除すればOKです。
メニューの「ホーム」から①「行の削除」→②「上位の行の削除」をクリックします:
ダイアログが開きますので,①行数で「10」を入力→②「OK」をクリックします:
下記のように,1~10行目まで削除されたテーブルになりました:
次に,この段階で成分識別子のテーブルをヘッダーにしてしまいましょう。「ホーム」→「変換」にある「1行目をヘッダーとして使用」をクリックします:
これで,1行目(成分識別子)をヘッダーにすることができました。
ただし,これに付随して2つほどの作業が必要になります。
まず,列名を変更しましょう。ヘッダー行として昇格したセルに値が入っていなかったりして,列名がわかりづらくなっている列があります。下記に従い,それぞれの列を右クリック→「名前の変換」から名前を変更します:
元の列名 | 変更後 |
---|---|
1穀類 | 食品群 |
Column2 | 食品群番号 |
Column3 | 食品番号 |
Column4 | 索引番号 |
成分識別子 | 食品名 |
Column63 | 備考 |
次に型の変更をステップから取り除きます。ヘッダー行に昇格させたことにより,自動的にそれぞれの列のデータ型が変更されてしまいました。この変更が問題ないことも往々にしてあるのですが,今回は自動的に型変換されると困る事情もあります。ですので,この型変換をステップから除外します。
右側の「適用したステップ」にある「変更された型」の左側にある「×」をクリックします:
これで変更された型をステップから除外することができました:
次にフィルタリングによる行の削除に移ります。
フィルタリングによる行の削除
さて,先頭行を削除した状態でも,まだ不要な行は残っています。今回は,複数のシートを1つのシートとして結合した形になっています。そのため,シートを結合部分に結合したシートの見出し部分が残ってしまっています:
これをフィルタリングによって削除していきましょう。フィルタリングを使うことで,特定の値を含む列のみ残したり,逆に特定の値を含む行のみ削除したりできます。
行を削除する方法については,結局のところ,削除したい行を削除さえできれば,方法は何だって構いません。ただもちろん,手数を少なく・確実にできればベストです。
先に見たように,今回削除したい行の特徴として,「食品群番号」がnullであるということがあります。ですので,フィルタリングによって「食品群番号」がnullの行を削除してしまいましょう。
①「食品群番号」の列のフィルターボタンをクリック→②nullのチェックを外します→③「OK」をクリックします。
これで不要な行を削除することができました!
列を削除する方法
最後に不要な列を削除します。今回の場合,下記が不要な列です:
- 食品群(1列目):食品群番号があれば不要
- Column16:エネルギーの算出に「利用可能炭水化物(単糖当量)」を用いたかどうかのフラグ(計算には不要)
- Column19:エネルギーの算出に「差し引き法による利用可能炭水化物」を用いたかどうかのフラグ(計算には不要)
- Column34:なぜか入っている空列(書籍用?)
これらの列を削除しましょう。といっても,行の削除と比べて列の削除は簡単です。
①それぞれの列を右クリック→②「削除」を選択します:
すべての列を削除したらOKです。これで不要な列を削除できました。
最後に,クエリ名を編集して,書き出しましょう。サイドバーにある「クエリの設定」→「名前」の箇所を「本表」にします:
そして,ホーム→「閉じて読み込む」を選択し,Excelのテーブルとして書き出してみましょう。下記のように,2,478件のデータが読み込まれていれば,概ね問題ないかと思います:
もし失敗していたとしても,メニューの「クエリ」→「編集」から再度編集できます。このように,やり直しやすいのもPower Queryの魅力の1つです。
まとめ
今回は,Power Queryで不要な行・列を削除する方法について紹介しました。
結構面倒な感じに思えたかもしれませんが,上記の通りでなくても,最終的に不要な行・列が削除できてれば問題なしです。
次回は,Power Queryで値を置換する方法について紹介したいと思います。
連載目次
- 食品標準成分表をPower Queryで整形する方法【栄養士向け】
- 栄養士のためのPower Query基礎知識【できること・メリット】
- 栄養士のためのPower Query超入門【インポート・変換・書き出し】
- Power Queryで複数のシートを縦に結合する方法
- Power Queryで不要な行・列を削除する方法【データクリーニング】現在のページ
- Power Queryで値を置換する方法【完全一致と部分一致】
- Power Queryで食品標準成分表の別表のデータを整形する方法
- Power Queryで特定シートのみに含まれるレコードを抽出する方法
- Power Queryで複数のシートを横に結合する方法【クエリのマージ】
- Power Queryでファイルパスを相対パスで指定する方法