2775575 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

One of my favorite things is ...

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X
2019.08.02
XML
カテゴリ:データ分析
​ 7月25日に、「2019 OK」という小惑星が地球の近くを通り過ぎて行きましたが、NASAのサイトhttps://cneos.jpl.nasa.gov/ca/)から、地球に接近した(これから接近する)小惑星についてのデータをダウンロードすることができます。

 NASAのサイト
からダウンロードした小惑星についてのデータですが、大きさの推計値が一つのセルの中に「59m - 130m」という形で書き込まれています。しかも、単位は「m」だけでなく、「km」の場合もあります。

 そこで、Excelの関数を用いて、推計値の数字だけを取り出しました。

 まず、「59m - 130m」のようなデータを、下限値と上限値の2列の数字に分けます。下記は、H列にデータがある場合の関数です。

 LEFT関数は、文字列の左側から指定した数の文字を書き出します。RIGHT関数は、文字列の右側から指定した数の文字を書きだします。
 FIND関数は、指定した文字が左から何文字目にあるのかという数字を返します。
 LEN関数は文字列の文字数を返します。



 下限値を取り出す関数:=LEFT(H2,FIND("-",H2)-1)


 上限値を取り出す関数:=RIGHT(H2,LEN(H2)-(FIND("-",H2)))


 mやkm付きの数字を読み込んだので、次に、数字だけを読み込みつつ、kmのデータをmに換算します。最後に1を掛けているのは、数字の文字列を数値データにするためです。

【追記:ExcelやPower BIのPower Query エディターで、「区切り記号で列を分割する
方法の方が簡単でした。ただし、関数で処理する方法も、元データシートと関数を設定した変換用シートを分けて、新規データを元データシートに加えて変換する形にすれば、データ更新が簡単だったりします。もし、kmからmへの単位変換をPower Queryエディターでできれば、関数が不要になります。

【追記2:Power Queryでkmの単位変換も含むすべての処理ができることを確認しました。Power Queryは、強力、かつ便利すぎるので、もはやExcelのシートで関数を使って前処理をする方法はあり得ないと思うようになりました。元のデータには一切触らずに、クエリで処理するので、繰り返し作業に最適です。詳細は関連記事にあります。関連記事:▼NASAのNEOデータを、Power Queryで前処理してみました:コードを使わずに前処理が可能です​


 下記の関数では、セル内に「km」のkを探し、kがなかったら数字を取り出します。kがあったら数字を取り出して1000を掛けて、m単位にします。

 IF関数では、「IF(論理式, 真の場合, 偽の場合)」という形で、論理式が真の場合と偽の場合で処理が分かれますが、この機能を利用しています。


 I列に下限値データがある場合

=IF((IFERROR(FIND("k",I2),50)=50),LEFT(I2,FIND("m",I2)-1),LEFT(I2,FIND("k",I2)-1)*1000)*1


 k列に上限値データがある場合:関数の内容は上記と同じ

=IF((IFERROR(FIND("k",K2),50)=50),LEFT(K2,FIND("m",K2)-1),LEFT(K2,FIND("k",K2)-1)*1000)*1
 
 FIND関数での「エラー」をIFERROR関数で処理します。kがなかった場合に「50」という数字が返るので、それをIF関数で判定します。「50」という数字には意味はなく、「30」でも「100」でもいいのですが、セル内の文字数を上回る数字にします。

 IFERROR関数が50だったら、kがなかったということになりますが、IF関数としては「真」の場合なので、m単位の数字の読み込みだけをします。

 FIND("k",I2)が4とかになった場合は、4番目にkがあったということになり、km単位のデータということになります。この場合、IF関数としては「偽」の場合になるので、数字を読み込んで、1000を掛けて単位を変換します。

 本当は、APIを用いてNASAのデータベースに接続して、データをダウンロードしながら、データを整形するようなプログラムを書くのが理想ですが、そのような技能はないので、Excelのシート上で、関数を使ってデータを集計できるようにしました。
 せめて、VBAを使う方法ができればとも思いますが、諸般の事情により、Excelの関数で処理しました。


 データを分析する前に、データを分析できる形に加工する必要が本当によくあります。

 データの整形やクレンジングなど前処理ができていなければ、データ分析ができないので、データの前処理はデータ分析にとって、最初の大きな関門です。
 
 世の中にあるデータの形式がもっと汎用性があって、もっと利用しやすい形になっていれば、と思うことが多々あります。


▼Microsoft Power BIにデータを読み込んでしまえば、下図のような、年ごとに変化する散布図も簡単に作成できます。変化する散布図をPower BI上で再生できますが、下図はその様子をアニメーションGIFで再現したものです。

 縦軸がNEOの大きさの推計値(下限値)、横軸が地球への接近距離(0.5LD以下)、円の大きさはNEO(Near Earth Object)の大きさの推計値(下限値)を反映しています。
 
 近年、20m以下のNEOがたくさん発見されているようです。次々に新しいNEOが発見されているということは、まだ発見されていないNEOがたくさんある、ということを示しているのかもしれません。
<データの出典:https://cneos.jpl.nasa.gov/ca/>



☆関連記事
▼地球をかすめた小惑星「2019 OK」は、0.2LD以下の距離に接近したNEOの中で過去最大だったようです:NASAの1万3千件以上のNEOデータから

▼小惑星「2019 OK」は、過去3年間に0.2LD以下まで地球に接近したNEOの中でも最大でした:NASAのNEOデータをPower BIで分析してみました

▼【グラフを追加しました】:小惑星「2019 OK」はOKでしたが・・・:7月25日に地球とニアミスした、今年最大の小惑星の名前です。








お気に入りの記事を「いいね!」で応援しよう

Last updated  2019.10.09 07:40:26
コメント(0) | コメントを書く


PR

Recent Posts

Free Space







Rebatesお友達紹介キャンペーン

​​​​

Category

Archives

Comments

digital_21@ Re[1]:◆【新型コロナ】やっぱり、PCR検査(08/02) 背番号のないエース0829さんへ すてきな内…
背番号のないエース0829@ Re:◆【新型コロナ】やっぱり、PCR検査 「日本一遅い成人式が、無事終了 !!」に、…

Keyword Search

▼キーワード検索

Rakuten Card


© Rakuten Group, Inc.
X