一般社団法人データサイエンティスト協会から公開されているデータサイエンス100本ノック 構造化データ加工編のウィークリーチャレンジ方式による出題第13回目は68問目~74問目を一つにまとめてみました。今回は計算・日時処理中心の問題です。
P-068: 商品データ(product.csv)の各商品について、消費税率10%の税込み金額を求めよ。1円未満の端数は切り捨てとし、結果を10件表示せよ。ただし、単価(unit_price)には欠損が生じていることに注意せよ。
※税込み金額はtax_priceというフィールド名とすること
P-069: レシート明細データ(receipt.csv)と商品データ(product.csv)を結合し、顧客毎に全商品の売上金額合計と、カテゴリ大区分コード(category_major_cd)が"07"(瓶詰缶詰)の売上金額合計を計算の上、両者の比率を求めよ。抽出対象はカテゴリ大区分コード"07"(瓶詰缶詰)の売上実績がある顧客のみとし、結果を10件表示せよ。
※最終結果はcustomer_idの昇順で並び替えること
※売上金額合計はsum_all、07のみの売上金額合計はsum_07とし、比率はsales_rateとすること
P-070: レシート明細データ(receipt.csv)の売上日(sales_ymd)に対し、顧客データ(customer.csv)の会員申込日(application_date)からの経過日数を計算し、顧客ID(customer_id)、売上日、会員申込日とともに10件表示せよ(sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。
※経過日数をelapsed_daysというフィールド名とすること
※結果は、customer_idの昇順、elapsed_daysの昇順で出力すること
※sales_ymd、application_dateは日付型で出力すること
※レシート明細データ上、重複する日付のデータは削除すること
P-071: レシート明細データ(receipt.csv)の売上日(sales_ymd)に対し、顧客データ(customer.csv)の会員申込日(application_date)からの経過月数を計算し、顧客ID(customer_id)、売上日、会員申込日とともに10件表示せよ(sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。1ヶ月未満は切り捨てること。
※経過日数をelapsed_monthsというフィールド名とすること
※結果は、customer_idの昇順、elapsed_monthsの昇順で出力すること
※sales_ymd、application_dateは日付型で出力すること
※レシート明細データ上、重複する日付のデータは削除すること
P-072: レシート明細データ(receipt.csv)の売上日(sales_ymd)に対し、顧客データ(customer.csv)の会員申込日(application_date)からの経過年数を計算し、顧客ID(customer_id)、売上日、会員申込日とともに10件表示せよ(sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。1年未満は切り捨てること。
※経過日数をelapsed_yearsというフィールド名とすること
※結果は、customer_idの昇順、elapsed_yearsの昇順で出力すること
※sales_ymd、application_dateは日付型で出力すること
※レシート明細データ上、重複する日付のデータは削除すること
P-073: レシート明細データ(receipt.csv)の売上日(sales_ymd)に対し、顧客データ(customer.csv)の会員申込日(application_date)からのエポック秒による経過時間を計算し、顧客ID(customer_id)、売上日、会員申込日とともに10件表示せよ(なお、sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。なお、時間情報は保有していないため各日付は0時0分0秒を表すものとする。
※エポック秒をelapsed_epochというフィールド名とすること
※結果は、customer_idの昇順、elapsed_epochの昇順で出力すること
※sales_ymd、application_dateは日付型で出力すること
※レシート明細データ上、重複する日付のデータは削除すること
P-074: レシート明細データ(receipt.csv)の売上日(sales_ymd)に対し、当該週の月曜日からの経過日数を計算し、売上日、直前の月曜日付とともに10件表示せよ(sales_ymdは数値でデータを保持している点に注意)。
※当該週の月曜日からの経過日数を格納するフィールドの名称は「elapsed_days」とすること
※月曜日付を格納するフィールドの名称を「monday」とすること
解いたらこちらに投稿していただければと思います。ちなみに、次回投稿は一週間後を予定しています。
solutionファイルは次回添付します。
添付ファイルは今回の出題のstartファイルと、前回のsolutionファイルです。
今週もお疲れ様です。
回答します。
73問目が解答と合わせられませんでした。おそらくUniqueツールのあたりだと推測しますが、いったん提出します。
.yxzpファイルがアップロードできないため、.yxmdファイルで送ります。
69問目
70問目
71問目
72問目
当初 回答と一致しませんでしたが、ソート順を工夫して合わせました。
73問目
こちらはうまく合わせられませんでした。
74問目
最後の問題に苦戦しました。日付型はできることが多々ありそうなので、適宜吸収しなくてはいけませんね、、、
頑張ります。