※National Highway Traffic Safety Administration:自動車や運転者の安全を監視する米国運輸省の部局(コトバンク)
解凍すると1GB越え・・・。
「大規模データに潜む有用な声をクイックに発見する」のがWEXのウリだったりするので、このまま分析用サーバーにアップしちゃおうかな・・・。
・・・と、私の中の妖精が何度か囁いたのですが、本当にやっちゃうと怒られそうなので、扱いやすいファイルサイズになるよう、サンプリングしてみます。
実施環境については、以下の通りです。
・MacBook Air(CPU:1.6GHz,Memory 8GB)
・macOS Mojave ver10.14.5
・Rstudio ver1.2.1335(R version 3.6.0)
・macOS Mojave ver10.14.5
・Rstudio ver1.2.1335(R version 3.6.0)
※本エントリーは、私、小田一弥が一個人として勉強を兼ねて記載したものです。私の勤務先である日本アイ・ビー・エム株式会社の見解・見識ではない、個人としての記載内容としてご覧ください。
サンプリングの手順
1.Rstudioを端末にインストールする
このブログで何度かご紹介しているIBMのAI開発環境である「Watson studio」内にあるRstudioでも実行可能ですが、無料枠のCPU時間をデータ前処理で使うのも勿体ないので、ローカル端末にあるRstudioで実行します。
インストールプログラムが必要な方は、ここからダウンロードし、インストールしてください。
2.NHTSAからローデータをダウンロードする
下記URLからローデータ(FLAT_CMPL.csv)をダウンロードしてください。圧縮されてはいるものの、200MB以上あるので、通信環境によっては少々時間がかかります。
https://www-odi.nhtsa.dot.gov/downloads/
https://www-odi.nhtsa.dot.gov/downloads/
3.フィールド情報をダウンロードする
ローデータには、フィールド名が記載されていないため、ローデータと同じフォルダに「CMPL.txt」もダウンロードしておきます。
※この後、ソースコードで整形済みのフィールド一覧テキストを記載しますので、面倒でしたら無視してもOKです。
4.作業ディレクトリを変更する
「setwd("ディレクトリのパス")」をRstudioのコンソールに入力してもいいのですが、面倒なので、Rstudioのメニュー画面から「Session→Set Working Directory」を選び、ローデータが入っているディレクトリを指定します。
5.以下のコードを実行する。
「dplyrパッケージ」のロードを除くと、わずか4行のコードでサンプリングされたファイルが生成されます。
特に便利なのが、「dplyrパッケージ」の中にある「sample_frac()」関数です。
当該関数の引数にパーセンテージとなる引数を入れると、入力ファイル(この場合、master.df)を母数として、指定したパーセント分のレコードをサンプリングしてくれます。
# dplyrのロード。初めて利用する場合は、事前に当該パッケージをインストールしてください。
library(dplyr)
# 「sep="\t"」でTab区切りファイルを読み込み。
# 「FLAT_CMPL.txt」にはフィールド名が記載されていないので、最初のレコードをフィールド名として
# 読み込まないように「header = FALSE」を指定する。
# デフォルトのFactorデータで読み込むと重くなる。今回は、ローデータ抽出が目的のため、
# 「stringsAsFactors = FALSE」とする。
master.df <- read.csv("FLAT_CMPL.txt",sep="\t",header = FALSE,stringsAsFactors = FALSE)
# 下記にフィールド定義が記載されています
# https://www-odi.nhtsa.dot.gov/downloads/folders/Complaints/Import_Instructions.pdf
# 先ほど読み込んだデータフレームのフィールド名を上書き。
colnames(master.df) <- c("CMPLID","ODINO","MFR_NAME","MAKETXT","MODELTXT","YEARTXT","CRASH","FAILDATE","FIRE","INJURED","DEATHS","COMPDESC","CITY","STATE","VIN","DATEA","LDATE","MILES","OCCURENCES","CDESCR","CMPL_TYPE","POLICE_RPT_YN","PURCH_DT","ORIG_OWNER_YN","ANTI_BRAKES_YN","CRUISE_CONT_YN","NUM_CYLS","DRIVE_TRAIN","FUEL_SYS","FUEL_TYPE","TRANS_TYPE","VEH_SPEED","DOT","TIRE_SIZE","LOC_OF_TIRE","TIRE_FAIL_TYPE","ORIG_EQUIP_YN","MANUF_DT","SEAT_TYPE","RESTRAINT_TYPE","DEALER_NAME","DEALER_TEL","DEALER_CITY","DEALER_STATE","DEALER_ZIP","PROD_TYPE","REPAIRED_YN","MEDICAL_ATTN","VEHICLES_TOWED_YN")
# 取り込み直後は、782,115 records。
# 「Ctrl+Shift+M」でpipe演算子(`%>%`)を挿入
# マスターのデータフレーム(master.df)から3%を無作為抽出し、別のデータフレーム
# (sample_3_percent.df)に書き出す。今回は3%で指定するため、23,463 recordsとなる。
sample_3_percent.df <- master.df %>% sample_frac(0.03)
# CSVファイルとして書き出し
write.csv(sample_3_percent.df,"sample_3_percent.csv")
サンプリングされたファイルを見ると、32.1MBなのでExcelでも開けるサイズになりました。
次回は、このファイルを使って新しくなったWEXのご紹介をしたいと思います。
R関連エントリー
R言語:starwarsキャラの身長や年齢をdplyrで加工してggplot2する。http://sapporomkt.blogspot.jp/2017/08/rstarwarsdplyrggplot2.html
RESASの不動産取引データでheatmapを作ってみた。
http://sapporomkt.blogspot.jp/2017/05/resasheatmap.html
RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。
http://sapporomkt.blogspot.jp/2017/05/resasibm-data-scientist-workbench.html
ggplot2でクロス集計的に複数グラフをプロットする方法
http://sapporomkt.blogspot.jp/2016/11/ggplot2.html
R開発環境が無料で簡単導入!「Data Scientist Workbench」を使ってみた。
http://sapporomkt.blogspot.jp/2016/10/rdata-scientist-workbench.html
(Bluemix)知ってた?dashDBってTwitter分析にもツカエルのさ(+ちょっとだけコンサドーレ調べ)
http://sapporomkt.blogspot.jp/2016/07/bluemixdashdbtwitter.html
RMeCabで形容詞の形態素解析をやってみた。
http://sapporomkt.blogspot.jp/2016/07/rmecab.html
【R言語】今年は、leafletでマップをグリグリしたい。
http://sapporomkt.blogspot.jp/2016/01/rleaflet.html
(R言語)当ブログアクセス者の興味関心事をコレポン(コレスポンデンス)した。
http://sapporomkt.blogspot.jp/2015/12/r.htm
0 件のコメント:
コメントを投稿