【pandas】マナビDXテスト Pythonで解いてみた【Python】

経済産業省は、デジタル知識・能力を身につけるための実践的な学びの場として、ポータルサイト「マナビDX (デラックス)」を2022年3月から開設しています。

マナビDXの中で出題されているデータ分析の練習問題を解いてみましたので参考にしてください。

マナビDXクエストについて

マナビDXクエストは経産省主催のデジタル育成事業です。

デジタル推進人材育成プログラム「マナビDX Quest」 経済産業省

国は中小企業にAIの積極的な利用を求めている

私たち中小企業は深刻な人材不足に陥っています。

chatGPTをはじめ多くのAIサービスが普及していますが、一般的な市販のAIシステムは高額で、中小企業の人材が簡単に運用できるものではありません。

中小企業はAI導入する作業を慎重に見極め、開発コストを10万円程度に抑えながらDXを進める必要があります。

中小企業が求めているものは小難しい数学の知識やプログラミングの基本知識を問うようなものではなく、具体的な開発事例です。

マナビDXでは実際の中小企業の課題に沿って学習を進められるので、私たち中小企業にとってとてもよい学習機会と言えます。

大手企業のデータサイエンティストのように華麗にプログラミングをすることはできませんが、地道に学習を進めていきましょう。

【Python】カメラに映った画像をリアルタイムに物体検知する【OpenCV×YOLO】

第1問

問題ではcsv資料が配布され、その資料データを前処理するための基本問題が出題されています。

中小企業にとっては馴染みのない問題ばかりです。

【pandas】csvファイルを読み込む/書き込む【Python】

csvファイルの読み込み 条件付き

問題

表「問い合わせ履歴.csv」において、『列「ステータス」がアクティブである』という条件に該当するデータのみを抽出した新たな表を作成しましょう。
このとき、新しく生成された表データの行数はAです。
※ ただし、ヘッダ(列名によって構成される行)は行数のカウントに含めないものとします。
※ 回答は、整数で記入してください。

csvファイルの読み込み、条件に該当するものを抽出

問題

表「問い合わせ履歴.csv」において、『列「対応所要時間」が200より小さい』という条件に該当するデータのみを抽出した新たな表を作成しましょう。
このとき、新しく生成した表データの行数は
です。
※ ただし、ヘッダ(列名によって構成される行)は行数のカウントに含めないものとします。
※ 回答は、整数で記入してください。

csvファイルの読み込み、複数条件付き

問題

表「問い合わせ履歴.csv」において、『列「対応所要時間」が300以上である』且つ『列「ステータス」が新規である』に該当するデータのみを抽出した新たな表を作成しましょう。
このとき、新しく生成された表データの行数は
です。
※ ただし、ヘッダ(列名によって構成される行)は行数のカウントに含めないものとします。
※ 回答は、整数で記入してください。

欠損値の消去

問題

表「問い合わせ履歴.csv」において、列「問い合わせカテゴリ」が空欄(欠損値)の行を削除することで、新たな表を作成しましょう。
このとき、新しく生成された表データの行数は
です。
※ ただし、ヘッダ(列名によって構成される行)は行数のカウントに含めないものとします。
※ 回答は、整数で記入してください。

重複行を取り除く

問題

表「問い合わせ履歴.csv」には、全ての列の値が互いにまったく同じ行(重複行)が含まれています。
そこで、これらの重複行を取り除いた表を新たに作成しましょう。
このとき、新しく生成された表データの行数は
です。
※ ただし、ヘッダ(列名によって構成される行)は行数のカウントに含めないものとします。
※ 回答は、整数で記入してください。

第2問

pandasを使用したデータの連結、転置などの問題が出てきます。

【pandas】pandasの基本知識 基礎から応用まで【Python】

縦方向のデータの連結 転置

問題

表「来店履歴_1月.csv」と表「来店履歴_2月.csv」を縦方向に連結しましょう。
このとき、連結によって生成された表データにおける列「お支払い額」の平均値は
です。
ただし、「来店履歴_2月.csv」は行と列がひっくり返った状態で保存されています。
そのため、「来店履歴_1月.csv」と連結する前に事前に表の転置を行いましょう。
※ 回答は、小数(小数点以下1桁目までの精度)で記入してください。
仮に、小数点以下2桁目以降の桁まで数が続く場合は、小数第2位の数で四捨五入を行った結果を回答として記入してください。
四捨五入の例)
・0.1234 → 0.1
・5.6789 → 5.7
・-5.6789 → -5.7

内部結合

問題

表「新規顧客.csv」と表「顧客別売上集計.csv」を、列「顧客ID」をキーとして内部結合しましょう。
このとき、結合によって生成された表データにおける列「年間お支払い額」の平均値は
です。
※ 回答は、小数(小数点以下1桁目までの精度)で記入してください。
仮に、小数点以下2桁目以降の桁まで数が続く場合は、小数第2位の数で四捨五入を行った結果を回答として記入してください。
四捨五入の例)
・0.1234 → 0.1
・5.6789 → 5.7
・-5.6789 → -5.7

左外部結合 欠損値を0で補間

問題

表「新規顧客.csv」(左)と表「顧客別売上集計.csv」(右)を、列「顧客ID」をキーとして左外部結合しましょう。
その後、結合後の表データにおいて「年間お支払い額」の列が空欄(欠損値)となった箇所を、0で補間してください。
最後に列「年間お支払い額」の平均値を計算すると、答えは
になります。
※ 回答は、小数(小数点以下1桁目までの精度)で記入してください。
仮に、小数点以下2桁目以降の桁まで数が続く場合は、小数第2位の数で四捨五入を行った結果を回答として記入してください。
四捨五入の例)
・0.1234 → 0.1
・5.6789 → 5.7
・-5.6789 → -5.7

並び替え

問題

表「顧客別売上集計.csv」を、年間来店回数が多い順番に行を並び替えましょう。
このとき、並び替えた後の表データの先頭10行における列「年間来店回数」の平均値は
です。
※ 回答は、小数(小数点以下1桁目までの精度)で記入してください。
仮に、小数点以下2桁目以降の桁まで数が続く場合は、小数第2位の数で四捨五入を行った結果を回答として記入してください。
四捨五入の例)
・0.1234 → 0.1
・5.6789 → 5.7
・-5.6789 → -5.7

第3問

列のデータを使用した演算やビニング処理が出題されます。

ほとんどの中小企業はやったことのない処理かと思います。

列のデータを列データを使って演算する

問題

表「顧客別集計結果.csv」において、「合計購入額」を列「合計注文数」で割ることで得られる列「注文単価」を作成してください。
このとき、列「注文単価」の平均値は
です。
※ 回答は、小数(小数点以下1桁目までの精度)で記入してください。
仮に、小数点以下2桁目以降の桁まで数が続く場合は、小数第2位の数で四捨五入を行った結果を回答として記入してください。
四捨五入の例)
・0.1234 → 0.1
・5.6789 → 5.7
・-5.6789 → -5.7

順位付け

問題

表「顧客別集計結果.csv」を、列「合計注文数」の値の大きさで順位付けを行ってください。
その後、上から3行分に該当する顧客の順位を求めましょう。(この際、行の並び順はダウンロード時の状態と同一であることを前提とします。)
1行目

2行目

3行目

※ ただし、順位付けは下記の規則で行います。
・順位は降順でつける。
・値が同一の場合、同順とする。
例. 点数が高い順にランク付けする場合
[Aさん: 76点, Bさん: 84点, Cさん: 76点] → [Aさん: 2位, Bさん: 1位, Cさん: 2位]
※ 回答は、整数で記入してください。

ビニング

問題

表「顧客別集計結果.csv」において、列「平均購入間隔日」の値を3つのカテゴリ『4日未満』『4日以上6日未満』『6日以上』 にビニングしましょう。
このとき、各カテゴリ別に列「合計注文数」の平均値を求め、下の空欄に記述してください。
『4日未満』
『4日以上6日未満』
『6日以上』
※ 回答は、小数(小数点以下1桁目までの精度)で記入してください。
仮に、小数点以下2桁目以降の桁まで数が続く場合は、小数第2位の数で四捨五入を行った結果を回答として記入してください。
四捨五入の例)
・0.1234 → 0.1
・5.6789 → 5.7
・-5.6789 → -5.7

置換

問題

表「顧客別集計結果.csv」において、列「合計購入額」には異常と思われるデータがあります。
そこで、下記のように修正を加えましょう。
・列「合計購入額」が10000以下の値は、10000以下を除いたデータの「合計購入額」の最小値に置換する
・列「合計購入額」が10000000以上の値は、10000000以上を除いたデータの「合計購入額」の最大値に置換する

上記の修正を加えた上で改めて列「合計購入額」の平均値を計算すると、答えは
になります。
※ 回答は、小数(小数点以下1桁目までの精度)で記入してください。
仮に、小数点以下2桁目以降の桁まで数が続く場合は、小数第2位の数で四捨五入を行った結果を回答として記入してください。
四捨五入の例)
・0.1234 → 0.1
・5.6789 → 5.7
・-5.6789 → -5.7

まとめ

pandasの基本知識から応用まで網羅的に知識を求められる問題が出題されています。

中小企業従事者にとっては非常に難しい問題が多いのですが、コツコツと学習を進めていきましょう。

【Python】ファイル操作方法について