├── Entity_Relationship_original.ipynb ├── README.md ├── answer ├── ans_preprocess_knock_Python_Azure.ipynb └── ans_preprocess_knock_Python_Colab.ipynb ├── data ├── 100knocks_ER.png ├── P_df_product_full_CP932_header.csv ├── P_df_product_full_UTF-8_header.csv ├── P_df_product_full_UTF-8_header.tsv ├── P_df_product_full_UTF-8_noh.csv ├── category.csv ├── customer.csv ├── geocode.csv ├── product.csv ├── receipt.csv └── store.csv ├── doc ├── 100knocks_ER.pdf ├── 100knocks_guide.pdf ├── 100knocks_questions.pdf ├── ans_preprocess_knock_Python.html └── preprocess_knock_Python.html ├── preprocess_knock_Python_Azure.ipynb └── preprocess_knock_Python_Colab.ipynb /Entity_Relationship_original.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# DB論理設計(ER図)\n", 8 | "- 一部、FKとなっているデータについて、マスターテーブルに存在しないデータを有することもあります\n", 9 | "- 例)非会員の顧客IDは顧客テーブルに含まれません\n", 10 | "- そのため、FKの情報は一般的なデータベースにおける外部参照制約を満たすものではありません\n", 11 | "- データを結合する際の参考情報として利用してください" 12 | ] 13 | }, 14 | { 15 | "cell_type": "markdown", 16 | "metadata": {}, 17 | "source": [ 18 | "![ER図](data/100knocks_ER.png \"サンプル\")" 19 | ] 20 | }, 21 | { 22 | "cell_type": "code", 23 | "execution_count": null, 24 | "metadata": {}, 25 | "outputs": [], 26 | "source": [] 27 | } 28 | ], 29 | "metadata": { 30 | "kernelspec": { 31 | "display_name": "Python 3", 32 | "language": "python", 33 | "name": "python3" 34 | }, 35 | "language_info": { 36 | "codemirror_mode": { 37 | "name": "ipython", 38 | "version": 3 39 | }, 40 | "file_extension": ".py", 41 | "mimetype": "text/x-python", 42 | "name": "python", 43 | "nbconvert_exporter": "python", 44 | "pygments_lexer": "ipython3", 45 | "version": "3.7.6" 46 | } 47 | }, 48 | "nbformat": 4, 49 | "nbformat_minor": 4 50 | } 51 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Name 2 | ==== 3 | Google Colab, Azure Notebooks移植版:データサイエンス100本ノック(構造化データ加工編) 4 | 5 | Overview 6 | ==== 7 | - Originalのデータサイエンス100本ノック(構造化データ加工編)はDocker形式で提供されており、実践的な演習が可能である一方でお手軽感はない。 8 | - より気軽に100本ノックするため、Google Colabと、Azure Notebookで実行できる演習スクリプトと、解答編スクリプトを提供する。Pythonのみである。 9 | - オリジナルの解答編で実行できなかったセルと、オリジナルのCSV(geocode.csv)で明らかに間違っている列名を訂正。 10 | 11 | ## Description 12 | - Google colab用ipynb: https://github.com/noguhiro2002/100knocks-preprocess_ForColab-AzureNotebook/blob/master/preprocess_knock_Python_Colab.ipynb 13 | 14 | - Azure Notebook用ipynb: https://github.com/noguhiro2002/100knocks-preprocess_ForColab-AzureNotebook/blob/master/preprocess_knock_Python_Azure.ipynb 15 | 16 | - './data': CSVデータ 17 | - './answer': 解答例(オリジナルを元に一部訂正) 18 | - './doc': ドキュメント(オリジナルと同じ) 19 | 20 | ## Usage: Google Colab 21 | 1. こちらをクリック: 22 | - 演習: https://github.com/noguhiro2002/100knocks-preprocess_ForColab-AzureNotebook/blob/master/preprocess_knock_Python_Colab.ipynb 23 | 24 | - 解答編: https://github.com/noguhiro2002/100knocks-preprocess_ForColab-AzureNotebook/blob/master/answer/ans_preprocess_knock_Python_Colab.ipynb 25 | 26 | 2. ipynbファイルプレビューの上部にある「Open in Colab」をクリック。 27 | 3. もしくは、Google Colabの画面上部のファイル -> ノートブックを開く -> 「GitHub」タブを選択 -> 「GitHub URLを入力するか、組織またはユーザーで検索します」に「noguhiro2002/100knocks-preprocess_ForColab-AzureNotebook」と入力し検索 -> 出てきたリストから「preprocess_knock_Python_Colab.ipynb」を開く。解答編は「answer/ans_preprocess_knock_Python_Colab.ipynb」を開く。 28 | 4. 100本ノックをお楽しみください。 29 | 30 | 31 | ## Usage: Azure Notebooks 32 | 1. Azure Notebooksに接続後、プロジェクトに入ります。なければ、適当なプロジェクトを作成してください。 33 | 2. 「Upload」より、「From URL」を選択します。 34 | 3. File Urlに「https://raw.githubusercontent.com/noguhiro2002/100knocks-preprocess_ForColab-AzureNotebook/master/preprocess_knock_Python_Azure.ipynb 」を入力し、「I trust the contents of this file」にチェックマークを入れ、「Done」をクリック。 35 | 4. なお解答編は、「https://raw.githubusercontent.com/noguhiro2002/100knocks-preprocess_ForColab-AzureNotebook/master/answer/ans_preprocess_knock_Python_Azure.ipynb 」を入力。 36 | 5. 自動的にファイルがインポートされ、jupyter notebookが実行されます。 37 | 6. 100本ノックをお楽しみください。 38 | 39 | 40 | ## Original 41 | 一般社団法人データサイエンティスト協会 42 | The Data Scientist Society 43 | 44 | The-Japan-DataScientist-Society/100knocks-preprocess 45 | https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess 46 | 47 | ## Arranged the original and author of this repository 48 | noguhiro2002 49 | 50 | # 謝辞&あとがき 51 | データサイエンティスト協会様が作られた素晴らしい教育コンテンツを、より良く多くの方に使っていただきたい思いで作成しました。この場をお借りしてデータサイエンティスト協会様に感謝申し上げます。すべてソースコードの権利はデータサイエンティスト協会様にあります。多くの方がGoogle Colab,およびAzure Notebooksを用いて、気軽にスキルを向上していただければ幸いです。私のコンテンツに問題点がございましたらご連絡いただければ幸いです。 52 | -------------------------------------------------------------------------------- /data/100knocks_ER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/noguhiro2002/100knocks-preprocess_ForColab-AzureNotebook/df09e99b8feabe87f5d194714431aab49a388971/data/100knocks_ER.png -------------------------------------------------------------------------------- /data/P_df_product_full_CP932_header.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/noguhiro2002/100knocks-preprocess_ForColab-AzureNotebook/df09e99b8feabe87f5d194714431aab49a388971/data/P_df_product_full_CP932_header.csv -------------------------------------------------------------------------------- /data/category.csv: -------------------------------------------------------------------------------- 1 | category_major_cd,category_major_name,category_medium_cd,category_medium_name,category_small_cd,category_small_name 2 | 04,惣菜,0401,御飯類,040101,弁当類 3 | 04,惣菜,0401,御飯類,040102,寿司類 4 | 04,惣菜,0402,佃煮類,040201,魚介佃煮類 5 | 04,惣菜,0402,佃煮類,040202,海草佃煮類 6 | 04,惣菜,0402,佃煮類,040203,野菜佃煮類 7 | 04,惣菜,0402,佃煮類,040204,豆佃煮類 8 | 04,惣菜,0403,サラダ類,040301,サラダ類 9 | 04,惣菜,0404,和風惣菜,040401,炒め・煮物類 10 | 04,惣菜,0404,和風惣菜,040402,和え物 11 | 04,惣菜,0404,和風惣菜,040403,酢の物 12 | 04,惣菜,0404,和風惣菜,040404,その他和風惣菜 13 | 04,惣菜,0405,フライ物,040501,フライ物 14 | 04,惣菜,0405,フライ物,040502,唐揚げ類 15 | 04,惣菜,0405,フライ物,040503,天麩羅類 16 | 04,惣菜,0405,フライ物,040504,チキンロースト類 17 | 04,惣菜,0406,洋風惣菜,040601,グラタン・ピザ類 18 | 04,惣菜,0406,洋風惣菜,040602,スナック類 19 | 04,惣菜,0406,洋風惣菜,040603,その他洋風惣菜 20 | 04,惣菜,0407,中華惣菜,040701,中華惣菜 21 | 04,惣菜,0408,焼き物,040801,うなぎ蒲焼 22 | 04,惣菜,0408,焼き物,040802,その他やきもの 23 | 04,惣菜,0413,その他,041302,その他 24 | 05,和日配,0501,水物,050101,豆腐 25 | 05,和日配,0501,水物,050102,油揚げ・がんも 26 | 05,和日配,0501,水物,050103,コンニャク 27 | 05,和日配,0501,水物,050104,その他水物 28 | 05,和日配,0502,漬物,050201,ぬか漬け 29 | 05,和日配,0502,漬物,050202,塩漬け 30 | 05,和日配,0502,漬物,050203,醤油漬け 31 | 05,和日配,0502,漬物,050204,粕漬け 32 | 05,和日配,0502,漬物,050205,酢漬け 33 | 05,和日配,0502,漬物,050206,味噌漬け 34 | 05,和日配,0502,漬物,050207,その他漬物 35 | 05,和日配,0503,生麺,050301,生うどん 36 | 05,和日配,0503,生麺,050302,生そば 37 | 05,和日配,0503,生麺,050303,生ラーメン 38 | 05,和日配,0503,生麺,050304,生パスタ 39 | 05,和日配,0503,生麺,050305,その他 40 | 05,和日配,0504,練物,050401,赤板 41 | 05,和日配,0504,練物,050402,野焼 42 | 05,和日配,0504,練物,050403,竹輪 43 | 05,和日配,0504,練物,050404,揚げ物 44 | 05,和日配,0504,練物,050405,はんぺん 45 | 05,和日配,0504,練物,050406,その他蒲鉾 46 | 05,和日配,0504,練物,050407,調理練り製品 47 | 05,和日配,0505,冷凍食品,050501,冷凍野菜 48 | 05,和日配,0505,冷凍食品,050502,惣菜冷凍食品 49 | 05,和日配,0505,冷凍食品,050503,スナック冷凍食品 50 | 05,和日配,0505,冷凍食品,050504,米飯冷凍食品 51 | 05,和日配,0505,冷凍食品,050505,麺類冷凍食品 52 | 05,和日配,0505,冷凍食品,050506,その他冷凍食品 53 | 05,和日配,0506,卵,050601,普通卵 54 | 05,和日配,0506,卵,050602,特殊卵 55 | 05,和日配,0506,卵,050603,その他 56 | 05,和日配,0507,その他和日配,050701,納豆 57 | 05,和日配,0590,その他,059001,その他 58 | 06,パン・乳製品,0601,パン,060101,食パン 59 | 06,パン・乳製品,0601,パン,060102,菓子パン 60 | 06,パン・乳製品,0601,パン,060103,調理パン 61 | 06,パン・乳製品,0601,パン,060104,その他パン 62 | 06,パン・乳製品,0602,生菓子,060201,生菓子 63 | 06,パン・乳製品,0602,生菓子,060202,饅頭類 64 | 06,パン・乳製品,0602,生菓子,060203,ケーキ類 65 | 06,パン・乳製品,0602,生菓子,060204,その他 66 | 06,パン・乳製品,0603,牛乳,060303,その他牛乳 67 | 06,パン・乳製品,0604,乳製品,060401,バター 68 | 06,パン・乳製品,0604,乳製品,060402,マーガリン 69 | 06,パン・乳製品,0604,乳製品,060403,チーズ 70 | 06,パン・乳製品,0605,チルド食品,060501,チルド半製品 71 | 06,パン・乳製品,0605,チルド食品,060502,チルド調味料 72 | 06,パン・乳製品,0605,チルド食品,060503,チルドデザート 73 | 06,パン・乳製品,0606,乳飲料,060601,乳飲料 74 | 06,パン・乳製品,0606,乳飲料,060602,果汁飲料 75 | 06,パン・乳製品,0606,乳飲料,060603,その他 76 | 06,パン・乳製品,0607,デザート,060701,プリン 77 | 06,パン・乳製品,0607,デザート,060702,ヨーグルト 78 | 06,パン・乳製品,0607,デザート,060703,ゼリー 79 | 06,パン・乳製品,0607,デザート,060704,その他デザート 80 | 06,パン・乳製品,0608,冷菓,060801,パーソナルアイス 81 | 06,パン・乳製品,0608,冷菓,060802,プレミアムアイス 82 | 06,パン・乳製品,0608,冷菓,060803,ファミリーアイス 83 | 06,パン・乳製品,0608,冷菓,060804,アイス徳用パック 84 | 06,パン・乳製品,0608,冷菓,060805,業務用アイス 85 | 06,パン・乳製品,0608,冷菓,060806,その他冷菓 86 | 07,瓶詰缶詰,0701,農産乾物,070101,粉類 87 | 07,瓶詰缶詰,0701,農産乾物,070102,椎茸 88 | 07,瓶詰缶詰,0701,農産乾物,070103,乾燥豆類 89 | 07,瓶詰缶詰,0701,農産乾物,070104,その他農産乾物 90 | 07,瓶詰缶詰,0702,海産乾物,070201,のり 91 | 07,瓶詰缶詰,0702,海産乾物,070202,海草類 92 | 07,瓶詰缶詰,0702,海産乾物,070203,煮干し・削りぶし 93 | 07,瓶詰缶詰,0702,海産乾物,070204,その他海産乾物 94 | 07,瓶詰缶詰,0703,和風調味料,070301,醤油 95 | 07,瓶詰缶詰,0703,和風調味料,070302,みりん 96 | 07,瓶詰缶詰,0703,和風調味料,070303,タレ・つゆ 97 | 07,瓶詰缶詰,0703,和風調味料,070304,味噌 98 | 07,瓶詰缶詰,0703,和風調味料,070305,砂糖・甘味料 99 | 07,瓶詰缶詰,0703,和風調味料,070306,塩 100 | 07,瓶詰缶詰,0703,和風調味料,070307,調味料の素 101 | 07,瓶詰缶詰,0703,和風調味料,070308,食用油 102 | 07,瓶詰缶詰,0703,和風調味料,070309,食用酢 103 | 07,瓶詰缶詰,0703,和風調味料,070310,その他和風調味料 104 | 07,瓶詰缶詰,0704,洋風調味料,070401,ドレッシング 105 | 07,瓶詰缶詰,0704,洋風調味料,070402,ビネガー 106 | 07,瓶詰缶詰,0704,洋風調味料,070403,ケチャップ 107 | 07,瓶詰缶詰,0704,洋風調味料,070404,ソース 108 | 07,瓶詰缶詰,0704,洋風調味料,070405,カレー・シチュー 109 | 07,瓶詰缶詰,0704,洋風調味料,070406,スパイス 110 | 07,瓶詰缶詰,0704,洋風調味料,070407,中華材料 111 | 07,瓶詰缶詰,0704,洋風調味料,070408,その他洋風調味料 112 | 07,瓶詰缶詰,0705,缶・瓶詰,070501,農産缶詰 113 | 07,瓶詰缶詰,0705,缶・瓶詰,070502,畜産缶詰 114 | 07,瓶詰缶詰,0705,缶・瓶詰,070503,水産缶詰 115 | 07,瓶詰缶詰,0705,缶・瓶詰,070504,フルーツ缶詰 116 | 07,瓶詰缶詰,0705,缶・瓶詰,070505,瓶詰め 117 | 07,瓶詰缶詰,0705,缶・瓶詰,070506,その他缶瓶詰め 118 | 07,瓶詰缶詰,0706,乾麺,070601,乾めん 119 | 07,瓶詰缶詰,0706,乾麺,070602,乾パスタ 120 | 07,瓶詰缶詰,0707,即席加工品,070701,即席袋めん 121 | 07,瓶詰缶詰,0707,即席加工品,070702,即席カップめん 122 | 07,瓶詰缶詰,0707,即席加工品,070703,即席スープ類 123 | 07,瓶詰缶詰,0707,即席加工品,070704,即席みそ汁 124 | 07,瓶詰缶詰,0707,即席加工品,070705,即席パスタ 125 | 07,瓶詰缶詰,0707,即席加工品,070706,即席食品 126 | 07,瓶詰缶詰,0707,即席加工品,070707,ふりかけ・お茶漬け 127 | 07,瓶詰缶詰,0707,即席加工品,070708,米関連即席調味料 128 | 07,瓶詰缶詰,0707,即席加工品,070709,料理用即席調味料 129 | 07,瓶詰缶詰,0707,即席加工品,070710,その他加工品 130 | 07,瓶詰缶詰,0708,コーヒー・お茶,070801,レギュラーコーヒー 131 | 07,瓶詰缶詰,0708,コーヒー・お茶,070802,インスタントコーヒー 132 | 07,瓶詰缶詰,0708,コーヒー・お茶,070803,紅茶・ココア 133 | 07,瓶詰缶詰,0708,コーヒー・お茶,070804,パウダー 134 | 07,瓶詰缶詰,0708,コーヒー・お茶,070805,日本茶 135 | 07,瓶詰缶詰,0708,コーヒー・お茶,070806,中国・健康茶 136 | 07,瓶詰缶詰,0708,コーヒー・お茶,070807,その他 137 | 07,瓶詰缶詰,0709,嗜好品,070901,ジャム類 138 | 07,瓶詰缶詰,0709,嗜好品,070902,デザートミックス 139 | 07,瓶詰缶詰,0709,嗜好品,070903,プレミックス 140 | 07,瓶詰缶詰,0709,嗜好品,070904,ケーキ・パン材料 141 | 07,瓶詰缶詰,0709,嗜好品,070905,その他嗜好品 142 | 07,瓶詰缶詰,0710,飲料,071001,果汁・清涼飲料 143 | 07,瓶詰缶詰,0710,飲料,071002,炭酸飲料 144 | 07,瓶詰缶詰,0710,飲料,071003,機能性飲料ドリンク 145 | 07,瓶詰缶詰,0710,飲料,071004,コーヒー飲料 146 | 07,瓶詰缶詰,0710,飲料,071005,お茶飲料 147 | 07,瓶詰缶詰,0710,飲料,071006,水 148 | 07,瓶詰缶詰,0710,飲料,071007,その他飲料 149 | 07,瓶詰缶詰,0711,栄養補助剤,071101,ビタミン補助剤 150 | 07,瓶詰缶詰,0711,栄養補助剤,071102,カルシウム補助剤 151 | 07,瓶詰缶詰,0711,栄養補助剤,071103,その他栄養補助剤 152 | 07,瓶詰缶詰,0712,ベビーフード,071201,粉ミルク 153 | 07,瓶詰缶詰,0712,ベビーフード,071202,ベビーフード 154 | 07,瓶詰缶詰,0712,ベビーフード,071203,その他補給剤 155 | 07,瓶詰缶詰,0713,米,071301,米 156 | 07,瓶詰缶詰,0713,米,071302,その他米加工品 157 | 07,瓶詰缶詰,0714,タバコ,071401,タバコ 158 | 08,菓子,0801,ポケット物,080101,チョコレート菓子 159 | 08,菓子,0801,ポケット物,080102,キャンディー 160 | 08,菓子,0801,ポケット物,080103,ガム 161 | 08,菓子,0801,ポケット物,080104,玩具菓子 162 | 08,菓子,0801,ポケット物,080105,その他ポケット物 163 | 08,菓子,0802,スナック,080201,ポテトチップス 164 | 08,菓子,0802,スナック,080202,スナック類 165 | 08,菓子,0802,スナック,080203,その他スナック 166 | 08,菓子,0803,チョコ菓子,080301,袋チョコレート 167 | 08,菓子,0803,チョコ菓子,080302,その他チョコ 168 | 08,菓子,0804,ビスケット,080401,ビスケット・クッキー 169 | 08,菓子,0804,ビスケット,080402,クラッカー 170 | 08,菓子,0804,ビスケット,080403,油菓子 171 | 08,菓子,0804,ビスケット,080404,その他 172 | 08,菓子,0805,駄菓子,080501,羊羹・最中 173 | 08,菓子,0805,駄菓子,080502,ドーナツ 174 | 08,菓子,0805,駄菓子,080503,常温デザート・ケーキ 175 | 08,菓子,0805,駄菓子,080504,その他駄菓子 176 | 08,菓子,0806,豆菓子,080601,落花生 177 | 08,菓子,0806,豆菓子,080602,ナッツ類 178 | 08,菓子,0806,豆菓子,080603,その他豆菓子 179 | 08,菓子,0807,米菓子,080701,あられ・おかき 180 | 08,菓子,0807,米菓子,080702,煎餅 181 | 08,菓子,0807,米菓子,080703,その他米菓子 182 | 08,菓子,0808,珍味,080801,水産珍味 183 | 08,菓子,0808,珍味,080802,畜産珍味 184 | 08,菓子,0808,珍味,080803,漬物珍味 185 | 08,菓子,0808,珍味,080804,ドライフルーツ 186 | 08,菓子,0808,珍味,080805,その他珍味 187 | 08,菓子,0809,その他菓子,080901,菓子詰め合わせ 188 | 08,菓子,0809,その他菓子,080903,その他 189 | 09,洗剤,0901,洗剤,090102,洗濯用洗剤 190 | 09,洗剤,0901,洗剤,090103,台所用洗剤 191 | 09,洗剤,0902,石鹸・シャンプーリンス,090201,化粧石鹸 192 | 09,洗剤,0902,石鹸・シャンプーリンス,090202,ボディシャンプー 193 | 09,洗剤,0902,石鹸・シャンプーリンス,090203,入浴剤 194 | 09,洗剤,0902,石鹸・シャンプーリンス,090204,シャンプー 195 | 09,洗剤,0902,石鹸・シャンプーリンス,090205,ヘアリンス 196 | 09,洗剤,0902,石鹸・シャンプーリンス,090206,トリートメント 197 | 09,洗剤,0903,口中衛生用品,090301,歯磨き 198 | 09,洗剤,0903,口中衛生用品,090302,歯ブラシ 199 | 09,洗剤,0903,口中衛生用品,090303,口中清涼剤 200 | 09,洗剤,0903,口中衛生用品,090304,義歯用剤 201 | 09,洗剤,0904,衛生紙用品,090401,ティッシュペーパー 202 | 09,洗剤,0904,衛生紙用品,090402,ペーパータオル 203 | 09,洗剤,0904,衛生紙用品,090403,トイレットペーパー 204 | 09,洗剤,0904,衛生紙用品,090404,紙オムツ 205 | 09,洗剤,0904,衛生紙用品,090405,ちり紙・京花紙 206 | 09,洗剤,0907,防虫・芳香・消臭剤,090701,殺虫剤 207 | 09,洗剤,0907,防虫・芳香・消臭剤,090702,防虫剤 208 | 09,洗剤,0907,防虫・芳香・消臭剤,090703,消臭剤 209 | 09,洗剤,0907,防虫・芳香・消臭剤,090704,芳香剤 210 | 09,洗剤,0908,家庭雑貨,090801,清掃手入れ用品 211 | 09,洗剤,0908,家庭雑貨,090802,洗濯・物干し用品 212 | 09,洗剤,0908,家庭雑貨,090803,トイレ用品 213 | 09,洗剤,0908,家庭雑貨,090804,洗面・浴室用品 214 | 09,洗剤,0908,家庭雑貨,090805,衣料収納・保存用品 215 | 09,洗剤,0908,家庭雑貨,090806,家庭消耗雑貨 216 | 09,洗剤,0908,家庭雑貨,090807,カイロ類 217 | 09,洗剤,0908,家庭雑貨,090808,喫煙用具 218 | 09,洗剤,0909,台所用品,090901,調理鍋・釜類 219 | 09,洗剤,0909,台所用品,090902,刃物類 220 | 09,洗剤,0909,台所用品,090903,調理補助器具キッチンシール 221 | 09,洗剤,0909,台所用品,090904,調理用消耗品 222 | 09,洗剤,0909,台所用品,090905,流し用品 223 | 09,洗剤,0909,台所用品,090906,食品容器 224 | 09,洗剤,0909,台所用品,090907,卓上用品 225 | 09,洗剤,0914,ペットフード,091401,ペットフード 226 | 09,洗剤,0914,ペットフード,091402,ペット用剤 227 | 09,洗剤,0914,ペットフード,091403,ペット用具 228 | 09,洗剤,0915,DIY用品,091501,建築・塗装材料 229 | 09,洗剤,0915,DIY用品,091503,園芸用品 230 | -------------------------------------------------------------------------------- /data/store.csv: -------------------------------------------------------------------------------- 1 | store_cd,store_name,prefecture_cd,prefecture,address,address_kana,tel_no,longitude,latitude,floor_area 2 | S12014,千草台店,12,千葉県,千葉県千葉市稲毛区千草台一丁目,チバケンチバシイナゲクチグサダイイッチョウメ,043-123-4003,140.118,35.63559,1698.0 3 | S13002,国分寺店,13,東京都,東京都国分寺市本多二丁目,トウキョウトコクブンジシホンダニチョウメ,042-123-4008,139.4802,35.70566,1735.0 4 | S14010,菊名店,14,神奈川県,神奈川県横浜市港北区菊名一丁目,カナガワケンヨコハマシコウホククキクナイッチョウメ,045-123-4032,139.6326,35.50049,1732.0 5 | S14033,阿久和店,14,神奈川県,神奈川県横浜市瀬谷区阿久和西一丁目,カナガワケンヨコハマシセヤクアクワニシイッチョウメ,045-123-4043,139.4961,35.45918,1495.0 6 | S14036,相模原中央店,14,神奈川県,神奈川県相模原市中央二丁目,カナガワケンサガミハラシチュウオウニチョウメ,042-123-4045,139.3716,35.57327,1679.0 7 | S13051,板橋大原店,13,東京都,東京都板橋区大原町,トウキョウトイタバシクオオハラチョウ,03-0123-4029,139.698,35.76788,1045.0 8 | S13015,南砂店,13,東京都,東京都江東区南砂二丁目,トウキョウトコウトウクミナミスナニチョウメ,03-0123-4014,139.8229,35.67066,1337.0 9 | S14040,長津田店,14,神奈川県,神奈川県横浜市緑区長津田みなみ台五丁目,カナガワケンヨコハマシミドリクナガツタミナミダイゴチョウメ,045-123-4046,139.4994,35.52398,1548.0 10 | S13044,南六郷店,13,東京都,東京都大田区南六郷二丁目,トウキョウトオオタクミナミロクゴウニチョウメ,03-0123-4028,139.7207,35.54604,1379.0 11 | S14050,阿久和西店,14,神奈川県,神奈川県横浜市瀬谷区阿久和西一丁目,カナガワケンヨコハマシセヤクアクワニシイッチョウメ,045-123-4053,139.4961,35.45918,1830.0 12 | S13019,小茂根店,13,東京都,東京都板橋区小茂根一丁目,トウキョウトイタバシクコモネイッチョウメ,03-0123-4018,139.6795,35.74468,1004.0 13 | S13052,森野店,13,東京都,東京都町田市森野三丁目,トウキョウトマチダシモリノサンチョウメ,042-123-4030,139.4383,35.55293,1087.0 14 | S14028,二ツ橋店,14,神奈川県,神奈川県横浜市瀬谷区二ツ橋町,カナガワケンヨコハマシセヤクフタツバシチョウ,045-123-4042,139.4963,35.46304,1574.0 15 | S13031,初台店,13,東京都,東京都渋谷区初台二丁目,トウキョウトシブヤクハツダイニチョウメ,03-0123-4020,139.6862,35.67616,986.0 16 | S13038,東葛西店,13,東京都,東京都江戸川区東葛西九丁目,トウキョウトエドガワクヒガシカサイキュウチョウメ,03-0123-4024,139.8826,35.65366,1184.0 17 | S13001,仲六郷店,13,東京都,東京都大田区仲六郷二丁目,トウキョウトオオタクナカロクゴウニチョウメ,03-1234-4007,139.7132,35.55135,1796.0 18 | S14012,本牧和田店,14,神奈川県,神奈川県横浜市中区本牧和田,カナガワケンヨコハマシナカクホンモクワダ,045-123-4034,139.6582,35.42156,1341.0 19 | S13004,鷺宮店,13,東京都,東京都中野区鷺宮三丁目,トウキョウトナカノクサギノミヤサンチョウメ,03-0123-4010,139.6421,35.72348,947.0 20 | S14046,北山田店,14,神奈川県,神奈川県横浜市都筑区北山田一丁目,カナガワケンヨコハマシツヅキクキタヤマタイッチョウメ,045-123-4049,139.5916,35.56189,831.0 21 | S14022,逗子店,14,神奈川県,神奈川県逗子市逗子一丁目,カナガワケンズシシズシイッチョウメ,046-123-4036,139.5789,35.29642,1838.0 22 | S14011,日吉本町店,14,神奈川県,神奈川県横浜市港北区日吉本町四丁目,カナガワケンヨコハマシコウホククヒヨシホンチョウヨンチョウメ,045-123-4033,139.6316,35.54655,890.0 23 | S13016,小金井店,13,東京都,東京都小金井市本町一丁目,トウキョウトコガネイシホンチョウイッチョウメ,042-123-4015,139.5094,35.70018,1399.0 24 | S14034,川崎野川店,14,神奈川県,神奈川県川崎市宮前区野川,カナガワケンカワサキシミヤマエクノガワ,044-123-4044,139.5998,35.57693,1318.0 25 | S13008,成城店,13,東京都,東京都世田谷区成城三丁目,トウキョウトセタガヤクセイジョウサンチョウメ,03-0123-4012,139.5966,35.63614,883.0 26 | S13020,十条仲原店,13,東京都,東京都北区十条仲原三丁目,トウキョウトキタクジュウジョウナカハラサンチョウメ,03-0123-4019,139.7186,35.76686,801.0 27 | S13043,南品川店,13,東京都,東京都品川区南品川三丁目,トウキョウトシナガワクミナミシナガワサンチョウメ,03-0123-4027,139.7436,35.60981,845.0 28 | S14048,中川中央店,14,神奈川県,神奈川県横浜市都筑区中川中央二丁目,カナガワケンヨコハマシツヅキクナカガワチュウオウニチョウメ,045-123-4051,139.5758,35.54912,1657.0 29 | S12007,佐倉店,12,千葉県,千葉県佐倉市上志津,チバケンサクラシカミシヅ,043-123-4001,140.1452,35.71872,1895.0 30 | S14026,辻堂西海岸店,14,神奈川県,神奈川県藤沢市辻堂西海岸二丁目,カナガワケンフジサワシツジドウニシカイガンニチョウメ,046-123-4040,139.4466,35.32464,1732.0 31 | S13041,八王子店,13,東京都,東京都八王子市大塚,トウキョウトハチオウジシオオツカ,042-123-4026,139.4235,35.63787,810.0 32 | S13017,高円寺南店,13,東京都,東京都杉並区高円寺南四丁目,トウキョウトスギナミクコウエンジミナミヨンチョウメ,03-0123-4016,139.6513,35.70273,841.0 33 | S14049,川崎大師店,14,神奈川県,神奈川県川崎市川崎区中瀬三丁目,カナガワケンカワサキシカワサキクナカゼサンチョウメ,044-123-4052,139.7327,35.53759,962.0 34 | S14023,川崎店,14,神奈川県,神奈川県川崎市川崎区本町二丁目,カナガワケンカワサキシカワサキクホンチョウニチョウメ,044-123-4037,139.7028,35.53599,1804.0 35 | S13018,清瀬店,13,東京都,東京都清瀬市松山一丁目,トウキョウトキヨセシマツヤマイッチョウメ,042-123-4017,139.5178,35.76885,1220.0 36 | S13035,用賀四丁目店,13,東京都,東京都世田谷区用賀四丁目,トウキョウトセタガヤクヨウガヨンチョウメ,03-0123-4022,139.6318,35.63029,988.0 37 | S14027,南藤沢店,14,神奈川県,神奈川県藤沢市南藤沢,カナガワケンフジサワシミナミフジサワ,046-123-4041,139.4896,35.33762,1521.0 38 | S14021,伊勢原店,14,神奈川県,神奈川県伊勢原市伊勢原四丁目,カナガワケンイセハラシイセハラヨンチョウメ,046-123-4035,139.3129,35.40169,962.0 39 | S14047,相模原店,14,神奈川県,神奈川県相模原市千代田六丁目,カナガワケンサガミハラシチヨダロクチョウメ,042-123-4050,139.3748,35.55959,1047.0 40 | S12013,習志野店,12,千葉県,千葉県習志野市芝園一丁目,チバケンナラシノシシバゾノイッチョウメ,047-123-4002,140.022,35.66122,808.0 41 | S13032,仲六郷店,13,東京都,東京都大田区仲六郷三丁目,トウキョウトオオタクナカロクゴウサンチョウメ,03-0123-4021,139.7123,35.54682,1354.0 42 | S14042,新山下店,14,神奈川県,神奈川県横浜市中区新山下二丁目,カナガワケンヨコハマシナカクシンヤマシタニチョウメ,045-123-4047,139.6593,35.43894,1044.0 43 | S13039,南荻窪店,13,東京都,東京都杉並区南荻窪四丁目,トウキョウトスギナミクミナミオギクボヨンチョウメ,03-0123-4025,139.6152,35.70045,1133.0 44 | S12030,八幡店,12,千葉県,千葉県市川市八幡三丁目,チバケンイチカワシヤワタサンチョウメ,047-123-4005,139.924,35.72318,1162.0 45 | S13009,用賀店,13,東京都,東京都世田谷区用賀二丁目,トウキョウトセタガヤクヨウガニチョウメ,03-0123-4013,139.6382,35.6272,1243.0 46 | S14025,大和店,14,神奈川県,神奈川県大和市下和田,カナガワケンヤマトシシモワダ,046-123-4039,139.468,35.43414,1011.0 47 | S14045,厚木店,14,神奈川県,神奈川県厚木市中町二丁目,カナガワケンアツギシナカチョウニチョウメ,046-123-4048,139.3651,35.44182,980.0 48 | S13005,白鷺店,13,東京都,東京都中野区白鷺三丁目,トウキョウトナカノクシラサギサンチョウメ,03-0123-4011,139.6307,35.72246,1259.0 49 | S12029,東野店,12,千葉県,千葉県浦安市東野一丁目,チバケンウラヤスシヒガシノイッチョウメ,047-123-4004,139.8968,35.65086,1101.0 50 | S13003,狛江店,13,東京都,東京都狛江市和泉本町四丁目,トウキョウトコマエシイズミホンチョウヨンチョウメ,03-0123-4009,139.5668,35.64462,1529.0 51 | S12053,高洲店,12,千葉県,千葉県浦安市高洲五丁目,チバケンウラヤスシタカスゴチョウメ,047-123-4006,139.9176,35.63755,1555.0 52 | S13037,南砂一丁目店,13,東京都,東京都江東区南砂一丁目,トウキョウトコウトウクミナミスナイッチョウメ,03-0123-4023,139.8215,35.67898,814.0 53 | S14024,三田店,14,神奈川県,神奈川県川崎市多摩区三田四丁目,カナガワケンカワサキシタマクミタヨンチョウメ,044-123-4038,139.5424,35.6077,972.0 54 | S14006,葛が谷店,14,神奈川県,神奈川県横浜市都筑区葛が谷,カナガワケンヨコハマシツヅキククズガヤ,045-123-4031,139.5633,35.53573,1886.0 55 | -------------------------------------------------------------------------------- /doc/100knocks_ER.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/noguhiro2002/100knocks-preprocess_ForColab-AzureNotebook/df09e99b8feabe87f5d194714431aab49a388971/doc/100knocks_ER.pdf -------------------------------------------------------------------------------- /doc/100knocks_guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/noguhiro2002/100knocks-preprocess_ForColab-AzureNotebook/df09e99b8feabe87f5d194714431aab49a388971/doc/100knocks_guide.pdf -------------------------------------------------------------------------------- /doc/100knocks_questions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/noguhiro2002/100knocks-preprocess_ForColab-AzureNotebook/df09e99b8feabe87f5d194714431aab49a388971/doc/100knocks_questions.pdf -------------------------------------------------------------------------------- /preprocess_knock_Python_Azure.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "metadata": {}, 5 | "cell_type": "markdown", 6 | "source": "# データサイエンス100本ノック(構造化データ加工編) - Python\n# for AzureNotebook" 7 | }, 8 | { 9 | "metadata": {}, 10 | "cell_type": "markdown", 11 | "source": "## 【注意】オリジナル版との変更点\n1. Azure Notebook ではDockerを使えないので、2020.06.18時点の 100knocks-preprocess/docker/work/data にあるCSVファイルをPostgreSQLから入手する代わりに使います。\n2. オリジナルのCSVデータ, geocode.csvの'latitude'列名の初めにスペースが入っていたため、それを削除しました。\n\n オリジナル(100knocks-preprocess ver.1.0): ' latitude' --> 'latitude'\n \n\n4. オリジナルの解答を元に、必要のないlibraryはimportせず、そして必要なlibraryをAzureNotebookでインストールするように最初のセルを改変してあります。\n5. また、SQLではなく上記CSVからデータを読み込むように'はじめに'の最初のセルを改変してあります。" 12 | }, 13 | { 14 | "metadata": {}, 15 | "cell_type": "markdown", 16 | "source": "## 【Azure Notebook】動かす前に\n1. 本100本ノックの解答例スクリプトはPython3.6で動作検証し、それを元にLibraryの選定を行っております。メニュ-->Kernel-->Change Kernelから、Python 3.6を選んでください。Python3ではLibraryをインストールする際にエラーが発生します。" 17 | }, 18 | { 19 | "metadata": {}, 20 | "cell_type": "markdown", 21 | "source": "## はじめに\n- 初めに以下のセルを実行してください\n- 必要なライブラリのインポートと~~データベース(PostgreSQL)~~ 100knocks-preprocess/docker/work/data にあるCSVファイルからのデータ読み込みを行います。geocode.csvに変更を加えたため、またgit cloneをするとAzure Notebooksの簡便さを損なうため、筆者(noguhiro2002)のgithubレポジトリから直接読み込みます。\n- pandas等、利用が想定されるライブラリは以下セルでインポートしています\n- その他利用したいライブラリがあれば適宜インストールしてください(\"!pip install ライブラリ名\"でインストールも可能)\n- オリジナルの解答例を元に、必要なライブラリーをpipでインストールします。\n- 処理は複数回に分けても構いません\n- 名前、住所等はダミーデータであり、実在するものではありません" 22 | }, 23 | { 24 | "metadata": { 25 | "trusted": true 26 | }, 27 | "cell_type": "code", 28 | "source": "# pipでオリジナルの解答に必要なライブラリーをインストール\n!pip install --upgrade pip\n!pip install -U pandas numpy scikit-learn\n!pip install imbalanced-learn\n\n\n# pipでオリジナルの解答に必要なライブラリーをインポート\nimport os\nimport pandas as pd\nimport numpy as np\nfrom datetime import datetime, date\nfrom dateutil.relativedelta import relativedelta\nimport math\nfrom sklearn import preprocessing\nfrom sklearn.model_selection import train_test_split\nfrom imblearn.under_sampling import RandomUnderSampler\n\n\n# データを github/noguhiro2002/100knocks-preprocess/work/data フォルダよりDataframe形式でRead\ndf_customer = pd.read_csv('https://raw.githubusercontent.com/The-Japan-DataScientist-Society/100knocks-preprocess/master/docker/work/data/customer.csv')\ndf_category = pd.read_csv('https://raw.githubusercontent.com/The-Japan-DataScientist-Society/100knocks-preprocess/master/docker/work/data/category.csv')\ndf_product = pd.read_csv('https://raw.githubusercontent.com/The-Japan-DataScientist-Society/100knocks-preprocess/master/docker/work/data/product.csv')\ndf_receipt = pd.read_csv('https://raw.githubusercontent.com/The-Japan-DataScientist-Society/100knocks-preprocess/master/docker/work/data/receipt.csv')\ndf_store = pd.read_csv('https://raw.githubusercontent.com/The-Japan-DataScientist-Society/100knocks-preprocess/master/docker/work/data/store.csv')\ndf_geocode = pd.read_csv('https://raw.githubusercontent.com/noguhiro2002/100knocks-preprocess_ForColab-AzureNotebook/master/data/geocode.csv')", 29 | "execution_count": 3, 30 | "outputs": [ 31 | { 32 | "output_type": "stream", 33 | "text": "Requirement already up-to-date: pip in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (20.1.1)\nRequirement already up-to-date: pandas in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (1.0.4)\nRequirement already up-to-date: numpy in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (1.18.5)\nRequirement already up-to-date: scikit-learn in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (0.23.1)\nRequirement already satisfied, skipping upgrade: pytz>=2017.2 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from pandas) (2019.3)\nRequirement already satisfied, skipping upgrade: python-dateutil>=2.6.1 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from pandas) (2.8.1)\nRequirement already satisfied, skipping upgrade: threadpoolctl>=2.0.0 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from scikit-learn) (2.1.0)\nRequirement already satisfied, skipping upgrade: joblib>=0.11 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from scikit-learn) (0.14.0)\nRequirement already satisfied, skipping upgrade: scipy>=0.19.1 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from scikit-learn) (1.1.0)\nRequirement already satisfied, skipping upgrade: six>=1.5 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from python-dateutil>=2.6.1->pandas) (1.11.0)\nRequirement already satisfied: imbalanced-learn in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (0.7.0)\nRequirement already satisfied: scipy>=0.19.1 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from imbalanced-learn) (1.1.0)\nRequirement already satisfied: scikit-learn>=0.23 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from imbalanced-learn) (0.23.1)\nRequirement already satisfied: joblib>=0.11 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from imbalanced-learn) (0.14.0)\nRequirement already satisfied: numpy>=1.13.3 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from imbalanced-learn) (1.18.5)\nRequirement already satisfied: threadpoolctl>=2.0.0 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from scikit-learn>=0.23->imbalanced-learn) (2.1.0)\n", 34 | "name": "stdout" 35 | }, 36 | { 37 | "output_type": "stream", 38 | "text": "/home/nbuser/anaconda3_501/lib/python3.6/site-packages/IPython/core/interactiveshell.py:3020: DtypeWarning: Columns (4) have mixed types.Specify dtype option on import or set low_memory=False.\n interactivity=interactivity, compiler=compiler, result=result)\n", 39 | "name": "stderr" 40 | } 41 | ] 42 | }, 43 | { 44 | "metadata": {}, 45 | "cell_type": "markdown", 46 | "source": "# 演習問題" 47 | }, 48 | { 49 | "metadata": {}, 50 | "cell_type": "markdown", 51 | "source": "---\n> P-001: レシート明細のデータフレーム(df_receipt)から全項目の先頭10件を表示し、どのようなデータを保有しているか目視で確認せよ。" 52 | }, 53 | { 54 | "metadata": { 55 | "trusted": false 56 | }, 57 | "cell_type": "code", 58 | "source": "", 59 | "execution_count": null, 60 | "outputs": [] 61 | }, 62 | { 63 | "metadata": {}, 64 | "cell_type": "markdown", 65 | "source": "---\n> P-002: レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、10件表示させよ。" 66 | }, 67 | { 68 | "metadata": { 69 | "trusted": false 70 | }, 71 | "cell_type": "code", 72 | "source": "", 73 | "execution_count": null, 74 | "outputs": [] 75 | }, 76 | { 77 | "metadata": {}, 78 | "cell_type": "markdown", 79 | "source": "---\n> P-003: レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、10件表示させよ。ただし、sales_ymdはsales_dateに項目名を変更しながら抽出すること。" 80 | }, 81 | { 82 | "metadata": { 83 | "trusted": false 84 | }, 85 | "cell_type": "code", 86 | "source": "", 87 | "execution_count": null, 88 | "outputs": [] 89 | }, 90 | { 91 | "metadata": {}, 92 | "cell_type": "markdown", 93 | "source": "---\n> P-004: レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。\n> - 顧客ID(customer_id)が\"CS018205000001\"" 94 | }, 95 | { 96 | "metadata": { 97 | "trusted": false 98 | }, 99 | "cell_type": "code", 100 | "source": "", 101 | "execution_count": null, 102 | "outputs": [] 103 | }, 104 | { 105 | "metadata": {}, 106 | "cell_type": "markdown", 107 | "source": "---\n> P-005: レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。\n> - 顧客ID(customer_id)が\"CS018205000001\"\n> - 売上金額(amount)が1,000以上" 108 | }, 109 | { 110 | "metadata": { 111 | "trusted": false 112 | }, 113 | "cell_type": "code", 114 | "source": "", 115 | "execution_count": null, 116 | "outputs": [] 117 | }, 118 | { 119 | "metadata": {}, 120 | "cell_type": "markdown", 121 | "source": "---\n> P-006: レシート明細データフレーム「df_receipt」から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上数量(quantity)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。\n> - 顧客ID(customer_id)が\"CS018205000001\"\n> - 売上金額(amount)が1,000以上または売上数量(quantity)が5以上" 122 | }, 123 | { 124 | "metadata": { 125 | "trusted": false 126 | }, 127 | "cell_type": "code", 128 | "source": "", 129 | "execution_count": null, 130 | "outputs": [] 131 | }, 132 | { 133 | "metadata": {}, 134 | "cell_type": "markdown", 135 | "source": "---\n> P-007: レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。\n> - 顧客ID(customer_id)が\"CS018205000001\"\n> - 売上金額(amount)が1,000以上2,000以下" 136 | }, 137 | { 138 | "metadata": { 139 | "trusted": false 140 | }, 141 | "cell_type": "code", 142 | "source": "", 143 | "execution_count": null, 144 | "outputs": [] 145 | }, 146 | { 147 | "metadata": {}, 148 | "cell_type": "markdown", 149 | "source": "---\n> P-008: レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。\n> - 顧客ID(customer_id)が\"CS018205000001\"\n> - 商品コード(product_cd)が\"P071401019\"以外" 150 | }, 151 | { 152 | "metadata": { 153 | "trusted": false 154 | }, 155 | "cell_type": "code", 156 | "source": "", 157 | "execution_count": null, 158 | "outputs": [] 159 | }, 160 | { 161 | "metadata": {}, 162 | "cell_type": "markdown", 163 | "source": "---\n> P-009: 以下の処理において、出力結果を変えずにORをANDに書き換えよ。\n\n`df_store.query('not(prefecture_cd == \"13\" | floor_area > 900)')`" 164 | }, 165 | { 166 | "metadata": { 167 | "trusted": false 168 | }, 169 | "cell_type": "code", 170 | "source": "", 171 | "execution_count": null, 172 | "outputs": [] 173 | }, 174 | { 175 | "metadata": {}, 176 | "cell_type": "markdown", 177 | "source": "---\n> P-010: 店舗データフレーム(df_store)から、店舗コード(store_cd)が\"S14\"で始まるものだけ全項目抽出し、10件だけ表示せよ。" 178 | }, 179 | { 180 | "metadata": { 181 | "trusted": false 182 | }, 183 | "cell_type": "code", 184 | "source": "", 185 | "execution_count": null, 186 | "outputs": [] 187 | }, 188 | { 189 | "metadata": {}, 190 | "cell_type": "markdown", 191 | "source": "---\n> P-011: 顧客データフレーム(df_customer)から顧客ID(customer_id)の末尾が1のものだけ全項目抽出し、10件だけ表示せよ。" 192 | }, 193 | { 194 | "metadata": { 195 | "trusted": false 196 | }, 197 | "cell_type": "code", 198 | "source": "", 199 | "execution_count": null, 200 | "outputs": [] 201 | }, 202 | { 203 | "metadata": {}, 204 | "cell_type": "markdown", 205 | "source": "---\n> P-012: 店舗データフレーム(df_store)から横浜市の店舗だけ全項目表示せよ。" 206 | }, 207 | { 208 | "metadata": { 209 | "trusted": false 210 | }, 211 | "cell_type": "code", 212 | "source": "", 213 | "execution_count": null, 214 | "outputs": [] 215 | }, 216 | { 217 | "metadata": {}, 218 | "cell_type": "markdown", 219 | "source": "---\n> P-013: 顧客データフレーム(df_customer)から、ステータスコード(status_cd)の先頭がアルファベットのA〜Fで始まるデータを全項目抽出し、10件だけ表示せよ。" 220 | }, 221 | { 222 | "metadata": { 223 | "trusted": false 224 | }, 225 | "cell_type": "code", 226 | "source": "", 227 | "execution_count": null, 228 | "outputs": [] 229 | }, 230 | { 231 | "metadata": {}, 232 | "cell_type": "markdown", 233 | "source": "---\n> P-014: 顧客データフレーム(df_customer)から、ステータスコード(status_cd)の末尾が数字の1〜9で終わるデータを全項目抽出し、10件だけ表示せよ。" 234 | }, 235 | { 236 | "metadata": { 237 | "trusted": false 238 | }, 239 | "cell_type": "code", 240 | "source": "", 241 | "execution_count": null, 242 | "outputs": [] 243 | }, 244 | { 245 | "metadata": {}, 246 | "cell_type": "markdown", 247 | "source": "---\n> P-015: 顧客データフレーム(df_customer)から、ステータスコード(status_cd)の先頭がアルファベットのA〜Fで始まり、末尾が数字の1〜9で終わるデータを全項目抽出し、10件だけ表示せよ。" 248 | }, 249 | { 250 | "metadata": { 251 | "trusted": false 252 | }, 253 | "cell_type": "code", 254 | "source": "", 255 | "execution_count": null, 256 | "outputs": [] 257 | }, 258 | { 259 | "metadata": {}, 260 | "cell_type": "markdown", 261 | "source": "---\n> P-016: 店舗データフレーム(df_store)から、電話番号(tel_no)が3桁-3桁-4桁のデータを全項目表示せよ。" 262 | }, 263 | { 264 | "metadata": { 265 | "trusted": false 266 | }, 267 | "cell_type": "code", 268 | "source": "", 269 | "execution_count": null, 270 | "outputs": [] 271 | }, 272 | { 273 | "metadata": {}, 274 | "cell_type": "markdown", 275 | "source": "---\n> P-17: 顧客データフレーム(df_customer)を生年月日(birth_day)で高齢順にソートし、先頭10件を全項目表示せよ。" 276 | }, 277 | { 278 | "metadata": { 279 | "trusted": false 280 | }, 281 | "cell_type": "code", 282 | "source": "", 283 | "execution_count": null, 284 | "outputs": [] 285 | }, 286 | { 287 | "metadata": {}, 288 | "cell_type": "markdown", 289 | "source": "---\n> P-18: 顧客データフレーム(df_customer)を生年月日(birth_day)で若い順にソートし、先頭10件を全項目表示せよ。" 290 | }, 291 | { 292 | "metadata": { 293 | "trusted": false 294 | }, 295 | "cell_type": "code", 296 | "source": "", 297 | "execution_count": null, 298 | "outputs": [] 299 | }, 300 | { 301 | "metadata": {}, 302 | "cell_type": "markdown", 303 | "source": "---\n> P-19: レシート明細データフレーム(df_receipt)に対し、1件あたりの売上金額(amount)が高い順にランクを付与し、先頭10件を抽出せよ。項目は顧客ID(customer_id)、売上金額(amount)、付与したランクを表示させること。なお、売上金額(amount)が等しい場合は同一順位を付与するものとする。" 304 | }, 305 | { 306 | "metadata": { 307 | "trusted": false 308 | }, 309 | "cell_type": "code", 310 | "source": "", 311 | "execution_count": null, 312 | "outputs": [] 313 | }, 314 | { 315 | "metadata": {}, 316 | "cell_type": "markdown", 317 | "source": "---\n> P-020: レシート明細データフレーム(df_receipt)に対し、1件あたりの売上金額(amount)が高い順にランクを付与し、先頭10件を抽出せよ。項目は顧客ID(customer_id)、売上金額(amount)、付与したランクを表示させること。なお、売上金額(amount)が等しい場合でも別順位を付与すること。" 318 | }, 319 | { 320 | "metadata": { 321 | "trusted": false 322 | }, 323 | "cell_type": "code", 324 | "source": "", 325 | "execution_count": null, 326 | "outputs": [] 327 | }, 328 | { 329 | "metadata": {}, 330 | "cell_type": "markdown", 331 | "source": "---\n> P-021: レシート明細データフレーム(df_receipt)に対し、件数をカウントせよ。" 332 | }, 333 | { 334 | "metadata": { 335 | "trusted": false 336 | }, 337 | "cell_type": "code", 338 | "source": "", 339 | "execution_count": null, 340 | "outputs": [] 341 | }, 342 | { 343 | "metadata": {}, 344 | "cell_type": "markdown", 345 | "source": "---\n> P-022: レシート明細データフレーム(df_receipt)の顧客ID(customer_id)に対し、ユニーク件数をカウントせよ。" 346 | }, 347 | { 348 | "metadata": { 349 | "trusted": false 350 | }, 351 | "cell_type": "code", 352 | "source": "", 353 | "execution_count": null, 354 | "outputs": [] 355 | }, 356 | { 357 | "metadata": {}, 358 | "cell_type": "markdown", 359 | "source": "---\n> P-023: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)と売上数量(quantity)を合計せよ。" 360 | }, 361 | { 362 | "metadata": { 363 | "trusted": false 364 | }, 365 | "cell_type": "code", 366 | "source": "", 367 | "execution_count": null, 368 | "outputs": [] 369 | }, 370 | { 371 | "metadata": {}, 372 | "cell_type": "markdown", 373 | "source": "---\n> P-024: レシート明細データフレーム(df_receipt)に対し、顧客ID(customer_id)ごとに最も新しい売上日(sales_ymd)を求め、10件表示せよ。" 374 | }, 375 | { 376 | "metadata": { 377 | "trusted": false 378 | }, 379 | "cell_type": "code", 380 | "source": "", 381 | "execution_count": null, 382 | "outputs": [] 383 | }, 384 | { 385 | "metadata": {}, 386 | "cell_type": "markdown", 387 | "source": "---\n> P-025: レシート明細データフレーム(df_receipt)に対し、顧客ID(customer_id)ごとに最も古い売上日(sales_ymd)を求め、10件表示せよ。" 388 | }, 389 | { 390 | "metadata": { 391 | "trusted": false 392 | }, 393 | "cell_type": "code", 394 | "source": "", 395 | "execution_count": null, 396 | "outputs": [] 397 | }, 398 | { 399 | "metadata": {}, 400 | "cell_type": "markdown", 401 | "source": "---\n> P-026: レシート明細データフレーム(df_receipt)に対し、顧客ID(customer_id)ごとに最も新しい売上日(sales_ymd)と古い売上日を求め、両者が異なるデータを10件表示せよ。" 402 | }, 403 | { 404 | "metadata": { 405 | "trusted": false 406 | }, 407 | "cell_type": "code", 408 | "source": "", 409 | "execution_count": null, 410 | "outputs": [] 411 | }, 412 | { 413 | "metadata": {}, 414 | "cell_type": "markdown", 415 | "source": "---\n> P-027: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の平均を計算し、降順でTOP5を表示せよ。" 416 | }, 417 | { 418 | "metadata": { 419 | "trusted": false 420 | }, 421 | "cell_type": "code", 422 | "source": "", 423 | "execution_count": null, 424 | "outputs": [] 425 | }, 426 | { 427 | "metadata": {}, 428 | "cell_type": "markdown", 429 | "source": "---\n> P-028: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の中央値を計算し、降順でTOP5を表示せよ。" 430 | }, 431 | { 432 | "metadata": { 433 | "trusted": false 434 | }, 435 | "cell_type": "code", 436 | "source": "", 437 | "execution_count": null, 438 | "outputs": [] 439 | }, 440 | { 441 | "metadata": {}, 442 | "cell_type": "markdown", 443 | "source": "---\n> P-029: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに商品コード(product_cd)の最頻値を求めよ。" 444 | }, 445 | { 446 | "metadata": { 447 | "trusted": false 448 | }, 449 | "cell_type": "code", 450 | "source": "", 451 | "execution_count": null, 452 | "outputs": [] 453 | }, 454 | { 455 | "metadata": {}, 456 | "cell_type": "markdown", 457 | "source": "---\n> P-030: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の標本分散を計算し、降順でTOP5を表示せよ。" 458 | }, 459 | { 460 | "metadata": { 461 | "trusted": false 462 | }, 463 | "cell_type": "code", 464 | "source": "", 465 | "execution_count": null, 466 | "outputs": [] 467 | }, 468 | { 469 | "metadata": {}, 470 | "cell_type": "markdown", 471 | "source": "---\n> P-031: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の標本標準偏差を計算し、降順でTOP5を表示せよ。" 472 | }, 473 | { 474 | "metadata": { 475 | "trusted": false 476 | }, 477 | "cell_type": "code", 478 | "source": "", 479 | "execution_count": null, 480 | "outputs": [] 481 | }, 482 | { 483 | "metadata": {}, 484 | "cell_type": "markdown", 485 | "source": "---\n> P-032: レシート明細データフレーム(df_receipt)の売上金額(amount)について、25%刻みでパーセンタイル値を求めよ。" 486 | }, 487 | { 488 | "metadata": { 489 | "trusted": false 490 | }, 491 | "cell_type": "code", 492 | "source": "", 493 | "execution_count": null, 494 | "outputs": [] 495 | }, 496 | { 497 | "metadata": {}, 498 | "cell_type": "markdown", 499 | "source": "---\n> P-033: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の平均を計算し、330以上のものを抽出せよ。" 500 | }, 501 | { 502 | "metadata": { 503 | "trusted": false 504 | }, 505 | "cell_type": "code", 506 | "source": "", 507 | "execution_count": null, 508 | "outputs": [] 509 | }, 510 | { 511 | "metadata": {}, 512 | "cell_type": "markdown", 513 | "source": "---\n> P-034: レシート明細データフレーム(df_receipt)に対し、顧客ID(customer_id)ごとに売上金額(amount)を合計して全顧客の平均を求めよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。\n" 514 | }, 515 | { 516 | "metadata": { 517 | "trusted": false 518 | }, 519 | "cell_type": "code", 520 | "source": "", 521 | "execution_count": null, 522 | "outputs": [] 523 | }, 524 | { 525 | "metadata": {}, 526 | "cell_type": "markdown", 527 | "source": "---\n> P-035: レシート明細データフレーム(df_receipt)に対し、顧客ID(customer_id)ごとに売上金額(amount)を合計して全顧客の平均を求め、平均以上に買い物をしている顧客を抽出せよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。なお、データは10件だけ表示させれば良い。" 528 | }, 529 | { 530 | "metadata": { 531 | "trusted": false 532 | }, 533 | "cell_type": "code", 534 | "source": "", 535 | "execution_count": null, 536 | "outputs": [] 537 | }, 538 | { 539 | "metadata": {}, 540 | "cell_type": "markdown", 541 | "source": "---\n> P-036: レシート明細データフレーム(df_receipt)と店舗データフレーム(df_store)を内部結合し、レシート明細データフレームの全項目と店舗データフレームの店舗名(store_name)を10件表示させよ。" 542 | }, 543 | { 544 | "metadata": { 545 | "trusted": false 546 | }, 547 | "cell_type": "code", 548 | "source": "", 549 | "execution_count": null, 550 | "outputs": [] 551 | }, 552 | { 553 | "metadata": {}, 554 | "cell_type": "markdown", 555 | "source": "---\n> P-037: 商品データフレーム(df_product)とカテゴリデータフレーム(df_category)を内部結合し、商品データフレームの全項目とカテゴリデータフレームの小区分名(category_small_name)を10件表示させよ。" 556 | }, 557 | { 558 | "metadata": { 559 | "trusted": false 560 | }, 561 | "cell_type": "code", 562 | "source": "", 563 | "execution_count": null, 564 | "outputs": [] 565 | }, 566 | { 567 | "metadata": {}, 568 | "cell_type": "markdown", 569 | "source": "---\n> P-038: 顧客データフレーム(df_customer)とレシート明細データフレーム(df_receipt)から、各顧客ごとの売上金額合計を求めよ。ただし、買い物の実績がない顧客については売上金額を0として表示させること。また、顧客は性別コード(gender_cd)が女性(1)であるものを対象とし、非会員(顧客IDが'Z'から始まるもの)は除外すること。なお、結果は10件だけ表示させれば良い。" 570 | }, 571 | { 572 | "metadata": { 573 | "trusted": false 574 | }, 575 | "cell_type": "code", 576 | "source": "", 577 | "execution_count": null, 578 | "outputs": [] 579 | }, 580 | { 581 | "metadata": {}, 582 | "cell_type": "markdown", 583 | "source": "---\n> P-039: レシート明細データフレーム(df_receipt)から売上日数の多い顧客の上位20件と、売上金額合計の多い顧客の上位20件を抽出し、完全外部結合せよ。ただし、非会員(顧客IDが'Z'から始まるもの)は除外すること。" 584 | }, 585 | { 586 | "metadata": { 587 | "trusted": false 588 | }, 589 | "cell_type": "code", 590 | "source": "", 591 | "execution_count": null, 592 | "outputs": [] 593 | }, 594 | { 595 | "metadata": {}, 596 | "cell_type": "markdown", 597 | "source": "---\n> P-040: 全ての店舗と全ての商品を組み合わせると何件のデータとなるか調査したい。店舗(df_store)と商品(df_product)を直積した件数を計算せよ。" 598 | }, 599 | { 600 | "metadata": { 601 | "trusted": false 602 | }, 603 | "cell_type": "code", 604 | "source": "", 605 | "execution_count": null, 606 | "outputs": [] 607 | }, 608 | { 609 | "metadata": {}, 610 | "cell_type": "markdown", 611 | "source": "---\n> P-041: レシート明細データフレーム(df_receipt)の売上金額(amount)を日付(sales_ymd)ごとに集計し、前日からの売上金額増減を計算せよ。なお、計算結果は10件表示すればよい。" 612 | }, 613 | { 614 | "metadata": { 615 | "trusted": false 616 | }, 617 | "cell_type": "code", 618 | "source": "", 619 | "execution_count": null, 620 | "outputs": [] 621 | }, 622 | { 623 | "metadata": {}, 624 | "cell_type": "markdown", 625 | "source": "---\n> P-042: レシート明細データフレーム(df_receipt)の売上金額(amount)を日付(sales_ymd)ごとに集計し、各日付のデータに対し、1日前、2日前、3日前のデータを結合せよ。結果は10件表示すればよい。" 626 | }, 627 | { 628 | "metadata": { 629 | "trusted": false 630 | }, 631 | "cell_type": "code", 632 | "source": "", 633 | "execution_count": null, 634 | "outputs": [] 635 | }, 636 | { 637 | "metadata": {}, 638 | "cell_type": "markdown", 639 | "source": "---\n> P-043: レシート明細データフレーム(df_receipt)と顧客データフレーム(df_customer)を結合し、性別(gender)と年代(ageから計算)ごとに売上金額(amount)を合計した売上サマリデータフレーム(df_sales_summary)を作成せよ。性別は0が男性、1が女性、9が不明を表すものとする。\n>\n> ただし、項目構成は年代、女性の売上金額、男性の売上金額、性別不明の売上金額の4項目とすること(縦に年代、横に性別のクロス集計)。また、年代は10歳ごとの階級とすること。" 640 | }, 641 | { 642 | "metadata": { 643 | "trusted": false 644 | }, 645 | "cell_type": "code", 646 | "source": "", 647 | "execution_count": null, 648 | "outputs": [] 649 | }, 650 | { 651 | "metadata": {}, 652 | "cell_type": "markdown", 653 | "source": "---\n> P-044: 前設問で作成した売上サマリデータフレーム(df_sales_summary)は性別の売上を横持ちさせたものであった。このデータフレームから性別を縦持ちさせ、年代、性別コード、売上金額の3項目に変換せよ。ただし、性別コードは男性を'00'、女性を'01'、不明を'99'とする。" 654 | }, 655 | { 656 | "metadata": { 657 | "trusted": false 658 | }, 659 | "cell_type": "code", 660 | "source": "", 661 | "execution_count": null, 662 | "outputs": [] 663 | }, 664 | { 665 | "metadata": {}, 666 | "cell_type": "markdown", 667 | "source": "---\n> P-045: 顧客データフレーム(df_customer)の生年月日(birth_day)は日付型(Date)でデータを保有している。これをYYYYMMDD形式の文字列に変換し、顧客ID(customer_id)とともに抽出せよ。データは10件を抽出すれば良い。" 668 | }, 669 | { 670 | "metadata": { 671 | "trusted": false 672 | }, 673 | "cell_type": "code", 674 | "source": "", 675 | "execution_count": null, 676 | "outputs": [] 677 | }, 678 | { 679 | "metadata": {}, 680 | "cell_type": "markdown", 681 | "source": "---\n> P-046: 顧客データフレーム(df_customer)の申し込み日(application_date)はYYYYMMD形式の文字列型でデータを保有している。これを日付型(dateやdatetime)に変換し、顧客ID(customer_id)とともに抽出せよ。データは10件を抽出すれば良い。" 682 | }, 683 | { 684 | "metadata": { 685 | "trusted": false 686 | }, 687 | "cell_type": "code", 688 | "source": "", 689 | "execution_count": null, 690 | "outputs": [] 691 | }, 692 | { 693 | "metadata": {}, 694 | "cell_type": "markdown", 695 | "source": "---\n> P-047: レシート明細データフレーム(df_receipt)の売上日(sales_ymd)はYYYYMMDD形式の数値型でデータを保有している。これを日付型(dateやdatetime)に変換し、レシート番号(receipt_no)、レシートサブ番号(receipt_sub_no)とともに抽出せよ。データは10件を抽出すれば良い。" 696 | }, 697 | { 698 | "metadata": { 699 | "trusted": false 700 | }, 701 | "cell_type": "code", 702 | "source": "", 703 | "execution_count": null, 704 | "outputs": [] 705 | }, 706 | { 707 | "metadata": {}, 708 | "cell_type": "markdown", 709 | "source": "---\n> P-048: レシート明細データフレーム(df_receipt)の売上エポック秒(sales_epoch)は数値型のUNIX秒でデータを保有している。これを日付型(dateやdatetime)に変換し、レシート番号(receipt_no)、レシートサブ番号(receipt_sub_no)とともに抽出せよ。データは10件を抽出すれば良い。" 710 | }, 711 | { 712 | "metadata": { 713 | "trusted": false 714 | }, 715 | "cell_type": "code", 716 | "source": "", 717 | "execution_count": null, 718 | "outputs": [] 719 | }, 720 | { 721 | "metadata": {}, 722 | "cell_type": "markdown", 723 | "source": "---\n> P-049: レシート明細データフレーム(df_receipt)の売上エポック秒(sales_epoch)を日付型(timestamp型)に変換し、\"年\"だけ取り出してレシート番号(receipt_no)、レシートサブ番号(receipt_sub_no)とともに抽出せよ。データは10件を抽出すれば良い。" 724 | }, 725 | { 726 | "metadata": { 727 | "trusted": false 728 | }, 729 | "cell_type": "code", 730 | "source": "", 731 | "execution_count": null, 732 | "outputs": [] 733 | }, 734 | { 735 | "metadata": {}, 736 | "cell_type": "markdown", 737 | "source": "---\n> P-050: レシート明細データフレーム(df_receipt)の売上エポック秒(sales_epoch)を日付型(timestamp型)に変換し、\"月\"だけ取り出してレシート番号(receipt_no)、レシートサブ番号(receipt_sub_no)とともに抽出せよ。なお、\"月\"は0埋め2桁で取り出すこと。データは10件を抽出すれば良い。" 738 | }, 739 | { 740 | "metadata": { 741 | "trusted": false 742 | }, 743 | "cell_type": "code", 744 | "source": "", 745 | "execution_count": null, 746 | "outputs": [] 747 | }, 748 | { 749 | "metadata": {}, 750 | "cell_type": "markdown", 751 | "source": "---\n> P-051: レシート明細データフレーム(df_receipt)の売上エポック秒(sales_epoch)を日付型(timestamp型)に変換し、\"日\"だけ取り出してレシート番号(receipt_no)、レシートサブ番号(receipt_sub_no)とともに抽出せよ。なお、\"日\"は0埋め2桁で取り出すこと。データは10件を抽出すれば良い。" 752 | }, 753 | { 754 | "metadata": { 755 | "trusted": false 756 | }, 757 | "cell_type": "code", 758 | "source": "", 759 | "execution_count": null, 760 | "outputs": [] 761 | }, 762 | { 763 | "metadata": {}, 764 | "cell_type": "markdown", 765 | "source": "---\n> P-052: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計の上、売上金額合計に対して2000円以下を0、2000円超を1に2値化し、顧客ID、売上金額合計とともに10件表示せよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。" 766 | }, 767 | { 768 | "metadata": { 769 | "trusted": false 770 | }, 771 | "cell_type": "code", 772 | "source": "", 773 | "execution_count": null, 774 | "outputs": [] 775 | }, 776 | { 777 | "metadata": {}, 778 | "cell_type": "markdown", 779 | "source": "---\n> P-053: 顧客データフレーム(df_customer)の郵便番号(postal_cd)に対し、東京(先頭3桁が100〜209のもの)を1、それ以外のものを0に2値化せよ。さらにレシート明細データフレーム(df_receipt)と結合し、全期間において買い物実績のある顧客数を、作成した2値ごとにカウントせよ。" 780 | }, 781 | { 782 | "metadata": { 783 | "trusted": false 784 | }, 785 | "cell_type": "code", 786 | "source": "", 787 | "execution_count": null, 788 | "outputs": [] 789 | }, 790 | { 791 | "metadata": {}, 792 | "cell_type": "markdown", 793 | "source": "---\n> P-054: 顧客データデータフレーム(df_customer)の住所(address)は、埼玉県、千葉県、東京都、神奈川県のいずれかとなっている。都道府県毎にコード値を作成し、顧客ID、住所とともに抽出せよ。値は埼玉県を11、千葉県を12、東京都を13、神奈川県を14とすること。結果は10件表示させれば良い。" 794 | }, 795 | { 796 | "metadata": { 797 | "trusted": false 798 | }, 799 | "cell_type": "code", 800 | "source": "", 801 | "execution_count": null, 802 | "outputs": [] 803 | }, 804 | { 805 | "metadata": {}, 806 | "cell_type": "markdown", 807 | "source": "---\n> P-055: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、その合計金額の四分位点を求めよ。その上で、顧客ごとの売上金額合計に対して以下の基準でカテゴリ値を作成し、顧客ID、売上金額と合計ともに表示せよ。カテゴリ値は上から順に1〜4とする。結果は10件表示させれば良い。\n>\n> - 最小値以上第一四分位未満\n> - 第一四分位以上第二四分位未満\n> - 第二四分位以上第三四分位未満\n> - 第三四分位以上" 808 | }, 809 | { 810 | "metadata": { 811 | "trusted": false 812 | }, 813 | "cell_type": "code", 814 | "source": "", 815 | "execution_count": null, 816 | "outputs": [] 817 | }, 818 | { 819 | "metadata": {}, 820 | "cell_type": "markdown", 821 | "source": "---\n> P-056: 顧客データフレーム(df_customer)の年齢(age)をもとに10歳刻みで年代を算出し、顧客ID(customer_id)、生年月日(birth_day)とともに抽出せよ。ただし、60歳以上は全て60歳代とすること。年代を表すカテゴリ名は任意とする。先頭10件を表示させればよい。" 822 | }, 823 | { 824 | "metadata": { 825 | "trusted": false 826 | }, 827 | "cell_type": "code", 828 | "source": "", 829 | "execution_count": null, 830 | "outputs": [] 831 | }, 832 | { 833 | "metadata": {}, 834 | "cell_type": "markdown", 835 | "source": "---\n> P-057: 前問題の抽出結果と性別(gender)を組み合わせ、新たに性別×年代の組み合わせを表すカテゴリデータを作成せよ。組み合わせを表すカテゴリの値は任意とする。先頭10件を表示させればよい。" 836 | }, 837 | { 838 | "metadata": { 839 | "trusted": false 840 | }, 841 | "cell_type": "code", 842 | "source": "", 843 | "execution_count": null, 844 | "outputs": [] 845 | }, 846 | { 847 | "metadata": {}, 848 | "cell_type": "markdown", 849 | "source": "---\n> P-058: 顧客データフレーム(df_customer)の性別コード(gender_cd)をダミー変数化し、顧客ID(customer_id)とともに抽出せよ。結果は10件表示させれば良い。" 850 | }, 851 | { 852 | "metadata": { 853 | "trusted": false 854 | }, 855 | "cell_type": "code", 856 | "source": "", 857 | "execution_count": null, 858 | "outputs": [] 859 | }, 860 | { 861 | "metadata": {}, 862 | "cell_type": "markdown", 863 | "source": "---\n> P-059: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、合計した売上金額を平均0、標準偏差1に標準化して顧客ID、売上金額合計とともに表示せよ。標準化に使用する標準偏差は、不偏標準偏差と標本標準偏差のどちらでも良いものとする。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。結果は10件表示させれば良い。" 864 | }, 865 | { 866 | "metadata": { 867 | "trusted": false 868 | }, 869 | "cell_type": "code", 870 | "source": "", 871 | "execution_count": null, 872 | "outputs": [] 873 | }, 874 | { 875 | "metadata": {}, 876 | "cell_type": "markdown", 877 | "source": "---\n> P-060: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、合計した売上金額を最小値0、最大値1に正規化して顧客ID、売上金額合計とともに表示せよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。結果は10件表示させれば良い。" 878 | }, 879 | { 880 | "metadata": { 881 | "trusted": false 882 | }, 883 | "cell_type": "code", 884 | "source": "", 885 | "execution_count": null, 886 | "outputs": [] 887 | }, 888 | { 889 | "metadata": {}, 890 | "cell_type": "markdown", 891 | "source": "---\n> P-061: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、合計した売上金額を常用対数化(底=10)して顧客ID、売上金額合計とともに表示せよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。結果は10件表示させれば良い。" 892 | }, 893 | { 894 | "metadata": { 895 | "trusted": false 896 | }, 897 | "cell_type": "code", 898 | "source": "", 899 | "execution_count": null, 900 | "outputs": [] 901 | }, 902 | { 903 | "metadata": {}, 904 | "cell_type": "markdown", 905 | "source": "---\n> P-062: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、合計した売上金額を自然対数化(底=e)して顧客ID、売上金額合計とともに表示せよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。結果は10件表示させれば良い。" 906 | }, 907 | { 908 | "metadata": { 909 | "trusted": false 910 | }, 911 | "cell_type": "code", 912 | "source": "", 913 | "execution_count": null, 914 | "outputs": [] 915 | }, 916 | { 917 | "metadata": {}, 918 | "cell_type": "markdown", 919 | "source": "---\n> P-063: 商品データフレーム(df_product)の単価(unit_price)と原価(unit_cost)から、各商品の利益額を算出せよ。結果は10件表示させれば良い。" 920 | }, 921 | { 922 | "metadata": { 923 | "trusted": false 924 | }, 925 | "cell_type": "code", 926 | "source": "", 927 | "execution_count": null, 928 | "outputs": [] 929 | }, 930 | { 931 | "metadata": {}, 932 | "cell_type": "markdown", 933 | "source": "---\n> P-064: 商品データフレーム(df_product)の単価(unit_price)と原価(unit_cost)から、各商品の利益率の全体平均を算出せよ。\nただし、単価と原価にはNULLが存在することに注意せよ。" 934 | }, 935 | { 936 | "metadata": { 937 | "trusted": false 938 | }, 939 | "cell_type": "code", 940 | "source": "", 941 | "execution_count": null, 942 | "outputs": [] 943 | }, 944 | { 945 | "metadata": {}, 946 | "cell_type": "markdown", 947 | "source": "---\n> P-065: 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。ただし、1円未満は切り捨てること。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。" 948 | }, 949 | { 950 | "metadata": { 951 | "trusted": false 952 | }, 953 | "cell_type": "code", 954 | "source": "", 955 | "execution_count": null, 956 | "outputs": [] 957 | }, 958 | { 959 | "metadata": {}, 960 | "cell_type": "markdown", 961 | "source": "---\n> P-066: 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。今回は、1円未満を四捨五入すること(0.5については偶数方向の丸めで良い)。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。" 962 | }, 963 | { 964 | "metadata": { 965 | "trusted": false 966 | }, 967 | "cell_type": "code", 968 | "source": "", 969 | "execution_count": null, 970 | "outputs": [] 971 | }, 972 | { 973 | "metadata": {}, 974 | "cell_type": "markdown", 975 | "source": "---\n> P-067: 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。今回は、1円未満を切り上げること。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。" 976 | }, 977 | { 978 | "metadata": { 979 | "trusted": false 980 | }, 981 | "cell_type": "code", 982 | "source": "", 983 | "execution_count": null, 984 | "outputs": [] 985 | }, 986 | { 987 | "metadata": {}, 988 | "cell_type": "markdown", 989 | "source": "---\n> P-068: 商品データフレーム(df_product)の各商品について、消費税率10%の税込み金額を求めよ。 1円未満の端数は切り捨てとし、結果は10件表示すれば良い。ただし、単価(unit_price)にはNULLが存在することに注意せよ。" 990 | }, 991 | { 992 | "metadata": { 993 | "trusted": false 994 | }, 995 | "cell_type": "code", 996 | "source": "", 997 | "execution_count": null, 998 | "outputs": [] 999 | }, 1000 | { 1001 | "metadata": {}, 1002 | "cell_type": "markdown", 1003 | "source": "---\n> P-069: レシート明細データフレーム(df_receipt)と商品データフレーム(df_product)を結合し、顧客毎に全商品の売上金額合計と、カテゴリ大区分(category_major_cd)が\"07\"(瓶詰缶詰)の売上金額合計を計算の上、両者の比率を求めよ。抽出対象はカテゴリ大区分\"07\"(瓶詰缶詰)の購入実績がある顧客のみとし、結果は10件表示させればよい。" 1004 | }, 1005 | { 1006 | "metadata": { 1007 | "trusted": false 1008 | }, 1009 | "cell_type": "code", 1010 | "source": "", 1011 | "execution_count": null, 1012 | "outputs": [] 1013 | }, 1014 | { 1015 | "metadata": {}, 1016 | "cell_type": "markdown", 1017 | "source": "---\n> P-070: レシート明細データフレーム(df_receipt)の売上日(sales_ymd)に対し、顧客データフレーム(df_customer)の会員申込日(application_date)からの経過日数を計算し、顧客ID(customer_id)、売上日、会員申込日とともに表示せよ。結果は10件表示させれば良い(なお、sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。" 1018 | }, 1019 | { 1020 | "metadata": { 1021 | "trusted": false 1022 | }, 1023 | "cell_type": "code", 1024 | "source": "", 1025 | "execution_count": null, 1026 | "outputs": [] 1027 | }, 1028 | { 1029 | "metadata": {}, 1030 | "cell_type": "markdown", 1031 | "source": "---\n> P-071: レシート明細データフレーム(df_receipt)の売上日(sales_ymd)に対し、顧客データフレーム(df_customer)の会員申込日(application_date)からの経過月数を計算し、顧客ID(customer_id)、売上日、会員申込日とともに表示せよ。結果は10件表示させれば良い(なお、sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。1ヶ月未満は切り捨てること。" 1032 | }, 1033 | { 1034 | "metadata": { 1035 | "trusted": false 1036 | }, 1037 | "cell_type": "code", 1038 | "source": "", 1039 | "execution_count": null, 1040 | "outputs": [] 1041 | }, 1042 | { 1043 | "metadata": {}, 1044 | "cell_type": "markdown", 1045 | "source": "---\n> P-072: レシート明細データフレーム(df_receipt)の売上日(sales_ymd)に対し、顧客データフレーム(df_customer)の会員申込日(application_date)からの経過年数を計算し、顧客ID(customer_id)、売上日、会員申込日とともに表示せよ。結果は10件表示させれば良い。(なお、sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。1年未満は切り捨てること。" 1046 | }, 1047 | { 1048 | "metadata": { 1049 | "trusted": false 1050 | }, 1051 | "cell_type": "code", 1052 | "source": "", 1053 | "execution_count": null, 1054 | "outputs": [] 1055 | }, 1056 | { 1057 | "metadata": {}, 1058 | "cell_type": "markdown", 1059 | "source": "---\n> P-073: レシート明細データフレーム(df_receipt)の売上日(sales_ymd)に対し、顧客データフレーム(df_customer)の会員申込日(application_date)からのエポック秒による経過時間を計算し、顧客ID(customer_id)、売上日、会員申込日とともに表示せよ。結果は10件表示させれば良い(なお、sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。なお、時間情報は保有していないため各日付は0時0分0秒を表すものとする。" 1060 | }, 1061 | { 1062 | "metadata": { 1063 | "trusted": false 1064 | }, 1065 | "cell_type": "code", 1066 | "source": "", 1067 | "execution_count": null, 1068 | "outputs": [] 1069 | }, 1070 | { 1071 | "metadata": {}, 1072 | "cell_type": "markdown", 1073 | "source": "---\n> P-074: レシート明細データフレーム(df_receipt)の売上日(sales_ymd)に対し、当該週の月曜日からの経過日数を計算し、売上日、当該週の月曜日付とともに表示せよ。結果は10件表示させれば良い(なお、sales_ymdは数値でデータを保持している点に注意)。" 1074 | }, 1075 | { 1076 | "metadata": { 1077 | "trusted": false 1078 | }, 1079 | "cell_type": "code", 1080 | "source": "", 1081 | "execution_count": null, 1082 | "outputs": [] 1083 | }, 1084 | { 1085 | "metadata": {}, 1086 | "cell_type": "markdown", 1087 | "source": "---\n> P-075: 顧客データフレーム(df_customer)からランダムに1%のデータを抽出し、先頭から10件データを抽出せよ。" 1088 | }, 1089 | { 1090 | "metadata": { 1091 | "trusted": false 1092 | }, 1093 | "cell_type": "code", 1094 | "source": "", 1095 | "execution_count": null, 1096 | "outputs": [] 1097 | }, 1098 | { 1099 | "metadata": {}, 1100 | "cell_type": "markdown", 1101 | "source": "---\n> P-076: 顧客データフレーム(df_customer)から性別(gender_cd)の割合に基づきランダムに10%のデータを層化抽出データし、性別ごとに件数を集計せよ。" 1102 | }, 1103 | { 1104 | "metadata": { 1105 | "trusted": false 1106 | }, 1107 | "cell_type": "code", 1108 | "source": "", 1109 | "execution_count": null, 1110 | "outputs": [] 1111 | }, 1112 | { 1113 | "metadata": {}, 1114 | "cell_type": "markdown", 1115 | "source": "---\n> P-077: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客単位に合計し、合計した売上金額の外れ値を抽出せよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。なお、ここでは外れ値を平均から3σ以上離れたものとする。結果は10件表示させれば良い。" 1116 | }, 1117 | { 1118 | "metadata": { 1119 | "trusted": false 1120 | }, 1121 | "cell_type": "code", 1122 | "source": "", 1123 | "execution_count": null, 1124 | "outputs": [] 1125 | }, 1126 | { 1127 | "metadata": {}, 1128 | "cell_type": "markdown", 1129 | "source": "---\n> P-078: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客単位に合計し、合計した売上金額の外れ値を抽出せよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。なお、ここでは外れ値を第一四分位と第三四分位の差であるIQRを用いて、「第一四分位数-1.5×IQR」よりも下回るもの、または「第三四分位数+1.5×IQR」を超えるものとする。結果は10件表示させれば良い。" 1130 | }, 1131 | { 1132 | "metadata": { 1133 | "trusted": false 1134 | }, 1135 | "cell_type": "code", 1136 | "source": "", 1137 | "execution_count": null, 1138 | "outputs": [] 1139 | }, 1140 | { 1141 | "metadata": {}, 1142 | "cell_type": "markdown", 1143 | "source": "---\n> P-079: 商品データフレーム(df_product)の各項目に対し、欠損数を確認せよ。" 1144 | }, 1145 | { 1146 | "metadata": { 1147 | "trusted": false 1148 | }, 1149 | "cell_type": "code", 1150 | "source": "", 1151 | "execution_count": null, 1152 | "outputs": [] 1153 | }, 1154 | { 1155 | "metadata": {}, 1156 | "cell_type": "markdown", 1157 | "source": "---\n> P-080: 商品データフレーム(df_product)のいずれかの項目に欠損が発生しているレコードを全て削除した新たなdf_product_1を作成せよ。なお、削除前後の件数を表示させ、前設問で確認した件数だけ減少していることも確認すること。" 1158 | }, 1159 | { 1160 | "metadata": { 1161 | "trusted": false 1162 | }, 1163 | "cell_type": "code", 1164 | "source": "", 1165 | "execution_count": null, 1166 | "outputs": [] 1167 | }, 1168 | { 1169 | "metadata": {}, 1170 | "cell_type": "markdown", 1171 | "source": "---\n> P-081: 単価(unit_price)と原価(unit_cost)の欠損値について、それぞれの平均値で補完した新たなdf_product_2を作成せよ。なお、平均値について1円未満は四捨五入とし、0.5については偶数寄せでかまわない。補完実施後、各項目について欠損が生じていないことも確認すること。" 1172 | }, 1173 | { 1174 | "metadata": { 1175 | "trusted": false 1176 | }, 1177 | "cell_type": "code", 1178 | "source": "", 1179 | "execution_count": null, 1180 | "outputs": [] 1181 | }, 1182 | { 1183 | "metadata": {}, 1184 | "cell_type": "markdown", 1185 | "source": "---\n> P-082: 単価(unit_price)と原価(unit_cost)の欠損値について、それぞれの中央値で補完した新たなdf_product_3を作成せよ。なお、中央値について1円未満は四捨五入とし、0.5については偶数寄せでかまわない。補完実施後、各項目について欠損が生じていないことも確認すること。" 1186 | }, 1187 | { 1188 | "metadata": { 1189 | "trusted": false 1190 | }, 1191 | "cell_type": "code", 1192 | "source": "", 1193 | "execution_count": null, 1194 | "outputs": [] 1195 | }, 1196 | { 1197 | "metadata": {}, 1198 | "cell_type": "markdown", 1199 | "source": "---\n> P-083: 単価(unit_price)と原価(unit_cost)の欠損値について、各商品の小区分(category_small_cd)ごとに算出した中央値で補完した新たなdf_product_4を作成せよ。なお、中央値について1円未満は四捨五入とし、0.5については偶数寄せでかまわない。補完実施後、各項目について欠損が生じていないことも確認すること。" 1200 | }, 1201 | { 1202 | "metadata": { 1203 | "trusted": false 1204 | }, 1205 | "cell_type": "code", 1206 | "source": "", 1207 | "execution_count": null, 1208 | "outputs": [] 1209 | }, 1210 | { 1211 | "metadata": {}, 1212 | "cell_type": "markdown", 1213 | "source": "---\n> P-084: 顧客データフレーム(df_customer)の全顧客に対し、全期間の売上金額に占める2019年売上金額の割合を計算せよ。ただし、販売実績のない場合は0として扱うこと。そして計算した割合が0超のものを抽出せよ。 結果は10件表示させれば良い。また、作成したデータにNAやNANが存在しないことを確認せよ。" 1214 | }, 1215 | { 1216 | "metadata": { 1217 | "trusted": false 1218 | }, 1219 | "cell_type": "code", 1220 | "source": "", 1221 | "execution_count": null, 1222 | "outputs": [] 1223 | }, 1224 | { 1225 | "metadata": {}, 1226 | "cell_type": "markdown", 1227 | "source": "---\n> P-085: 顧客データフレーム(df_customer)の全顧客に対し、郵便番号(postal_cd)を用いて経度緯度変換用データフレーム(df_geocode)を紐付け、新たなdf_customer_1を作成せよ。ただし、複数紐づく場合は経度(longitude)、緯度(latitude)それぞれ平均を算出すること。\n" 1228 | }, 1229 | { 1230 | "metadata": { 1231 | "trusted": false 1232 | }, 1233 | "cell_type": "code", 1234 | "source": "", 1235 | "execution_count": null, 1236 | "outputs": [] 1237 | }, 1238 | { 1239 | "metadata": {}, 1240 | "cell_type": "markdown", 1241 | "source": "---\n> P-086: 前設問で作成した緯度経度つき顧客データフレーム(df_customer_1)に対し、申込み店舗コード(application_store_cd)をキーに店舗データフレーム(df_store)と結合せよ。そして申込み店舗の緯度(latitude)・経度情報(longitude)と顧客の緯度・経度を用いて距離(km)を求め、顧客ID(customer_id)、顧客住所(address)、店舗住所(address)とともに表示せよ。計算式は簡易式で良いものとするが、その他精度の高い方式を利用したライブラリを利用してもかまわない。結果は10件表示すれば良い。" 1242 | }, 1243 | { 1244 | "metadata": {}, 1245 | "cell_type": "markdown", 1246 | "source": "$$\n緯度(ラジアン):\\phi \\\\\n経度(ラジアン):\\lambda \\\\\n距離L = 6371 * arccos(sin \\phi_1 * sin \\phi_2\n+ cos \\phi_1 * cos \\phi_2 * cos(\\lambda_1 − \\lambda_2))\n$$" 1247 | }, 1248 | { 1249 | "metadata": { 1250 | "trusted": false 1251 | }, 1252 | "cell_type": "code", 1253 | "source": "", 1254 | "execution_count": null, 1255 | "outputs": [] 1256 | }, 1257 | { 1258 | "metadata": {}, 1259 | "cell_type": "markdown", 1260 | "source": "---\n> P-087: 顧客データフレーム(df_customer)では、異なる店舗での申込みなどにより同一顧客が複数登録されている。名前(customer_name)と郵便番号(postal_cd)が同じ顧客は同一顧客とみなし、1顧客1レコードとなるように名寄せした名寄顧客データフレーム(df_customer_u)を作成せよ。ただし、同一顧客に対しては売上金額合計が最も高いものを残すものとし、売上金額合計が同一もしくは売上実績の無い顧客については顧客ID(customer_id)の番号が小さいものを残すこととする。" 1261 | }, 1262 | { 1263 | "metadata": { 1264 | "trusted": false 1265 | }, 1266 | "cell_type": "code", 1267 | "source": "", 1268 | "execution_count": null, 1269 | "outputs": [] 1270 | }, 1271 | { 1272 | "metadata": {}, 1273 | "cell_type": "markdown", 1274 | "source": "---\n> P-088: 前設問で作成したデータを元に、顧客データフレームに統合名寄IDを付与したデータフレーム(df_customer_n)を作成せよ。ただし、統合名寄IDは以下の仕様で付与するものとする。\n>\n> - 重複していない顧客:顧客ID(customer_id)を設定\n> - 重複している顧客:前設問で抽出したレコードの顧客IDを設定" 1275 | }, 1276 | { 1277 | "metadata": { 1278 | "trusted": false 1279 | }, 1280 | "cell_type": "code", 1281 | "source": "", 1282 | "execution_count": null, 1283 | "outputs": [] 1284 | }, 1285 | { 1286 | "metadata": {}, 1287 | "cell_type": "markdown", 1288 | "source": "---\n> P-閑話: df_customer_1, df_customer_nは使わないので削除する。" 1289 | }, 1290 | { 1291 | "metadata": { 1292 | "trusted": false 1293 | }, 1294 | "cell_type": "code", 1295 | "source": "", 1296 | "execution_count": null, 1297 | "outputs": [] 1298 | }, 1299 | { 1300 | "metadata": {}, 1301 | "cell_type": "markdown", 1302 | "source": "---\n> P-089: 売上実績のある顧客に対し、予測モデル構築のため学習用データとテスト用データに分割したい。それぞれ8:2の割合でランダムにデータを分割せよ。" 1303 | }, 1304 | { 1305 | "metadata": { 1306 | "trusted": false 1307 | }, 1308 | "cell_type": "code", 1309 | "source": "", 1310 | "execution_count": null, 1311 | "outputs": [] 1312 | }, 1313 | { 1314 | "metadata": {}, 1315 | "cell_type": "markdown", 1316 | "source": "---\n> P-090: レシート明細データフレーム(df_receipt)は2017年1月1日〜2019年10月31日までのデータを有している。売上金額(amount)を月次で集計し、学習用に12ヶ月、テスト用に6ヶ月のモデル構築用データを3セット作成せよ。" 1317 | }, 1318 | { 1319 | "metadata": { 1320 | "trusted": false 1321 | }, 1322 | "cell_type": "code", 1323 | "source": "", 1324 | "execution_count": null, 1325 | "outputs": [] 1326 | }, 1327 | { 1328 | "metadata": {}, 1329 | "cell_type": "markdown", 1330 | "source": "---\n> P-091: 顧客データフレーム(df_customer)の各顧客に対し、売上実績のある顧客数と売上実績のない顧客数が1:1となるようにアンダーサンプリングで抽出せよ。" 1331 | }, 1332 | { 1333 | "metadata": { 1334 | "trusted": false 1335 | }, 1336 | "cell_type": "code", 1337 | "source": "", 1338 | "execution_count": null, 1339 | "outputs": [] 1340 | }, 1341 | { 1342 | "metadata": {}, 1343 | "cell_type": "markdown", 1344 | "source": "---\n> P-092: 顧客データフレーム(df_customer)では、性別に関する情報が非正規化の状態で保持されている。これを第三正規化せよ。" 1345 | }, 1346 | { 1347 | "metadata": { 1348 | "trusted": false 1349 | }, 1350 | "cell_type": "code", 1351 | "source": "", 1352 | "execution_count": null, 1353 | "outputs": [] 1354 | }, 1355 | { 1356 | "metadata": {}, 1357 | "cell_type": "markdown", 1358 | "source": "---\n> P-093: 商品データフレーム(df_product)では各カテゴリのコード値だけを保有し、カテゴリ名は保有していない。カテゴリデータフレーム(df_category)と組み合わせて非正規化し、カテゴリ名を保有した新たな商品データフレームを作成せよ。" 1359 | }, 1360 | { 1361 | "metadata": { 1362 | "trusted": false 1363 | }, 1364 | "cell_type": "code", 1365 | "source": "", 1366 | "execution_count": null, 1367 | "outputs": [] 1368 | }, 1369 | { 1370 | "metadata": {}, 1371 | "cell_type": "markdown", 1372 | "source": "---\n> P-094: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。\n>\n> - ファイル形式はCSV(カンマ区切り)\n> - ヘッダ有り\n> - 文字コードはUTF-8" 1373 | }, 1374 | { 1375 | "metadata": { 1376 | "trusted": false 1377 | }, 1378 | "cell_type": "code", 1379 | "source": "", 1380 | "execution_count": null, 1381 | "outputs": [] 1382 | }, 1383 | { 1384 | "metadata": {}, 1385 | "cell_type": "markdown", 1386 | "source": "---\n> P-095: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。\n>\n> - ファイル形式はCSV(カンマ区切り)\n> - ヘッダ有り\n> - 文字コードはCP932" 1387 | }, 1388 | { 1389 | "metadata": { 1390 | "trusted": false 1391 | }, 1392 | "cell_type": "code", 1393 | "source": "", 1394 | "execution_count": null, 1395 | "outputs": [] 1396 | }, 1397 | { 1398 | "metadata": {}, 1399 | "cell_type": "markdown", 1400 | "source": "---\n> P-096: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。\n>\n> - ファイル形式はCSV(カンマ区切り)\n> - ヘッダ無し\n> - 文字コードはUTF-8" 1401 | }, 1402 | { 1403 | "metadata": { 1404 | "trusted": false 1405 | }, 1406 | "cell_type": "code", 1407 | "source": "", 1408 | "execution_count": null, 1409 | "outputs": [] 1410 | }, 1411 | { 1412 | "metadata": {}, 1413 | "cell_type": "markdown", 1414 | "source": "---\n> P-097: 先に作成した以下形式のファイルを読み込み、データフレームを作成せよ。また、先頭10件を表示させ、正しくとりまれていることを確認せよ。\n>\n> - ファイル形式はCSV(カンマ区切り)\n> - ヘッダ有り\n> - 文字コードはUTF-8" 1415 | }, 1416 | { 1417 | "metadata": { 1418 | "trusted": false 1419 | }, 1420 | "cell_type": "code", 1421 | "source": "", 1422 | "execution_count": null, 1423 | "outputs": [] 1424 | }, 1425 | { 1426 | "metadata": {}, 1427 | "cell_type": "markdown", 1428 | "source": "---\n> P-098: 先に作成した以下形式のファイルを読み込み、データフレームを作成せよ。また、先頭10件を表示させ、正しくとりまれていることを確認せよ。\n>\n> - ファイル形式はCSV(カンマ区切り)\n> - ヘッダ無し\n> - 文字コードはUTF-8" 1429 | }, 1430 | { 1431 | "metadata": { 1432 | "trusted": false 1433 | }, 1434 | "cell_type": "code", 1435 | "source": "", 1436 | "execution_count": null, 1437 | "outputs": [] 1438 | }, 1439 | { 1440 | "metadata": {}, 1441 | "cell_type": "markdown", 1442 | "source": "---\n> P-099: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。\n>\n> - ファイル形式はTSV(タブ区切り)\n> - ヘッダ有り\n> - 文字コードはUTF-8" 1443 | }, 1444 | { 1445 | "metadata": { 1446 | "trusted": false 1447 | }, 1448 | "cell_type": "code", 1449 | "source": "", 1450 | "execution_count": null, 1451 | "outputs": [] 1452 | }, 1453 | { 1454 | "metadata": {}, 1455 | "cell_type": "markdown", 1456 | "source": "---\n> P-100: 先に作成した以下形式のファイルを読み込み、データフレームを作成せよ。また、先頭10件を表示させ、正しくとりまれていることを確認せよ。\n>\n> - ファイル形式はTSV(タブ区切り)\n> - ヘッダ有り\n> - 文字コードはUTF-8" 1457 | }, 1458 | { 1459 | "metadata": { 1460 | "trusted": false 1461 | }, 1462 | "cell_type": "code", 1463 | "source": "", 1464 | "execution_count": null, 1465 | "outputs": [] 1466 | }, 1467 | { 1468 | "metadata": {}, 1469 | "cell_type": "markdown", 1470 | "source": "# これで100本終わりです。おつかれさまでした!" 1471 | } 1472 | ], 1473 | "metadata": { 1474 | "kernelspec": { 1475 | "name": "python36", 1476 | "display_name": "Python 3.6", 1477 | "language": "python" 1478 | }, 1479 | "language_info": { 1480 | "mimetype": "text/x-python", 1481 | "nbconvert_exporter": "python", 1482 | "name": "python", 1483 | "pygments_lexer": "ipython3", 1484 | "version": "3.6.6", 1485 | "file_extension": ".py", 1486 | "codemirror_mode": { 1487 | "version": 3, 1488 | "name": "ipython" 1489 | } 1490 | } 1491 | }, 1492 | "nbformat": 4, 1493 | "nbformat_minor": 4 1494 | } 1495 | -------------------------------------------------------------------------------- /preprocess_knock_Python_Colab.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "kernelspec": { 6 | "name": "python36", 7 | "display_name": "Python 3.6", 8 | "language": "python" 9 | }, 10 | "language_info": { 11 | "mimetype": "text/x-python", 12 | "nbconvert_exporter": "python", 13 | "name": "python", 14 | "pygments_lexer": "ipython3", 15 | "version": "3.6.6", 16 | "file_extension": ".py", 17 | "codemirror_mode": { 18 | "version": 3, 19 | "name": "ipython" 20 | } 21 | }, 22 | "colab": { 23 | "name": "preprocess_knock_Python_Azure.ipynb", 24 | "provenance": [], 25 | "include_colab_link": true 26 | } 27 | }, 28 | "cells": [ 29 | { 30 | "cell_type": "markdown", 31 | "metadata": { 32 | "id": "view-in-github", 33 | "colab_type": "text" 34 | }, 35 | "source": [ 36 | "\"Open" 37 | ] 38 | }, 39 | { 40 | "cell_type": "markdown", 41 | "metadata": { 42 | "id": "2-YYpD4Nhhxd", 43 | "colab_type": "text" 44 | }, 45 | "source": [ 46 | "# データサイエンス100本ノック(構造化データ加工編) - Python\n", 47 | "# for Google Colab" 48 | ] 49 | }, 50 | { 51 | "cell_type": "markdown", 52 | "metadata": { 53 | "id": "wbvQn19ghhxe", 54 | "colab_type": "text" 55 | }, 56 | "source": [ 57 | "## 【注意】オリジナル版との変更点\n", 58 | "1. Google Colab ではDockerを使えないので、2020.06.18時点の 100knocks-preprocess/docker/work/data にあるCSVファイルをPostgreSQLから入手する代わりに使います。\n", 59 | "2. オリジナルのCSVデータ, geocode.csvの'latitude'列名の初めにスペースが入っていたため、それを削除しました。\n", 60 | "\n", 61 | " オリジナル(100knocks-preprocess ver.1.0): ' latitude' --> 'latitude'\n", 62 | " \n", 63 | "\n", 64 | "4. オリジナルの解答を元に、必要のないlibraryはimportせず、そして必要なlibraryをAzureNotebookでインストールするように最初のセルを改変してあります。\n", 65 | "5. また、SQLではなく上記CSVからデータを読み込むように'はじめに'の最初のセルを改変してあります。" 66 | ] 67 | }, 68 | { 69 | "cell_type": "markdown", 70 | "metadata": { 71 | "id": "qseL89kEhhxg", 72 | "colab_type": "text" 73 | }, 74 | "source": [ 75 | "## はじめに\n", 76 | "- 初めに以下のセルを実行してください\n", 77 | "- 必要なライブラリのインポートと~~データベース(PostgreSQL)~~ 100knocks-preprocess/docker/work/data にあるCSVファイルからのデータ読み込みを行います。geocode.csvに変更を加えたため、またgit cloneをするとColabの簡便さを損なうため、noguhiro2002のgithubレポジトリから直接読み込みます。\n", 78 | "- pandas等、利用が想定されるライブラリは以下セルでインポートしています\n", 79 | "- その他利用したいライブラリがあれば適宜インストールしてください(\"!pip install ライブラリ名\"でインストールも可能)\n", 80 | "- オリジナルの解答例を元に、必要なライブラリーをpipでインストールします。\n", 81 | "- 処理は複数回に分けても構いません\n", 82 | "- 名前、住所等はダミーデータであり、実在するものではありません" 83 | ] 84 | }, 85 | { 86 | "cell_type": "code", 87 | "metadata": { 88 | "trusted": true, 89 | "id": "k_rQuDF8hhxg", 90 | "colab_type": "code", 91 | "colab": {} 92 | }, 93 | "source": [ 94 | "# pipでオリジナルの解答に必要なライブラリーをインストール\n", 95 | "!pip install --upgrade pip\n", 96 | "!pip install -U pandas numpy scikit-learn imbalanced-learn\n", 97 | "\n", 98 | "# pipでオリジナルの解答に必要なライブラリーをインポート\n", 99 | "import os\n", 100 | "import pandas as pd\n", 101 | "import numpy as np\n", 102 | "from datetime import datetime, date\n", 103 | "from dateutil.relativedelta import relativedelta\n", 104 | "import math\n", 105 | "from sklearn import preprocessing\n", 106 | "from sklearn.model_selection import train_test_split\n", 107 | "from imblearn.under_sampling import RandomUnderSampler\n", 108 | "\n", 109 | "\n", 110 | "# データを github/noguhiro2002/100knocks-preprocess/work/data フォルダよりDataframe形式でRead\n", 111 | "df_customer = pd.read_csv('https://raw.githubusercontent.com/The-Japan-DataScientist-Society/100knocks-preprocess/master/docker/work/data/customer.csv')\n", 112 | "df_category = pd.read_csv('https://raw.githubusercontent.com/The-Japan-DataScientist-Society/100knocks-preprocess/master/docker/work/data/category.csv')\n", 113 | "df_product = pd.read_csv('https://raw.githubusercontent.com/The-Japan-DataScientist-Society/100knocks-preprocess/master/docker/work/data/product.csv')\n", 114 | "df_receipt = pd.read_csv('https://raw.githubusercontent.com/The-Japan-DataScientist-Society/100knocks-preprocess/master/docker/work/data/receipt.csv')\n", 115 | "df_store = pd.read_csv('https://raw.githubusercontent.com/The-Japan-DataScientist-Society/100knocks-preprocess/master/docker/work/data/store.csv')\n", 116 | "df_geocode = pd.read_csv('https://raw.githubusercontent.com/noguhiro2002/100knocks-preprocess_ForColab-AzureNotebook/master/data/geocode.csv')" 117 | ], 118 | "execution_count": null, 119 | "outputs": [] 120 | }, 121 | { 122 | "cell_type": "markdown", 123 | "metadata": { 124 | "id": "EMvNeX6Qhhxk", 125 | "colab_type": "text" 126 | }, 127 | "source": [ 128 | "# 演習問題" 129 | ] 130 | }, 131 | { 132 | "cell_type": "markdown", 133 | "metadata": { 134 | "id": "r244WHrjhhxk", 135 | "colab_type": "text" 136 | }, 137 | "source": [ 138 | "---\n", 139 | "> P-001: レシート明細のデータフレーム(df_receipt)から全項目の先頭10件を表示し、どのようなデータを保有しているか目視で確認せよ。" 140 | ] 141 | }, 142 | { 143 | "cell_type": "code", 144 | "metadata": { 145 | "trusted": false, 146 | "id": "RrcFPQjUhhxk", 147 | "colab_type": "code", 148 | "colab": {} 149 | }, 150 | "source": [ 151 | "" 152 | ], 153 | "execution_count": null, 154 | "outputs": [] 155 | }, 156 | { 157 | "cell_type": "markdown", 158 | "metadata": { 159 | "id": "us1AbdWfhhxm", 160 | "colab_type": "text" 161 | }, 162 | "source": [ 163 | "---\n", 164 | "> P-002: レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、10件表示させよ。" 165 | ] 166 | }, 167 | { 168 | "cell_type": "code", 169 | "metadata": { 170 | "trusted": false, 171 | "id": "AwaINHByhhxm", 172 | "colab_type": "code", 173 | "colab": {} 174 | }, 175 | "source": [ 176 | "" 177 | ], 178 | "execution_count": null, 179 | "outputs": [] 180 | }, 181 | { 182 | "cell_type": "markdown", 183 | "metadata": { 184 | "id": "_yPcu6bkhhxo", 185 | "colab_type": "text" 186 | }, 187 | "source": [ 188 | "---\n", 189 | "> P-003: レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、10件表示させよ。ただし、sales_ymdはsales_dateに項目名を変更しながら抽出すること。" 190 | ] 191 | }, 192 | { 193 | "cell_type": "code", 194 | "metadata": { 195 | "trusted": false, 196 | "id": "ZKVA9bCRhhxp", 197 | "colab_type": "code", 198 | "colab": {} 199 | }, 200 | "source": [ 201 | "" 202 | ], 203 | "execution_count": null, 204 | "outputs": [] 205 | }, 206 | { 207 | "cell_type": "markdown", 208 | "metadata": { 209 | "id": "dHcdbLoehhxq", 210 | "colab_type": "text" 211 | }, 212 | "source": [ 213 | "---\n", 214 | "> P-004: レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。\n", 215 | "> - 顧客ID(customer_id)が\"CS018205000001\"" 216 | ] 217 | }, 218 | { 219 | "cell_type": "code", 220 | "metadata": { 221 | "trusted": false, 222 | "id": "Fqp5Qdmkhhxr", 223 | "colab_type": "code", 224 | "colab": {} 225 | }, 226 | "source": [ 227 | "" 228 | ], 229 | "execution_count": null, 230 | "outputs": [] 231 | }, 232 | { 233 | "cell_type": "markdown", 234 | "metadata": { 235 | "id": "nvI5Comzhhxt", 236 | "colab_type": "text" 237 | }, 238 | "source": [ 239 | "---\n", 240 | "> P-005: レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。\n", 241 | "> - 顧客ID(customer_id)が\"CS018205000001\"\n", 242 | "> - 売上金額(amount)が1,000以上" 243 | ] 244 | }, 245 | { 246 | "cell_type": "code", 247 | "metadata": { 248 | "trusted": false, 249 | "id": "jZDWoB_Bhhxv", 250 | "colab_type": "code", 251 | "colab": {} 252 | }, 253 | "source": [ 254 | "" 255 | ], 256 | "execution_count": null, 257 | "outputs": [] 258 | }, 259 | { 260 | "cell_type": "markdown", 261 | "metadata": { 262 | "id": "-Dz6spPThhxx", 263 | "colab_type": "text" 264 | }, 265 | "source": [ 266 | "---\n", 267 | "> P-006: レシート明細データフレーム「df_receipt」から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上数量(quantity)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。\n", 268 | "> - 顧客ID(customer_id)が\"CS018205000001\"\n", 269 | "> - 売上金額(amount)が1,000以上または売上数量(quantity)が5以上" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "metadata": { 275 | "trusted": false, 276 | "id": "8IH2MwDUhhxx", 277 | "colab_type": "code", 278 | "colab": {} 279 | }, 280 | "source": [ 281 | "" 282 | ], 283 | "execution_count": null, 284 | "outputs": [] 285 | }, 286 | { 287 | "cell_type": "markdown", 288 | "metadata": { 289 | "id": "OjU7Uofzhhxz", 290 | "colab_type": "text" 291 | }, 292 | "source": [ 293 | "---\n", 294 | "> P-007: レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。\n", 295 | "> - 顧客ID(customer_id)が\"CS018205000001\"\n", 296 | "> - 売上金額(amount)が1,000以上2,000以下" 297 | ] 298 | }, 299 | { 300 | "cell_type": "code", 301 | "metadata": { 302 | "trusted": false, 303 | "id": "oywQDpHbhhxz", 304 | "colab_type": "code", 305 | "colab": {} 306 | }, 307 | "source": [ 308 | "" 309 | ], 310 | "execution_count": null, 311 | "outputs": [] 312 | }, 313 | { 314 | "cell_type": "markdown", 315 | "metadata": { 316 | "id": "wvvecxrThhx1", 317 | "colab_type": "text" 318 | }, 319 | "source": [ 320 | "---\n", 321 | "> P-008: レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。\n", 322 | "> - 顧客ID(customer_id)が\"CS018205000001\"\n", 323 | "> - 商品コード(product_cd)が\"P071401019\"以外" 324 | ] 325 | }, 326 | { 327 | "cell_type": "code", 328 | "metadata": { 329 | "trusted": false, 330 | "id": "oIKb4uZEhhx1", 331 | "colab_type": "code", 332 | "colab": {} 333 | }, 334 | "source": [ 335 | "" 336 | ], 337 | "execution_count": null, 338 | "outputs": [] 339 | }, 340 | { 341 | "cell_type": "markdown", 342 | "metadata": { 343 | "id": "raZwJrBbhhx3", 344 | "colab_type": "text" 345 | }, 346 | "source": [ 347 | "---\n", 348 | "> P-009: 以下の処理において、出力結果を変えずにORをANDに書き換えよ。\n", 349 | "\n", 350 | "`df_store.query('not(prefecture_cd == \"13\" | floor_area > 900)')`" 351 | ] 352 | }, 353 | { 354 | "cell_type": "code", 355 | "metadata": { 356 | "trusted": false, 357 | "id": "Ik77huJ-hhx3", 358 | "colab_type": "code", 359 | "colab": {} 360 | }, 361 | "source": [ 362 | "" 363 | ], 364 | "execution_count": null, 365 | "outputs": [] 366 | }, 367 | { 368 | "cell_type": "markdown", 369 | "metadata": { 370 | "id": "vyAFAs5Rhhx5", 371 | "colab_type": "text" 372 | }, 373 | "source": [ 374 | "---\n", 375 | "> P-010: 店舗データフレーム(df_store)から、店舗コード(store_cd)が\"S14\"で始まるものだけ全項目抽出し、10件だけ表示せよ。" 376 | ] 377 | }, 378 | { 379 | "cell_type": "code", 380 | "metadata": { 381 | "trusted": false, 382 | "id": "aaHaULLwhhx5", 383 | "colab_type": "code", 384 | "colab": {} 385 | }, 386 | "source": [ 387 | "" 388 | ], 389 | "execution_count": null, 390 | "outputs": [] 391 | }, 392 | { 393 | "cell_type": "markdown", 394 | "metadata": { 395 | "id": "rZOTvgu0hhx7", 396 | "colab_type": "text" 397 | }, 398 | "source": [ 399 | "---\n", 400 | "> P-011: 顧客データフレーム(df_customer)から顧客ID(customer_id)の末尾が1のものだけ全項目抽出し、10件だけ表示せよ。" 401 | ] 402 | }, 403 | { 404 | "cell_type": "code", 405 | "metadata": { 406 | "trusted": false, 407 | "id": "tTJ7JCl_hhx7", 408 | "colab_type": "code", 409 | "colab": {} 410 | }, 411 | "source": [ 412 | "" 413 | ], 414 | "execution_count": null, 415 | "outputs": [] 416 | }, 417 | { 418 | "cell_type": "markdown", 419 | "metadata": { 420 | "id": "rZR7bxyYhhx9", 421 | "colab_type": "text" 422 | }, 423 | "source": [ 424 | "---\n", 425 | "> P-012: 店舗データフレーム(df_store)から横浜市の店舗だけ全項目表示せよ。" 426 | ] 427 | }, 428 | { 429 | "cell_type": "code", 430 | "metadata": { 431 | "trusted": false, 432 | "id": "Yvqzxpskhhx9", 433 | "colab_type": "code", 434 | "colab": {} 435 | }, 436 | "source": [ 437 | "" 438 | ], 439 | "execution_count": null, 440 | "outputs": [] 441 | }, 442 | { 443 | "cell_type": "markdown", 444 | "metadata": { 445 | "id": "6J8QsPb9hhx_", 446 | "colab_type": "text" 447 | }, 448 | "source": [ 449 | "---\n", 450 | "> P-013: 顧客データフレーム(df_customer)から、ステータスコード(status_cd)の先頭がアルファベットのA〜Fで始まるデータを全項目抽出し、10件だけ表示せよ。" 451 | ] 452 | }, 453 | { 454 | "cell_type": "code", 455 | "metadata": { 456 | "trusted": false, 457 | "id": "ZBA2t0BThhx_", 458 | "colab_type": "code", 459 | "colab": {} 460 | }, 461 | "source": [ 462 | "" 463 | ], 464 | "execution_count": null, 465 | "outputs": [] 466 | }, 467 | { 468 | "cell_type": "markdown", 469 | "metadata": { 470 | "id": "4rPUMBu_hhyB", 471 | "colab_type": "text" 472 | }, 473 | "source": [ 474 | "---\n", 475 | "> P-014: 顧客データフレーム(df_customer)から、ステータスコード(status_cd)の末尾が数字の1〜9で終わるデータを全項目抽出し、10件だけ表示せよ。" 476 | ] 477 | }, 478 | { 479 | "cell_type": "code", 480 | "metadata": { 481 | "trusted": false, 482 | "id": "0U8WSbn1hhyB", 483 | "colab_type": "code", 484 | "colab": {} 485 | }, 486 | "source": [ 487 | "" 488 | ], 489 | "execution_count": null, 490 | "outputs": [] 491 | }, 492 | { 493 | "cell_type": "markdown", 494 | "metadata": { 495 | "id": "0Jx471rjhhyD", 496 | "colab_type": "text" 497 | }, 498 | "source": [ 499 | "---\n", 500 | "> P-015: 顧客データフレーム(df_customer)から、ステータスコード(status_cd)の先頭がアルファベットのA〜Fで始まり、末尾が数字の1〜9で終わるデータを全項目抽出し、10件だけ表示せよ。" 501 | ] 502 | }, 503 | { 504 | "cell_type": "code", 505 | "metadata": { 506 | "trusted": false, 507 | "id": "QuiyjScHhhyD", 508 | "colab_type": "code", 509 | "colab": {} 510 | }, 511 | "source": [ 512 | "" 513 | ], 514 | "execution_count": null, 515 | "outputs": [] 516 | }, 517 | { 518 | "cell_type": "markdown", 519 | "metadata": { 520 | "id": "48UCinEUhhyF", 521 | "colab_type": "text" 522 | }, 523 | "source": [ 524 | "---\n", 525 | "> P-016: 店舗データフレーム(df_store)から、電話番号(tel_no)が3桁-3桁-4桁のデータを全項目表示せよ。" 526 | ] 527 | }, 528 | { 529 | "cell_type": "code", 530 | "metadata": { 531 | "trusted": false, 532 | "id": "SrA3BoD5hhyF", 533 | "colab_type": "code", 534 | "colab": {} 535 | }, 536 | "source": [ 537 | "" 538 | ], 539 | "execution_count": null, 540 | "outputs": [] 541 | }, 542 | { 543 | "cell_type": "markdown", 544 | "metadata": { 545 | "id": "KnSy736bhhyH", 546 | "colab_type": "text" 547 | }, 548 | "source": [ 549 | "---\n", 550 | "> P-17: 顧客データフレーム(df_customer)を生年月日(birth_day)で高齢順にソートし、先頭10件を全項目表示せよ。" 551 | ] 552 | }, 553 | { 554 | "cell_type": "code", 555 | "metadata": { 556 | "trusted": false, 557 | "id": "5gjQipFAhhyH", 558 | "colab_type": "code", 559 | "colab": {} 560 | }, 561 | "source": [ 562 | "" 563 | ], 564 | "execution_count": null, 565 | "outputs": [] 566 | }, 567 | { 568 | "cell_type": "markdown", 569 | "metadata": { 570 | "id": "BDUAeRqshhyI", 571 | "colab_type": "text" 572 | }, 573 | "source": [ 574 | "---\n", 575 | "> P-18: 顧客データフレーム(df_customer)を生年月日(birth_day)で若い順にソートし、先頭10件を全項目表示せよ。" 576 | ] 577 | }, 578 | { 579 | "cell_type": "code", 580 | "metadata": { 581 | "trusted": false, 582 | "id": "AkM5jZ2xhhyJ", 583 | "colab_type": "code", 584 | "colab": {} 585 | }, 586 | "source": [ 587 | "" 588 | ], 589 | "execution_count": null, 590 | "outputs": [] 591 | }, 592 | { 593 | "cell_type": "markdown", 594 | "metadata": { 595 | "id": "jIbxf5DwhhyK", 596 | "colab_type": "text" 597 | }, 598 | "source": [ 599 | "---\n", 600 | "> P-19: レシート明細データフレーム(df_receipt)に対し、1件あたりの売上金額(amount)が高い順にランクを付与し、先頭10件を抽出せよ。項目は顧客ID(customer_id)、売上金額(amount)、付与したランクを表示させること。なお、売上金額(amount)が等しい場合は同一順位を付与するものとする。" 601 | ] 602 | }, 603 | { 604 | "cell_type": "code", 605 | "metadata": { 606 | "trusted": false, 607 | "id": "erXRPeQXhhyL", 608 | "colab_type": "code", 609 | "colab": {} 610 | }, 611 | "source": [ 612 | "" 613 | ], 614 | "execution_count": null, 615 | "outputs": [] 616 | }, 617 | { 618 | "cell_type": "markdown", 619 | "metadata": { 620 | "id": "mhp33yibhhyM", 621 | "colab_type": "text" 622 | }, 623 | "source": [ 624 | "---\n", 625 | "> P-020: レシート明細データフレーム(df_receipt)に対し、1件あたりの売上金額(amount)が高い順にランクを付与し、先頭10件を抽出せよ。項目は顧客ID(customer_id)、売上金額(amount)、付与したランクを表示させること。なお、売上金額(amount)が等しい場合でも別順位を付与すること。" 626 | ] 627 | }, 628 | { 629 | "cell_type": "code", 630 | "metadata": { 631 | "trusted": false, 632 | "id": "Ks8wJ4dghhyM", 633 | "colab_type": "code", 634 | "colab": {} 635 | }, 636 | "source": [ 637 | "" 638 | ], 639 | "execution_count": null, 640 | "outputs": [] 641 | }, 642 | { 643 | "cell_type": "markdown", 644 | "metadata": { 645 | "id": "1lRGtDSphhyQ", 646 | "colab_type": "text" 647 | }, 648 | "source": [ 649 | "---\n", 650 | "> P-021: レシート明細データフレーム(df_receipt)に対し、件数をカウントせよ。" 651 | ] 652 | }, 653 | { 654 | "cell_type": "code", 655 | "metadata": { 656 | "trusted": false, 657 | "id": "m-ihL_fVhhyQ", 658 | "colab_type": "code", 659 | "colab": {} 660 | }, 661 | "source": [ 662 | "" 663 | ], 664 | "execution_count": null, 665 | "outputs": [] 666 | }, 667 | { 668 | "cell_type": "markdown", 669 | "metadata": { 670 | "id": "MkjDW-oyhhyS", 671 | "colab_type": "text" 672 | }, 673 | "source": [ 674 | "---\n", 675 | "> P-022: レシート明細データフレーム(df_receipt)の顧客ID(customer_id)に対し、ユニーク件数をカウントせよ。" 676 | ] 677 | }, 678 | { 679 | "cell_type": "code", 680 | "metadata": { 681 | "trusted": false, 682 | "id": "0xSI9r8UhhyS", 683 | "colab_type": "code", 684 | "colab": {} 685 | }, 686 | "source": [ 687 | "" 688 | ], 689 | "execution_count": null, 690 | "outputs": [] 691 | }, 692 | { 693 | "cell_type": "markdown", 694 | "metadata": { 695 | "id": "nhAK-Wf5hhyT", 696 | "colab_type": "text" 697 | }, 698 | "source": [ 699 | "---\n", 700 | "> P-023: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)と売上数量(quantity)を合計せよ。" 701 | ] 702 | }, 703 | { 704 | "cell_type": "code", 705 | "metadata": { 706 | "trusted": false, 707 | "id": "ZAkUf4-5hhyU", 708 | "colab_type": "code", 709 | "colab": {} 710 | }, 711 | "source": [ 712 | "" 713 | ], 714 | "execution_count": null, 715 | "outputs": [] 716 | }, 717 | { 718 | "cell_type": "markdown", 719 | "metadata": { 720 | "id": "F4RjuZr_hhyV", 721 | "colab_type": "text" 722 | }, 723 | "source": [ 724 | "---\n", 725 | "> P-024: レシート明細データフレーム(df_receipt)に対し、顧客ID(customer_id)ごとに最も新しい売上日(sales_ymd)を求め、10件表示せよ。" 726 | ] 727 | }, 728 | { 729 | "cell_type": "code", 730 | "metadata": { 731 | "trusted": false, 732 | "id": "ir6Oke73hhyV", 733 | "colab_type": "code", 734 | "colab": {} 735 | }, 736 | "source": [ 737 | "" 738 | ], 739 | "execution_count": null, 740 | "outputs": [] 741 | }, 742 | { 743 | "cell_type": "markdown", 744 | "metadata": { 745 | "id": "QZlvMM7AhhyX", 746 | "colab_type": "text" 747 | }, 748 | "source": [ 749 | "---\n", 750 | "> P-025: レシート明細データフレーム(df_receipt)に対し、顧客ID(customer_id)ごとに最も古い売上日(sales_ymd)を求め、10件表示せよ。" 751 | ] 752 | }, 753 | { 754 | "cell_type": "code", 755 | "metadata": { 756 | "trusted": false, 757 | "id": "MFnLotE_hhyX", 758 | "colab_type": "code", 759 | "colab": {} 760 | }, 761 | "source": [ 762 | "" 763 | ], 764 | "execution_count": null, 765 | "outputs": [] 766 | }, 767 | { 768 | "cell_type": "markdown", 769 | "metadata": { 770 | "id": "QLeGVwYWhhyZ", 771 | "colab_type": "text" 772 | }, 773 | "source": [ 774 | "---\n", 775 | "> P-026: レシート明細データフレーム(df_receipt)に対し、顧客ID(customer_id)ごとに最も新しい売上日(sales_ymd)と古い売上日を求め、両者が異なるデータを10件表示せよ。" 776 | ] 777 | }, 778 | { 779 | "cell_type": "code", 780 | "metadata": { 781 | "trusted": false, 782 | "id": "q68lbEewhhyZ", 783 | "colab_type": "code", 784 | "colab": {} 785 | }, 786 | "source": [ 787 | "" 788 | ], 789 | "execution_count": null, 790 | "outputs": [] 791 | }, 792 | { 793 | "cell_type": "markdown", 794 | "metadata": { 795 | "id": "259M7d7Ohhyb", 796 | "colab_type": "text" 797 | }, 798 | "source": [ 799 | "---\n", 800 | "> P-027: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の平均を計算し、降順でTOP5を表示せよ。" 801 | ] 802 | }, 803 | { 804 | "cell_type": "code", 805 | "metadata": { 806 | "trusted": false, 807 | "id": "i5ehOOaBhhyb", 808 | "colab_type": "code", 809 | "colab": {} 810 | }, 811 | "source": [ 812 | "" 813 | ], 814 | "execution_count": null, 815 | "outputs": [] 816 | }, 817 | { 818 | "cell_type": "markdown", 819 | "metadata": { 820 | "id": "5oUtacPihhyc", 821 | "colab_type": "text" 822 | }, 823 | "source": [ 824 | "---\n", 825 | "> P-028: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の中央値を計算し、降順でTOP5を表示せよ。" 826 | ] 827 | }, 828 | { 829 | "cell_type": "code", 830 | "metadata": { 831 | "trusted": false, 832 | "id": "-s9SplCEhhyd", 833 | "colab_type": "code", 834 | "colab": {} 835 | }, 836 | "source": [ 837 | "" 838 | ], 839 | "execution_count": null, 840 | "outputs": [] 841 | }, 842 | { 843 | "cell_type": "markdown", 844 | "metadata": { 845 | "id": "4i4pM4Cmhhye", 846 | "colab_type": "text" 847 | }, 848 | "source": [ 849 | "---\n", 850 | "> P-029: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに商品コード(product_cd)の最頻値を求めよ。" 851 | ] 852 | }, 853 | { 854 | "cell_type": "code", 855 | "metadata": { 856 | "trusted": false, 857 | "id": "DsX1TXZIhhye", 858 | "colab_type": "code", 859 | "colab": {} 860 | }, 861 | "source": [ 862 | "" 863 | ], 864 | "execution_count": null, 865 | "outputs": [] 866 | }, 867 | { 868 | "cell_type": "markdown", 869 | "metadata": { 870 | "id": "DKpNVF4Ahhyg", 871 | "colab_type": "text" 872 | }, 873 | "source": [ 874 | "---\n", 875 | "> P-030: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の標本分散を計算し、降順でTOP5を表示せよ。" 876 | ] 877 | }, 878 | { 879 | "cell_type": "code", 880 | "metadata": { 881 | "trusted": false, 882 | "id": "YO_oM4BRhhyg", 883 | "colab_type": "code", 884 | "colab": {} 885 | }, 886 | "source": [ 887 | "" 888 | ], 889 | "execution_count": null, 890 | "outputs": [] 891 | }, 892 | { 893 | "cell_type": "markdown", 894 | "metadata": { 895 | "id": "KQUwt_Zghhyi", 896 | "colab_type": "text" 897 | }, 898 | "source": [ 899 | "---\n", 900 | "> P-031: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の標本標準偏差を計算し、降順でTOP5を表示せよ。" 901 | ] 902 | }, 903 | { 904 | "cell_type": "code", 905 | "metadata": { 906 | "trusted": false, 907 | "id": "7UwDIKcZhhyi", 908 | "colab_type": "code", 909 | "colab": {} 910 | }, 911 | "source": [ 912 | "" 913 | ], 914 | "execution_count": null, 915 | "outputs": [] 916 | }, 917 | { 918 | "cell_type": "markdown", 919 | "metadata": { 920 | "id": "DpGB1z1Ehhyj", 921 | "colab_type": "text" 922 | }, 923 | "source": [ 924 | "---\n", 925 | "> P-032: レシート明細データフレーム(df_receipt)の売上金額(amount)について、25%刻みでパーセンタイル値を求めよ。" 926 | ] 927 | }, 928 | { 929 | "cell_type": "code", 930 | "metadata": { 931 | "trusted": false, 932 | "id": "JBG97d1yhhyk", 933 | "colab_type": "code", 934 | "colab": {} 935 | }, 936 | "source": [ 937 | "" 938 | ], 939 | "execution_count": null, 940 | "outputs": [] 941 | }, 942 | { 943 | "cell_type": "markdown", 944 | "metadata": { 945 | "id": "mYPLc_n4hhyl", 946 | "colab_type": "text" 947 | }, 948 | "source": [ 949 | "---\n", 950 | "> P-033: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の平均を計算し、330以上のものを抽出せよ。" 951 | ] 952 | }, 953 | { 954 | "cell_type": "code", 955 | "metadata": { 956 | "trusted": false, 957 | "id": "mJsrgWhNhhym", 958 | "colab_type": "code", 959 | "colab": {} 960 | }, 961 | "source": [ 962 | "" 963 | ], 964 | "execution_count": null, 965 | "outputs": [] 966 | }, 967 | { 968 | "cell_type": "markdown", 969 | "metadata": { 970 | "id": "Wraz5peFhhyo", 971 | "colab_type": "text" 972 | }, 973 | "source": [ 974 | "---\n", 975 | "> P-034: レシート明細データフレーム(df_receipt)に対し、顧客ID(customer_id)ごとに売上金額(amount)を合計して全顧客の平均を求めよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。\n" 976 | ] 977 | }, 978 | { 979 | "cell_type": "code", 980 | "metadata": { 981 | "trusted": false, 982 | "id": "hYgDnVGjhhyo", 983 | "colab_type": "code", 984 | "colab": {} 985 | }, 986 | "source": [ 987 | "" 988 | ], 989 | "execution_count": null, 990 | "outputs": [] 991 | }, 992 | { 993 | "cell_type": "markdown", 994 | "metadata": { 995 | "id": "h9E9b_yUhhyq", 996 | "colab_type": "text" 997 | }, 998 | "source": [ 999 | "---\n", 1000 | "> P-035: レシート明細データフレーム(df_receipt)に対し、顧客ID(customer_id)ごとに売上金額(amount)を合計して全顧客の平均を求め、平均以上に買い物をしている顧客を抽出せよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。なお、データは10件だけ表示させれば良い。" 1001 | ] 1002 | }, 1003 | { 1004 | "cell_type": "code", 1005 | "metadata": { 1006 | "trusted": false, 1007 | "id": "7lYKkmsohhyq", 1008 | "colab_type": "code", 1009 | "colab": {} 1010 | }, 1011 | "source": [ 1012 | "" 1013 | ], 1014 | "execution_count": null, 1015 | "outputs": [] 1016 | }, 1017 | { 1018 | "cell_type": "markdown", 1019 | "metadata": { 1020 | "id": "e4wFXsuLhhys", 1021 | "colab_type": "text" 1022 | }, 1023 | "source": [ 1024 | "---\n", 1025 | "> P-036: レシート明細データフレーム(df_receipt)と店舗データフレーム(df_store)を内部結合し、レシート明細データフレームの全項目と店舗データフレームの店舗名(store_name)を10件表示させよ。" 1026 | ] 1027 | }, 1028 | { 1029 | "cell_type": "code", 1030 | "metadata": { 1031 | "trusted": false, 1032 | "id": "n7p7o5sDhhys", 1033 | "colab_type": "code", 1034 | "colab": {} 1035 | }, 1036 | "source": [ 1037 | "" 1038 | ], 1039 | "execution_count": null, 1040 | "outputs": [] 1041 | }, 1042 | { 1043 | "cell_type": "markdown", 1044 | "metadata": { 1045 | "id": "8TdeNEn_hhyu", 1046 | "colab_type": "text" 1047 | }, 1048 | "source": [ 1049 | "---\n", 1050 | "> P-037: 商品データフレーム(df_product)とカテゴリデータフレーム(df_category)を内部結合し、商品データフレームの全項目とカテゴリデータフレームの小区分名(category_small_name)を10件表示させよ。" 1051 | ] 1052 | }, 1053 | { 1054 | "cell_type": "code", 1055 | "metadata": { 1056 | "trusted": false, 1057 | "id": "J20VBcmxhhyu", 1058 | "colab_type": "code", 1059 | "colab": {} 1060 | }, 1061 | "source": [ 1062 | "" 1063 | ], 1064 | "execution_count": null, 1065 | "outputs": [] 1066 | }, 1067 | { 1068 | "cell_type": "markdown", 1069 | "metadata": { 1070 | "id": "iNO7ESvWhhyw", 1071 | "colab_type": "text" 1072 | }, 1073 | "source": [ 1074 | "---\n", 1075 | "> P-038: 顧客データフレーム(df_customer)とレシート明細データフレーム(df_receipt)から、各顧客ごとの売上金額合計を求めよ。ただし、買い物の実績がない顧客については売上金額を0として表示させること。また、顧客は性別コード(gender_cd)が女性(1)であるものを対象とし、非会員(顧客IDが'Z'から始まるもの)は除外すること。なお、結果は10件だけ表示させれば良い。" 1076 | ] 1077 | }, 1078 | { 1079 | "cell_type": "code", 1080 | "metadata": { 1081 | "trusted": false, 1082 | "id": "hmc6LUaEhhyw", 1083 | "colab_type": "code", 1084 | "colab": {} 1085 | }, 1086 | "source": [ 1087 | "" 1088 | ], 1089 | "execution_count": null, 1090 | "outputs": [] 1091 | }, 1092 | { 1093 | "cell_type": "markdown", 1094 | "metadata": { 1095 | "id": "O8FU3doGhhyy", 1096 | "colab_type": "text" 1097 | }, 1098 | "source": [ 1099 | "---\n", 1100 | "> P-039: レシート明細データフレーム(df_receipt)から売上日数の多い顧客の上位20件と、売上金額合計の多い顧客の上位20件を抽出し、完全外部結合せよ。ただし、非会員(顧客IDが'Z'から始まるもの)は除外すること。" 1101 | ] 1102 | }, 1103 | { 1104 | "cell_type": "code", 1105 | "metadata": { 1106 | "trusted": false, 1107 | "id": "Av7SadgPhhyy", 1108 | "colab_type": "code", 1109 | "colab": {} 1110 | }, 1111 | "source": [ 1112 | "" 1113 | ], 1114 | "execution_count": null, 1115 | "outputs": [] 1116 | }, 1117 | { 1118 | "cell_type": "markdown", 1119 | "metadata": { 1120 | "id": "pcu3GCH9hhyz", 1121 | "colab_type": "text" 1122 | }, 1123 | "source": [ 1124 | "---\n", 1125 | "> P-040: 全ての店舗と全ての商品を組み合わせると何件のデータとなるか調査したい。店舗(df_store)と商品(df_product)を直積した件数を計算せよ。" 1126 | ] 1127 | }, 1128 | { 1129 | "cell_type": "code", 1130 | "metadata": { 1131 | "trusted": false, 1132 | "id": "d_jUSaS3hhyz", 1133 | "colab_type": "code", 1134 | "colab": {} 1135 | }, 1136 | "source": [ 1137 | "" 1138 | ], 1139 | "execution_count": null, 1140 | "outputs": [] 1141 | }, 1142 | { 1143 | "cell_type": "markdown", 1144 | "metadata": { 1145 | "id": "qbPipL0Hhhy1", 1146 | "colab_type": "text" 1147 | }, 1148 | "source": [ 1149 | "---\n", 1150 | "> P-041: レシート明細データフレーム(df_receipt)の売上金額(amount)を日付(sales_ymd)ごとに集計し、前日からの売上金額増減を計算せよ。なお、計算結果は10件表示すればよい。" 1151 | ] 1152 | }, 1153 | { 1154 | "cell_type": "code", 1155 | "metadata": { 1156 | "trusted": false, 1157 | "id": "SvVN53Kehhy2", 1158 | "colab_type": "code", 1159 | "colab": {} 1160 | }, 1161 | "source": [ 1162 | "" 1163 | ], 1164 | "execution_count": null, 1165 | "outputs": [] 1166 | }, 1167 | { 1168 | "cell_type": "markdown", 1169 | "metadata": { 1170 | "id": "PNUVk5Dmhhy3", 1171 | "colab_type": "text" 1172 | }, 1173 | "source": [ 1174 | "---\n", 1175 | "> P-042: レシート明細データフレーム(df_receipt)の売上金額(amount)を日付(sales_ymd)ごとに集計し、各日付のデータに対し、1日前、2日前、3日前のデータを結合せよ。結果は10件表示すればよい。" 1176 | ] 1177 | }, 1178 | { 1179 | "cell_type": "code", 1180 | "metadata": { 1181 | "trusted": false, 1182 | "id": "LE_foOoUhhy4", 1183 | "colab_type": "code", 1184 | "colab": {} 1185 | }, 1186 | "source": [ 1187 | "" 1188 | ], 1189 | "execution_count": null, 1190 | "outputs": [] 1191 | }, 1192 | { 1193 | "cell_type": "markdown", 1194 | "metadata": { 1195 | "id": "uEnwKvWbhhy5", 1196 | "colab_type": "text" 1197 | }, 1198 | "source": [ 1199 | "---\n", 1200 | "> P-043: レシート明細データフレーム(df_receipt)と顧客データフレーム(df_customer)を結合し、性別(gender)と年代(ageから計算)ごとに売上金額(amount)を合計した売上サマリデータフレーム(df_sales_summary)を作成せよ。性別は0が男性、1が女性、9が不明を表すものとする。\n", 1201 | ">\n", 1202 | "> ただし、項目構成は年代、女性の売上金額、男性の売上金額、性別不明の売上金額の4項目とすること(縦に年代、横に性別のクロス集計)。また、年代は10歳ごとの階級とすること。" 1203 | ] 1204 | }, 1205 | { 1206 | "cell_type": "code", 1207 | "metadata": { 1208 | "trusted": false, 1209 | "id": "a2wSKTmIhhy6", 1210 | "colab_type": "code", 1211 | "colab": {} 1212 | }, 1213 | "source": [ 1214 | "" 1215 | ], 1216 | "execution_count": null, 1217 | "outputs": [] 1218 | }, 1219 | { 1220 | "cell_type": "markdown", 1221 | "metadata": { 1222 | "id": "PIC95tKMhhy8", 1223 | "colab_type": "text" 1224 | }, 1225 | "source": [ 1226 | "---\n", 1227 | "> P-044: 前設問で作成した売上サマリデータフレーム(df_sales_summary)は性別の売上を横持ちさせたものであった。このデータフレームから性別を縦持ちさせ、年代、性別コード、売上金額の3項目に変換せよ。ただし、性別コードは男性を'00'、女性を'01'、不明を'99'とする。" 1228 | ] 1229 | }, 1230 | { 1231 | "cell_type": "code", 1232 | "metadata": { 1233 | "trusted": false, 1234 | "id": "TMKQe8F5hhy8", 1235 | "colab_type": "code", 1236 | "colab": {} 1237 | }, 1238 | "source": [ 1239 | "" 1240 | ], 1241 | "execution_count": null, 1242 | "outputs": [] 1243 | }, 1244 | { 1245 | "cell_type": "markdown", 1246 | "metadata": { 1247 | "id": "L29i1r0Nhhy9", 1248 | "colab_type": "text" 1249 | }, 1250 | "source": [ 1251 | "---\n", 1252 | "> P-045: 顧客データフレーム(df_customer)の生年月日(birth_day)は日付型(Date)でデータを保有している。これをYYYYMMDD形式の文字列に変換し、顧客ID(customer_id)とともに抽出せよ。データは10件を抽出すれば良い。" 1253 | ] 1254 | }, 1255 | { 1256 | "cell_type": "code", 1257 | "metadata": { 1258 | "trusted": false, 1259 | "id": "t2t7rJCWhhy9", 1260 | "colab_type": "code", 1261 | "colab": {} 1262 | }, 1263 | "source": [ 1264 | "" 1265 | ], 1266 | "execution_count": null, 1267 | "outputs": [] 1268 | }, 1269 | { 1270 | "cell_type": "markdown", 1271 | "metadata": { 1272 | "id": "umDmd8kohhzA", 1273 | "colab_type": "text" 1274 | }, 1275 | "source": [ 1276 | "---\n", 1277 | "> P-046: 顧客データフレーム(df_customer)の申し込み日(application_date)はYYYYMMD形式の文字列型でデータを保有している。これを日付型(dateやdatetime)に変換し、顧客ID(customer_id)とともに抽出せよ。データは10件を抽出すれば良い。" 1278 | ] 1279 | }, 1280 | { 1281 | "cell_type": "code", 1282 | "metadata": { 1283 | "trusted": false, 1284 | "id": "pVAxV-TWhhzA", 1285 | "colab_type": "code", 1286 | "colab": {} 1287 | }, 1288 | "source": [ 1289 | "" 1290 | ], 1291 | "execution_count": null, 1292 | "outputs": [] 1293 | }, 1294 | { 1295 | "cell_type": "markdown", 1296 | "metadata": { 1297 | "id": "lbc058iGhhzC", 1298 | "colab_type": "text" 1299 | }, 1300 | "source": [ 1301 | "---\n", 1302 | "> P-047: レシート明細データフレーム(df_receipt)の売上日(sales_ymd)はYYYYMMDD形式の数値型でデータを保有している。これを日付型(dateやdatetime)に変換し、レシート番号(receipt_no)、レシートサブ番号(receipt_sub_no)とともに抽出せよ。データは10件を抽出すれば良い。" 1303 | ] 1304 | }, 1305 | { 1306 | "cell_type": "code", 1307 | "metadata": { 1308 | "trusted": false, 1309 | "id": "-StgxCNyhhzC", 1310 | "colab_type": "code", 1311 | "colab": {} 1312 | }, 1313 | "source": [ 1314 | "" 1315 | ], 1316 | "execution_count": null, 1317 | "outputs": [] 1318 | }, 1319 | { 1320 | "cell_type": "markdown", 1321 | "metadata": { 1322 | "id": "ohZn7QSihhzD", 1323 | "colab_type": "text" 1324 | }, 1325 | "source": [ 1326 | "---\n", 1327 | "> P-048: レシート明細データフレーム(df_receipt)の売上エポック秒(sales_epoch)は数値型のUNIX秒でデータを保有している。これを日付型(dateやdatetime)に変換し、レシート番号(receipt_no)、レシートサブ番号(receipt_sub_no)とともに抽出せよ。データは10件を抽出すれば良い。" 1328 | ] 1329 | }, 1330 | { 1331 | "cell_type": "code", 1332 | "metadata": { 1333 | "trusted": false, 1334 | "id": "Y-aq0twKhhzD", 1335 | "colab_type": "code", 1336 | "colab": {} 1337 | }, 1338 | "source": [ 1339 | "" 1340 | ], 1341 | "execution_count": null, 1342 | "outputs": [] 1343 | }, 1344 | { 1345 | "cell_type": "markdown", 1346 | "metadata": { 1347 | "id": "GfUYeJaFhhzE", 1348 | "colab_type": "text" 1349 | }, 1350 | "source": [ 1351 | "---\n", 1352 | "> P-049: レシート明細データフレーム(df_receipt)の売上エポック秒(sales_epoch)を日付型(timestamp型)に変換し、\"年\"だけ取り出してレシート番号(receipt_no)、レシートサブ番号(receipt_sub_no)とともに抽出せよ。データは10件を抽出すれば良い。" 1353 | ] 1354 | }, 1355 | { 1356 | "cell_type": "code", 1357 | "metadata": { 1358 | "trusted": false, 1359 | "id": "C72RHYAThhzE", 1360 | "colab_type": "code", 1361 | "colab": {} 1362 | }, 1363 | "source": [ 1364 | "" 1365 | ], 1366 | "execution_count": null, 1367 | "outputs": [] 1368 | }, 1369 | { 1370 | "cell_type": "markdown", 1371 | "metadata": { 1372 | "id": "wiogoJ-8hhzF", 1373 | "colab_type": "text" 1374 | }, 1375 | "source": [ 1376 | "---\n", 1377 | "> P-050: レシート明細データフレーム(df_receipt)の売上エポック秒(sales_epoch)を日付型(timestamp型)に変換し、\"月\"だけ取り出してレシート番号(receipt_no)、レシートサブ番号(receipt_sub_no)とともに抽出せよ。なお、\"月\"は0埋め2桁で取り出すこと。データは10件を抽出すれば良い。" 1378 | ] 1379 | }, 1380 | { 1381 | "cell_type": "code", 1382 | "metadata": { 1383 | "trusted": false, 1384 | "id": "Dx9OH1LNhhzG", 1385 | "colab_type": "code", 1386 | "colab": {} 1387 | }, 1388 | "source": [ 1389 | "" 1390 | ], 1391 | "execution_count": null, 1392 | "outputs": [] 1393 | }, 1394 | { 1395 | "cell_type": "markdown", 1396 | "metadata": { 1397 | "id": "8JT6_Cu-hhzH", 1398 | "colab_type": "text" 1399 | }, 1400 | "source": [ 1401 | "---\n", 1402 | "> P-051: レシート明細データフレーム(df_receipt)の売上エポック秒(sales_epoch)を日付型(timestamp型)に変換し、\"日\"だけ取り出してレシート番号(receipt_no)、レシートサブ番号(receipt_sub_no)とともに抽出せよ。なお、\"日\"は0埋め2桁で取り出すこと。データは10件を抽出すれば良い。" 1403 | ] 1404 | }, 1405 | { 1406 | "cell_type": "code", 1407 | "metadata": { 1408 | "trusted": false, 1409 | "id": "6A7WIWLhhhzH", 1410 | "colab_type": "code", 1411 | "colab": {} 1412 | }, 1413 | "source": [ 1414 | "" 1415 | ], 1416 | "execution_count": null, 1417 | "outputs": [] 1418 | }, 1419 | { 1420 | "cell_type": "markdown", 1421 | "metadata": { 1422 | "id": "OGXY-uRrhhzI", 1423 | "colab_type": "text" 1424 | }, 1425 | "source": [ 1426 | "---\n", 1427 | "> P-052: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計の上、売上金額合計に対して2000円以下を0、2000円超を1に2値化し、顧客ID、売上金額合計とともに10件表示せよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。" 1428 | ] 1429 | }, 1430 | { 1431 | "cell_type": "code", 1432 | "metadata": { 1433 | "trusted": false, 1434 | "id": "rQvmUUolhhzJ", 1435 | "colab_type": "code", 1436 | "colab": {} 1437 | }, 1438 | "source": [ 1439 | "" 1440 | ], 1441 | "execution_count": null, 1442 | "outputs": [] 1443 | }, 1444 | { 1445 | "cell_type": "markdown", 1446 | "metadata": { 1447 | "id": "ZtGCQePGhhzK", 1448 | "colab_type": "text" 1449 | }, 1450 | "source": [ 1451 | "---\n", 1452 | "> P-053: 顧客データフレーム(df_customer)の郵便番号(postal_cd)に対し、東京(先頭3桁が100〜209のもの)を1、それ以外のものを0に2値化せよ。さらにレシート明細データフレーム(df_receipt)と結合し、全期間において買い物実績のある顧客数を、作成した2値ごとにカウントせよ。" 1453 | ] 1454 | }, 1455 | { 1456 | "cell_type": "code", 1457 | "metadata": { 1458 | "trusted": false, 1459 | "id": "8NZw1hv2hhzK", 1460 | "colab_type": "code", 1461 | "colab": {} 1462 | }, 1463 | "source": [ 1464 | "" 1465 | ], 1466 | "execution_count": null, 1467 | "outputs": [] 1468 | }, 1469 | { 1470 | "cell_type": "markdown", 1471 | "metadata": { 1472 | "id": "HHPGETlfhhzL", 1473 | "colab_type": "text" 1474 | }, 1475 | "source": [ 1476 | "---\n", 1477 | "> P-054: 顧客データデータフレーム(df_customer)の住所(address)は、埼玉県、千葉県、東京都、神奈川県のいずれかとなっている。都道府県毎にコード値を作成し、顧客ID、住所とともに抽出せよ。値は埼玉県を11、千葉県を12、東京都を13、神奈川県を14とすること。結果は10件表示させれば良い。" 1478 | ] 1479 | }, 1480 | { 1481 | "cell_type": "code", 1482 | "metadata": { 1483 | "trusted": false, 1484 | "id": "r4hjSRMohhzL", 1485 | "colab_type": "code", 1486 | "colab": {} 1487 | }, 1488 | "source": [ 1489 | "" 1490 | ], 1491 | "execution_count": null, 1492 | "outputs": [] 1493 | }, 1494 | { 1495 | "cell_type": "markdown", 1496 | "metadata": { 1497 | "id": "0Gr2RKrrhhzM", 1498 | "colab_type": "text" 1499 | }, 1500 | "source": [ 1501 | "---\n", 1502 | "> P-055: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、その合計金額の四分位点を求めよ。その上で、顧客ごとの売上金額合計に対して以下の基準でカテゴリ値を作成し、顧客ID、売上金額と合計ともに表示せよ。カテゴリ値は上から順に1〜4とする。結果は10件表示させれば良い。\n", 1503 | ">\n", 1504 | "> - 最小値以上第一四分位未満\n", 1505 | "> - 第一四分位以上第二四分位未満\n", 1506 | "> - 第二四分位以上第三四分位未満\n", 1507 | "> - 第三四分位以上" 1508 | ] 1509 | }, 1510 | { 1511 | "cell_type": "code", 1512 | "metadata": { 1513 | "trusted": false, 1514 | "id": "g-o-bHSzhhzM", 1515 | "colab_type": "code", 1516 | "colab": {} 1517 | }, 1518 | "source": [ 1519 | "" 1520 | ], 1521 | "execution_count": null, 1522 | "outputs": [] 1523 | }, 1524 | { 1525 | "cell_type": "markdown", 1526 | "metadata": { 1527 | "id": "X3_-P1ahhhzN", 1528 | "colab_type": "text" 1529 | }, 1530 | "source": [ 1531 | "---\n", 1532 | "> P-056: 顧客データフレーム(df_customer)の年齢(age)をもとに10歳刻みで年代を算出し、顧客ID(customer_id)、生年月日(birth_day)とともに抽出せよ。ただし、60歳以上は全て60歳代とすること。年代を表すカテゴリ名は任意とする。先頭10件を表示させればよい。" 1533 | ] 1534 | }, 1535 | { 1536 | "cell_type": "code", 1537 | "metadata": { 1538 | "trusted": false, 1539 | "id": "p4xXkwzhhhzN", 1540 | "colab_type": "code", 1541 | "colab": {} 1542 | }, 1543 | "source": [ 1544 | "" 1545 | ], 1546 | "execution_count": null, 1547 | "outputs": [] 1548 | }, 1549 | { 1550 | "cell_type": "markdown", 1551 | "metadata": { 1552 | "id": "b_I_dEsdhhzP", 1553 | "colab_type": "text" 1554 | }, 1555 | "source": [ 1556 | "---\n", 1557 | "> P-057: 前問題の抽出結果と性別(gender)を組み合わせ、新たに性別×年代の組み合わせを表すカテゴリデータを作成せよ。組み合わせを表すカテゴリの値は任意とする。先頭10件を表示させればよい。" 1558 | ] 1559 | }, 1560 | { 1561 | "cell_type": "code", 1562 | "metadata": { 1563 | "trusted": false, 1564 | "id": "zz-TCEbChhzP", 1565 | "colab_type": "code", 1566 | "colab": {} 1567 | }, 1568 | "source": [ 1569 | "" 1570 | ], 1571 | "execution_count": null, 1572 | "outputs": [] 1573 | }, 1574 | { 1575 | "cell_type": "markdown", 1576 | "metadata": { 1577 | "id": "oJZe2WQ3hhzQ", 1578 | "colab_type": "text" 1579 | }, 1580 | "source": [ 1581 | "---\n", 1582 | "> P-058: 顧客データフレーム(df_customer)の性別コード(gender_cd)をダミー変数化し、顧客ID(customer_id)とともに抽出せよ。結果は10件表示させれば良い。" 1583 | ] 1584 | }, 1585 | { 1586 | "cell_type": "code", 1587 | "metadata": { 1588 | "trusted": false, 1589 | "id": "pm-akNNrhhzQ", 1590 | "colab_type": "code", 1591 | "colab": {} 1592 | }, 1593 | "source": [ 1594 | "" 1595 | ], 1596 | "execution_count": null, 1597 | "outputs": [] 1598 | }, 1599 | { 1600 | "cell_type": "markdown", 1601 | "metadata": { 1602 | "id": "_rIF1D4RhhzR", 1603 | "colab_type": "text" 1604 | }, 1605 | "source": [ 1606 | "---\n", 1607 | "> P-059: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、合計した売上金額を平均0、標準偏差1に標準化して顧客ID、売上金額合計とともに表示せよ。標準化に使用する標準偏差は、不偏標準偏差と標本標準偏差のどちらでも良いものとする。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。結果は10件表示させれば良い。" 1608 | ] 1609 | }, 1610 | { 1611 | "cell_type": "code", 1612 | "metadata": { 1613 | "trusted": false, 1614 | "id": "hgU77tJWhhzR", 1615 | "colab_type": "code", 1616 | "colab": {} 1617 | }, 1618 | "source": [ 1619 | "" 1620 | ], 1621 | "execution_count": null, 1622 | "outputs": [] 1623 | }, 1624 | { 1625 | "cell_type": "markdown", 1626 | "metadata": { 1627 | "id": "--LbbUHGhhzT", 1628 | "colab_type": "text" 1629 | }, 1630 | "source": [ 1631 | "---\n", 1632 | "> P-060: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、合計した売上金額を最小値0、最大値1に正規化して顧客ID、売上金額合計とともに表示せよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。結果は10件表示させれば良い。" 1633 | ] 1634 | }, 1635 | { 1636 | "cell_type": "code", 1637 | "metadata": { 1638 | "trusted": false, 1639 | "id": "RIfNz58jhhzT", 1640 | "colab_type": "code", 1641 | "colab": {} 1642 | }, 1643 | "source": [ 1644 | "" 1645 | ], 1646 | "execution_count": null, 1647 | "outputs": [] 1648 | }, 1649 | { 1650 | "cell_type": "markdown", 1651 | "metadata": { 1652 | "id": "9v_q6BLjhhzU", 1653 | "colab_type": "text" 1654 | }, 1655 | "source": [ 1656 | "---\n", 1657 | "> P-061: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、合計した売上金額を常用対数化(底=10)して顧客ID、売上金額合計とともに表示せよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。結果は10件表示させれば良い。" 1658 | ] 1659 | }, 1660 | { 1661 | "cell_type": "code", 1662 | "metadata": { 1663 | "trusted": false, 1664 | "id": "d5_2HQ-2hhzU", 1665 | "colab_type": "code", 1666 | "colab": {} 1667 | }, 1668 | "source": [ 1669 | "" 1670 | ], 1671 | "execution_count": null, 1672 | "outputs": [] 1673 | }, 1674 | { 1675 | "cell_type": "markdown", 1676 | "metadata": { 1677 | "id": "uYepDUW5hhzV", 1678 | "colab_type": "text" 1679 | }, 1680 | "source": [ 1681 | "---\n", 1682 | "> P-062: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、合計した売上金額を自然対数化(底=e)して顧客ID、売上金額合計とともに表示せよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。結果は10件表示させれば良い。" 1683 | ] 1684 | }, 1685 | { 1686 | "cell_type": "code", 1687 | "metadata": { 1688 | "trusted": false, 1689 | "id": "aqDDlXmEhhzV", 1690 | "colab_type": "code", 1691 | "colab": {} 1692 | }, 1693 | "source": [ 1694 | "" 1695 | ], 1696 | "execution_count": null, 1697 | "outputs": [] 1698 | }, 1699 | { 1700 | "cell_type": "markdown", 1701 | "metadata": { 1702 | "id": "JrQz7vUxhhzW", 1703 | "colab_type": "text" 1704 | }, 1705 | "source": [ 1706 | "---\n", 1707 | "> P-063: 商品データフレーム(df_product)の単価(unit_price)と原価(unit_cost)から、各商品の利益額を算出せよ。結果は10件表示させれば良い。" 1708 | ] 1709 | }, 1710 | { 1711 | "cell_type": "code", 1712 | "metadata": { 1713 | "trusted": false, 1714 | "id": "AEzRXedrhhzX", 1715 | "colab_type": "code", 1716 | "colab": {} 1717 | }, 1718 | "source": [ 1719 | "" 1720 | ], 1721 | "execution_count": null, 1722 | "outputs": [] 1723 | }, 1724 | { 1725 | "cell_type": "markdown", 1726 | "metadata": { 1727 | "id": "dA3_mEIghhzY", 1728 | "colab_type": "text" 1729 | }, 1730 | "source": [ 1731 | "---\n", 1732 | "> P-064: 商品データフレーム(df_product)の単価(unit_price)と原価(unit_cost)から、各商品の利益率の全体平均を算出せよ。\n", 1733 | "ただし、単価と原価にはNULLが存在することに注意せよ。" 1734 | ] 1735 | }, 1736 | { 1737 | "cell_type": "code", 1738 | "metadata": { 1739 | "trusted": false, 1740 | "id": "tVmogEBBhhzY", 1741 | "colab_type": "code", 1742 | "colab": {} 1743 | }, 1744 | "source": [ 1745 | "" 1746 | ], 1747 | "execution_count": null, 1748 | "outputs": [] 1749 | }, 1750 | { 1751 | "cell_type": "markdown", 1752 | "metadata": { 1753 | "id": "jQowqYLWhhzZ", 1754 | "colab_type": "text" 1755 | }, 1756 | "source": [ 1757 | "---\n", 1758 | "> P-065: 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。ただし、1円未満は切り捨てること。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。" 1759 | ] 1760 | }, 1761 | { 1762 | "cell_type": "code", 1763 | "metadata": { 1764 | "trusted": false, 1765 | "id": "fSPVlHxthhzZ", 1766 | "colab_type": "code", 1767 | "colab": {} 1768 | }, 1769 | "source": [ 1770 | "" 1771 | ], 1772 | "execution_count": null, 1773 | "outputs": [] 1774 | }, 1775 | { 1776 | "cell_type": "markdown", 1777 | "metadata": { 1778 | "id": "Tj7mplJihhza", 1779 | "colab_type": "text" 1780 | }, 1781 | "source": [ 1782 | "---\n", 1783 | "> P-066: 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。今回は、1円未満を四捨五入すること(0.5については偶数方向の丸めで良い)。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。" 1784 | ] 1785 | }, 1786 | { 1787 | "cell_type": "code", 1788 | "metadata": { 1789 | "trusted": false, 1790 | "id": "gC81Fp6ehhza", 1791 | "colab_type": "code", 1792 | "colab": {} 1793 | }, 1794 | "source": [ 1795 | "" 1796 | ], 1797 | "execution_count": null, 1798 | "outputs": [] 1799 | }, 1800 | { 1801 | "cell_type": "markdown", 1802 | "metadata": { 1803 | "id": "xxce_R6bhhzb", 1804 | "colab_type": "text" 1805 | }, 1806 | "source": [ 1807 | "---\n", 1808 | "> P-067: 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。今回は、1円未満を切り上げること。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。" 1809 | ] 1810 | }, 1811 | { 1812 | "cell_type": "code", 1813 | "metadata": { 1814 | "trusted": false, 1815 | "id": "3rMUdEF6hhzb", 1816 | "colab_type": "code", 1817 | "colab": {} 1818 | }, 1819 | "source": [ 1820 | "" 1821 | ], 1822 | "execution_count": null, 1823 | "outputs": [] 1824 | }, 1825 | { 1826 | "cell_type": "markdown", 1827 | "metadata": { 1828 | "id": "CnpgvfPThhzd", 1829 | "colab_type": "text" 1830 | }, 1831 | "source": [ 1832 | "---\n", 1833 | "> P-068: 商品データフレーム(df_product)の各商品について、消費税率10%の税込み金額を求めよ。 1円未満の端数は切り捨てとし、結果は10件表示すれば良い。ただし、単価(unit_price)にはNULLが存在することに注意せよ。" 1834 | ] 1835 | }, 1836 | { 1837 | "cell_type": "code", 1838 | "metadata": { 1839 | "trusted": false, 1840 | "id": "pAlTEkKHhhzd", 1841 | "colab_type": "code", 1842 | "colab": {} 1843 | }, 1844 | "source": [ 1845 | "" 1846 | ], 1847 | "execution_count": null, 1848 | "outputs": [] 1849 | }, 1850 | { 1851 | "cell_type": "markdown", 1852 | "metadata": { 1853 | "id": "zEABVDKXhhze", 1854 | "colab_type": "text" 1855 | }, 1856 | "source": [ 1857 | "---\n", 1858 | "> P-069: レシート明細データフレーム(df_receipt)と商品データフレーム(df_product)を結合し、顧客毎に全商品の売上金額合計と、カテゴリ大区分(category_major_cd)が\"07\"(瓶詰缶詰)の売上金額合計を計算の上、両者の比率を求めよ。抽出対象はカテゴリ大区分\"07\"(瓶詰缶詰)の購入実績がある顧客のみとし、結果は10件表示させればよい。" 1859 | ] 1860 | }, 1861 | { 1862 | "cell_type": "code", 1863 | "metadata": { 1864 | "trusted": false, 1865 | "id": "FL33wGUMhhze", 1866 | "colab_type": "code", 1867 | "colab": {} 1868 | }, 1869 | "source": [ 1870 | "" 1871 | ], 1872 | "execution_count": null, 1873 | "outputs": [] 1874 | }, 1875 | { 1876 | "cell_type": "markdown", 1877 | "metadata": { 1878 | "id": "ZEAiLMTShhzf", 1879 | "colab_type": "text" 1880 | }, 1881 | "source": [ 1882 | "---\n", 1883 | "> P-070: レシート明細データフレーム(df_receipt)の売上日(sales_ymd)に対し、顧客データフレーム(df_customer)の会員申込日(application_date)からの経過日数を計算し、顧客ID(customer_id)、売上日、会員申込日とともに表示せよ。結果は10件表示させれば良い(なお、sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。" 1884 | ] 1885 | }, 1886 | { 1887 | "cell_type": "code", 1888 | "metadata": { 1889 | "trusted": false, 1890 | "id": "kvzQzXuShhzf", 1891 | "colab_type": "code", 1892 | "colab": {} 1893 | }, 1894 | "source": [ 1895 | "" 1896 | ], 1897 | "execution_count": null, 1898 | "outputs": [] 1899 | }, 1900 | { 1901 | "cell_type": "markdown", 1902 | "metadata": { 1903 | "id": "HsMXQZXshhzg", 1904 | "colab_type": "text" 1905 | }, 1906 | "source": [ 1907 | "---\n", 1908 | "> P-071: レシート明細データフレーム(df_receipt)の売上日(sales_ymd)に対し、顧客データフレーム(df_customer)の会員申込日(application_date)からの経過月数を計算し、顧客ID(customer_id)、売上日、会員申込日とともに表示せよ。結果は10件表示させれば良い(なお、sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。1ヶ月未満は切り捨てること。" 1909 | ] 1910 | }, 1911 | { 1912 | "cell_type": "code", 1913 | "metadata": { 1914 | "trusted": false, 1915 | "id": "go_c1NKxhhzh", 1916 | "colab_type": "code", 1917 | "colab": {} 1918 | }, 1919 | "source": [ 1920 | "" 1921 | ], 1922 | "execution_count": null, 1923 | "outputs": [] 1924 | }, 1925 | { 1926 | "cell_type": "markdown", 1927 | "metadata": { 1928 | "id": "uRcwkWA6hhzi", 1929 | "colab_type": "text" 1930 | }, 1931 | "source": [ 1932 | "---\n", 1933 | "> P-072: レシート明細データフレーム(df_receipt)の売上日(sales_ymd)に対し、顧客データフレーム(df_customer)の会員申込日(application_date)からの経過年数を計算し、顧客ID(customer_id)、売上日、会員申込日とともに表示せよ。結果は10件表示させれば良い。(なお、sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。1年未満は切り捨てること。" 1934 | ] 1935 | }, 1936 | { 1937 | "cell_type": "code", 1938 | "metadata": { 1939 | "trusted": false, 1940 | "id": "Z5-u-KYhhhzi", 1941 | "colab_type": "code", 1942 | "colab": {} 1943 | }, 1944 | "source": [ 1945 | "" 1946 | ], 1947 | "execution_count": null, 1948 | "outputs": [] 1949 | }, 1950 | { 1951 | "cell_type": "markdown", 1952 | "metadata": { 1953 | "id": "-PsOPZZBhhzj", 1954 | "colab_type": "text" 1955 | }, 1956 | "source": [ 1957 | "---\n", 1958 | "> P-073: レシート明細データフレーム(df_receipt)の売上日(sales_ymd)に対し、顧客データフレーム(df_customer)の会員申込日(application_date)からのエポック秒による経過時間を計算し、顧客ID(customer_id)、売上日、会員申込日とともに表示せよ。結果は10件表示させれば良い(なお、sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。なお、時間情報は保有していないため各日付は0時0分0秒を表すものとする。" 1959 | ] 1960 | }, 1961 | { 1962 | "cell_type": "code", 1963 | "metadata": { 1964 | "trusted": false, 1965 | "id": "vUrvuOBfhhzj", 1966 | "colab_type": "code", 1967 | "colab": {} 1968 | }, 1969 | "source": [ 1970 | "" 1971 | ], 1972 | "execution_count": null, 1973 | "outputs": [] 1974 | }, 1975 | { 1976 | "cell_type": "markdown", 1977 | "metadata": { 1978 | "id": "u_8UNALZhhzk", 1979 | "colab_type": "text" 1980 | }, 1981 | "source": [ 1982 | "---\n", 1983 | "> P-074: レシート明細データフレーム(df_receipt)の売上日(sales_ymd)に対し、当該週の月曜日からの経過日数を計算し、売上日、当該週の月曜日付とともに表示せよ。結果は10件表示させれば良い(なお、sales_ymdは数値でデータを保持している点に注意)。" 1984 | ] 1985 | }, 1986 | { 1987 | "cell_type": "code", 1988 | "metadata": { 1989 | "trusted": false, 1990 | "id": "mCtL5g4mhhzk", 1991 | "colab_type": "code", 1992 | "colab": {} 1993 | }, 1994 | "source": [ 1995 | "" 1996 | ], 1997 | "execution_count": null, 1998 | "outputs": [] 1999 | }, 2000 | { 2001 | "cell_type": "markdown", 2002 | "metadata": { 2003 | "id": "2Jxo_7quhhzl", 2004 | "colab_type": "text" 2005 | }, 2006 | "source": [ 2007 | "---\n", 2008 | "> P-075: 顧客データフレーム(df_customer)からランダムに1%のデータを抽出し、先頭から10件データを抽出せよ。" 2009 | ] 2010 | }, 2011 | { 2012 | "cell_type": "code", 2013 | "metadata": { 2014 | "trusted": false, 2015 | "id": "IlLf0t38hhzl", 2016 | "colab_type": "code", 2017 | "colab": {} 2018 | }, 2019 | "source": [ 2020 | "" 2021 | ], 2022 | "execution_count": null, 2023 | "outputs": [] 2024 | }, 2025 | { 2026 | "cell_type": "markdown", 2027 | "metadata": { 2028 | "id": "aln1Xt5ghhzm", 2029 | "colab_type": "text" 2030 | }, 2031 | "source": [ 2032 | "---\n", 2033 | "> P-076: 顧客データフレーム(df_customer)から性別(gender_cd)の割合に基づきランダムに10%のデータを層化抽出データし、性別ごとに件数を集計せよ。" 2034 | ] 2035 | }, 2036 | { 2037 | "cell_type": "code", 2038 | "metadata": { 2039 | "trusted": false, 2040 | "id": "RbrjkGllhhzm", 2041 | "colab_type": "code", 2042 | "colab": {} 2043 | }, 2044 | "source": [ 2045 | "" 2046 | ], 2047 | "execution_count": null, 2048 | "outputs": [] 2049 | }, 2050 | { 2051 | "cell_type": "markdown", 2052 | "metadata": { 2053 | "id": "VPRFv68Jhhzn", 2054 | "colab_type": "text" 2055 | }, 2056 | "source": [ 2057 | "---\n", 2058 | "> P-077: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客単位に合計し、合計した売上金額の外れ値を抽出せよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。なお、ここでは外れ値を平均から3σ以上離れたものとする。結果は10件表示させれば良い。" 2059 | ] 2060 | }, 2061 | { 2062 | "cell_type": "code", 2063 | "metadata": { 2064 | "trusted": false, 2065 | "id": "7_EgePw6hhzn", 2066 | "colab_type": "code", 2067 | "colab": {} 2068 | }, 2069 | "source": [ 2070 | "" 2071 | ], 2072 | "execution_count": null, 2073 | "outputs": [] 2074 | }, 2075 | { 2076 | "cell_type": "markdown", 2077 | "metadata": { 2078 | "id": "BatcRBrehhzp", 2079 | "colab_type": "text" 2080 | }, 2081 | "source": [ 2082 | "---\n", 2083 | "> P-078: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客単位に合計し、合計した売上金額の外れ値を抽出せよ。ただし、顧客IDが\"Z\"から始まるのものは非会員を表すため、除外して計算すること。なお、ここでは外れ値を第一四分位と第三四分位の差であるIQRを用いて、「第一四分位数-1.5×IQR」よりも下回るもの、または「第三四分位数+1.5×IQR」を超えるものとする。結果は10件表示させれば良い。" 2084 | ] 2085 | }, 2086 | { 2087 | "cell_type": "code", 2088 | "metadata": { 2089 | "trusted": false, 2090 | "id": "4RvDfhvChhzp", 2091 | "colab_type": "code", 2092 | "colab": {} 2093 | }, 2094 | "source": [ 2095 | "" 2096 | ], 2097 | "execution_count": null, 2098 | "outputs": [] 2099 | }, 2100 | { 2101 | "cell_type": "markdown", 2102 | "metadata": { 2103 | "id": "boe923CMhhzq", 2104 | "colab_type": "text" 2105 | }, 2106 | "source": [ 2107 | "---\n", 2108 | "> P-079: 商品データフレーム(df_product)の各項目に対し、欠損数を確認せよ。" 2109 | ] 2110 | }, 2111 | { 2112 | "cell_type": "code", 2113 | "metadata": { 2114 | "trusted": false, 2115 | "id": "bxl__vC5hhzq", 2116 | "colab_type": "code", 2117 | "colab": {} 2118 | }, 2119 | "source": [ 2120 | "" 2121 | ], 2122 | "execution_count": null, 2123 | "outputs": [] 2124 | }, 2125 | { 2126 | "cell_type": "markdown", 2127 | "metadata": { 2128 | "id": "afprSqIvhhzs", 2129 | "colab_type": "text" 2130 | }, 2131 | "source": [ 2132 | "---\n", 2133 | "> P-080: 商品データフレーム(df_product)のいずれかの項目に欠損が発生しているレコードを全て削除した新たなdf_product_1を作成せよ。なお、削除前後の件数を表示させ、前設問で確認した件数だけ減少していることも確認すること。" 2134 | ] 2135 | }, 2136 | { 2137 | "cell_type": "code", 2138 | "metadata": { 2139 | "trusted": false, 2140 | "id": "q3_9sLdHhhzt", 2141 | "colab_type": "code", 2142 | "colab": {} 2143 | }, 2144 | "source": [ 2145 | "" 2146 | ], 2147 | "execution_count": null, 2148 | "outputs": [] 2149 | }, 2150 | { 2151 | "cell_type": "markdown", 2152 | "metadata": { 2153 | "id": "GtiO20ZKhhzu", 2154 | "colab_type": "text" 2155 | }, 2156 | "source": [ 2157 | "---\n", 2158 | "> P-081: 単価(unit_price)と原価(unit_cost)の欠損値について、それぞれの平均値で補完した新たなdf_product_2を作成せよ。なお、平均値について1円未満は四捨五入とし、0.5については偶数寄せでかまわない。補完実施後、各項目について欠損が生じていないことも確認すること。" 2159 | ] 2160 | }, 2161 | { 2162 | "cell_type": "code", 2163 | "metadata": { 2164 | "trusted": false, 2165 | "id": "puFf-7Ewhhzu", 2166 | "colab_type": "code", 2167 | "colab": {} 2168 | }, 2169 | "source": [ 2170 | "" 2171 | ], 2172 | "execution_count": null, 2173 | "outputs": [] 2174 | }, 2175 | { 2176 | "cell_type": "markdown", 2177 | "metadata": { 2178 | "id": "i7x6WAJ2hhzv", 2179 | "colab_type": "text" 2180 | }, 2181 | "source": [ 2182 | "---\n", 2183 | "> P-082: 単価(unit_price)と原価(unit_cost)の欠損値について、それぞれの中央値で補完した新たなdf_product_3を作成せよ。なお、中央値について1円未満は四捨五入とし、0.5については偶数寄せでかまわない。補完実施後、各項目について欠損が生じていないことも確認すること。" 2184 | ] 2185 | }, 2186 | { 2187 | "cell_type": "code", 2188 | "metadata": { 2189 | "trusted": false, 2190 | "id": "Meng_cTIhhzv", 2191 | "colab_type": "code", 2192 | "colab": {} 2193 | }, 2194 | "source": [ 2195 | "" 2196 | ], 2197 | "execution_count": null, 2198 | "outputs": [] 2199 | }, 2200 | { 2201 | "cell_type": "markdown", 2202 | "metadata": { 2203 | "id": "kXCIpqm4hhzw", 2204 | "colab_type": "text" 2205 | }, 2206 | "source": [ 2207 | "---\n", 2208 | "> P-083: 単価(unit_price)と原価(unit_cost)の欠損値について、各商品の小区分(category_small_cd)ごとに算出した中央値で補完した新たなdf_product_4を作成せよ。なお、中央値について1円未満は四捨五入とし、0.5については偶数寄せでかまわない。補完実施後、各項目について欠損が生じていないことも確認すること。" 2209 | ] 2210 | }, 2211 | { 2212 | "cell_type": "code", 2213 | "metadata": { 2214 | "trusted": false, 2215 | "id": "Qeq1bChyhhzw", 2216 | "colab_type": "code", 2217 | "colab": {} 2218 | }, 2219 | "source": [ 2220 | "" 2221 | ], 2222 | "execution_count": null, 2223 | "outputs": [] 2224 | }, 2225 | { 2226 | "cell_type": "markdown", 2227 | "metadata": { 2228 | "id": "kKqZ8U_ihhzx", 2229 | "colab_type": "text" 2230 | }, 2231 | "source": [ 2232 | "---\n", 2233 | "> P-084: 顧客データフレーム(df_customer)の全顧客に対し、全期間の売上金額に占める2019年売上金額の割合を計算せよ。ただし、販売実績のない場合は0として扱うこと。そして計算した割合が0超のものを抽出せよ。 結果は10件表示させれば良い。また、作成したデータにNAやNANが存在しないことを確認せよ。" 2234 | ] 2235 | }, 2236 | { 2237 | "cell_type": "code", 2238 | "metadata": { 2239 | "trusted": false, 2240 | "id": "Rtq3Y8Gxhhzx", 2241 | "colab_type": "code", 2242 | "colab": {} 2243 | }, 2244 | "source": [ 2245 | "" 2246 | ], 2247 | "execution_count": null, 2248 | "outputs": [] 2249 | }, 2250 | { 2251 | "cell_type": "markdown", 2252 | "metadata": { 2253 | "id": "UEPE0K-rhhzy", 2254 | "colab_type": "text" 2255 | }, 2256 | "source": [ 2257 | "---\n", 2258 | "> P-085: 顧客データフレーム(df_customer)の全顧客に対し、郵便番号(postal_cd)を用いて経度緯度変換用データフレーム(df_geocode)を紐付け、新たなdf_customer_1を作成せよ。ただし、複数紐づく場合は経度(longitude)、緯度(latitude)それぞれ平均を算出すること。\n" 2259 | ] 2260 | }, 2261 | { 2262 | "cell_type": "code", 2263 | "metadata": { 2264 | "trusted": false, 2265 | "id": "P_paWqODhhzy", 2266 | "colab_type": "code", 2267 | "colab": {} 2268 | }, 2269 | "source": [ 2270 | "" 2271 | ], 2272 | "execution_count": null, 2273 | "outputs": [] 2274 | }, 2275 | { 2276 | "cell_type": "markdown", 2277 | "metadata": { 2278 | "id": "dJ8IvUgNhhzz", 2279 | "colab_type": "text" 2280 | }, 2281 | "source": [ 2282 | "---\n", 2283 | "> P-086: 前設問で作成した緯度経度つき顧客データフレーム(df_customer_1)に対し、申込み店舗コード(application_store_cd)をキーに店舗データフレーム(df_store)と結合せよ。そして申込み店舗の緯度(latitude)・経度情報(longitude)と顧客の緯度・経度を用いて距離(km)を求め、顧客ID(customer_id)、顧客住所(address)、店舗住所(address)とともに表示せよ。計算式は簡易式で良いものとするが、その他精度の高い方式を利用したライブラリを利用してもかまわない。結果は10件表示すれば良い。" 2284 | ] 2285 | }, 2286 | { 2287 | "cell_type": "markdown", 2288 | "metadata": { 2289 | "id": "kFydo3tChhzz", 2290 | "colab_type": "text" 2291 | }, 2292 | "source": [ 2293 | "$$\n", 2294 | "緯度(ラジアン):\\phi \\\\\n", 2295 | "経度(ラジアン):\\lambda \\\\\n", 2296 | "距離L = 6371 * arccos(sin \\phi_1 * sin \\phi_2\n", 2297 | "+ cos \\phi_1 * cos \\phi_2 * cos(\\lambda_1 − \\lambda_2))\n", 2298 | "$$" 2299 | ] 2300 | }, 2301 | { 2302 | "cell_type": "code", 2303 | "metadata": { 2304 | "trusted": false, 2305 | "id": "YOhgdXTphhz0", 2306 | "colab_type": "code", 2307 | "colab": {} 2308 | }, 2309 | "source": [ 2310 | "" 2311 | ], 2312 | "execution_count": null, 2313 | "outputs": [] 2314 | }, 2315 | { 2316 | "cell_type": "markdown", 2317 | "metadata": { 2318 | "id": "-7BBzLWphhz0", 2319 | "colab_type": "text" 2320 | }, 2321 | "source": [ 2322 | "---\n", 2323 | "> P-087: 顧客データフレーム(df_customer)では、異なる店舗での申込みなどにより同一顧客が複数登録されている。名前(customer_name)と郵便番号(postal_cd)が同じ顧客は同一顧客とみなし、1顧客1レコードとなるように名寄せした名寄顧客データフレーム(df_customer_u)を作成せよ。ただし、同一顧客に対しては売上金額合計が最も高いものを残すものとし、売上金額合計が同一もしくは売上実績の無い顧客については顧客ID(customer_id)の番号が小さいものを残すこととする。" 2324 | ] 2325 | }, 2326 | { 2327 | "cell_type": "code", 2328 | "metadata": { 2329 | "trusted": false, 2330 | "id": "hJhzgvxuhhz0", 2331 | "colab_type": "code", 2332 | "colab": {} 2333 | }, 2334 | "source": [ 2335 | "" 2336 | ], 2337 | "execution_count": null, 2338 | "outputs": [] 2339 | }, 2340 | { 2341 | "cell_type": "markdown", 2342 | "metadata": { 2343 | "id": "U4ojNt4shhz1", 2344 | "colab_type": "text" 2345 | }, 2346 | "source": [ 2347 | "---\n", 2348 | "> P-088: 前設問で作成したデータを元に、顧客データフレームに統合名寄IDを付与したデータフレーム(df_customer_n)を作成せよ。ただし、統合名寄IDは以下の仕様で付与するものとする。\n", 2349 | ">\n", 2350 | "> - 重複していない顧客:顧客ID(customer_id)を設定\n", 2351 | "> - 重複している顧客:前設問で抽出したレコードの顧客IDを設定" 2352 | ] 2353 | }, 2354 | { 2355 | "cell_type": "code", 2356 | "metadata": { 2357 | "trusted": false, 2358 | "id": "G8xkmVEnhhz2", 2359 | "colab_type": "code", 2360 | "colab": {} 2361 | }, 2362 | "source": [ 2363 | "" 2364 | ], 2365 | "execution_count": null, 2366 | "outputs": [] 2367 | }, 2368 | { 2369 | "cell_type": "markdown", 2370 | "metadata": { 2371 | "id": "ijOu7Ekfhhz3", 2372 | "colab_type": "text" 2373 | }, 2374 | "source": [ 2375 | "---\n", 2376 | "> P-閑話: df_customer_1, df_customer_nは使わないので削除する。" 2377 | ] 2378 | }, 2379 | { 2380 | "cell_type": "code", 2381 | "metadata": { 2382 | "trusted": false, 2383 | "id": "0rMxTZIGhhz3", 2384 | "colab_type": "code", 2385 | "colab": {} 2386 | }, 2387 | "source": [ 2388 | "" 2389 | ], 2390 | "execution_count": null, 2391 | "outputs": [] 2392 | }, 2393 | { 2394 | "cell_type": "markdown", 2395 | "metadata": { 2396 | "id": "jGzIjQvfhhz4", 2397 | "colab_type": "text" 2398 | }, 2399 | "source": [ 2400 | "---\n", 2401 | "> P-089: 売上実績のある顧客に対し、予測モデル構築のため学習用データとテスト用データに分割したい。それぞれ8:2の割合でランダムにデータを分割せよ。" 2402 | ] 2403 | }, 2404 | { 2405 | "cell_type": "code", 2406 | "metadata": { 2407 | "trusted": false, 2408 | "id": "tQfblHJFhhz4", 2409 | "colab_type": "code", 2410 | "colab": {} 2411 | }, 2412 | "source": [ 2413 | "" 2414 | ], 2415 | "execution_count": null, 2416 | "outputs": [] 2417 | }, 2418 | { 2419 | "cell_type": "markdown", 2420 | "metadata": { 2421 | "id": "lnuxS-40hhz5", 2422 | "colab_type": "text" 2423 | }, 2424 | "source": [ 2425 | "---\n", 2426 | "> P-090: レシート明細データフレーム(df_receipt)は2017年1月1日〜2019年10月31日までのデータを有している。売上金額(amount)を月次で集計し、学習用に12ヶ月、テスト用に6ヶ月のモデル構築用データを3セット作成せよ。" 2427 | ] 2428 | }, 2429 | { 2430 | "cell_type": "code", 2431 | "metadata": { 2432 | "trusted": false, 2433 | "id": "54N1nBI3hhz5", 2434 | "colab_type": "code", 2435 | "colab": {} 2436 | }, 2437 | "source": [ 2438 | "" 2439 | ], 2440 | "execution_count": null, 2441 | "outputs": [] 2442 | }, 2443 | { 2444 | "cell_type": "markdown", 2445 | "metadata": { 2446 | "id": "NIl5LRhbhhz6", 2447 | "colab_type": "text" 2448 | }, 2449 | "source": [ 2450 | "---\n", 2451 | "> P-091: 顧客データフレーム(df_customer)の各顧客に対し、売上実績のある顧客数と売上実績のない顧客数が1:1となるようにアンダーサンプリングで抽出せよ。" 2452 | ] 2453 | }, 2454 | { 2455 | "cell_type": "code", 2456 | "metadata": { 2457 | "trusted": false, 2458 | "id": "Snlnbkm-hhz6", 2459 | "colab_type": "code", 2460 | "colab": {} 2461 | }, 2462 | "source": [ 2463 | "" 2464 | ], 2465 | "execution_count": null, 2466 | "outputs": [] 2467 | }, 2468 | { 2469 | "cell_type": "markdown", 2470 | "metadata": { 2471 | "id": "LAzWjKmHhhz9", 2472 | "colab_type": "text" 2473 | }, 2474 | "source": [ 2475 | "---\n", 2476 | "> P-092: 顧客データフレーム(df_customer)では、性別に関する情報が非正規化の状態で保持されている。これを第三正規化せよ。" 2477 | ] 2478 | }, 2479 | { 2480 | "cell_type": "code", 2481 | "metadata": { 2482 | "trusted": false, 2483 | "id": "BUEhEPR8hhz9", 2484 | "colab_type": "code", 2485 | "colab": {} 2486 | }, 2487 | "source": [ 2488 | "" 2489 | ], 2490 | "execution_count": null, 2491 | "outputs": [] 2492 | }, 2493 | { 2494 | "cell_type": "markdown", 2495 | "metadata": { 2496 | "id": "u8OEQQikhhz-", 2497 | "colab_type": "text" 2498 | }, 2499 | "source": [ 2500 | "---\n", 2501 | "> P-093: 商品データフレーム(df_product)では各カテゴリのコード値だけを保有し、カテゴリ名は保有していない。カテゴリデータフレーム(df_category)と組み合わせて非正規化し、カテゴリ名を保有した新たな商品データフレームを作成せよ。" 2502 | ] 2503 | }, 2504 | { 2505 | "cell_type": "code", 2506 | "metadata": { 2507 | "trusted": false, 2508 | "id": "mbOy7QIQhhz-", 2509 | "colab_type": "code", 2510 | "colab": {} 2511 | }, 2512 | "source": [ 2513 | "" 2514 | ], 2515 | "execution_count": null, 2516 | "outputs": [] 2517 | }, 2518 | { 2519 | "cell_type": "markdown", 2520 | "metadata": { 2521 | "id": "WBQfMWaThhz_", 2522 | "colab_type": "text" 2523 | }, 2524 | "source": [ 2525 | "---\n", 2526 | "> P-094: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。\n", 2527 | ">\n", 2528 | "> - ファイル形式はCSV(カンマ区切り)\n", 2529 | "> - ヘッダ有り\n", 2530 | "> - 文字コードはUTF-8" 2531 | ] 2532 | }, 2533 | { 2534 | "cell_type": "code", 2535 | "metadata": { 2536 | "trusted": false, 2537 | "id": "NdSruP0nhhz_", 2538 | "colab_type": "code", 2539 | "colab": {} 2540 | }, 2541 | "source": [ 2542 | "" 2543 | ], 2544 | "execution_count": null, 2545 | "outputs": [] 2546 | }, 2547 | { 2548 | "cell_type": "markdown", 2549 | "metadata": { 2550 | "id": "OwHfilB2hh0B", 2551 | "colab_type": "text" 2552 | }, 2553 | "source": [ 2554 | "---\n", 2555 | "> P-095: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。\n", 2556 | ">\n", 2557 | "> - ファイル形式はCSV(カンマ区切り)\n", 2558 | "> - ヘッダ有り\n", 2559 | "> - 文字コードはCP932" 2560 | ] 2561 | }, 2562 | { 2563 | "cell_type": "code", 2564 | "metadata": { 2565 | "trusted": false, 2566 | "id": "R_A_MhTYhh0C", 2567 | "colab_type": "code", 2568 | "colab": {} 2569 | }, 2570 | "source": [ 2571 | "" 2572 | ], 2573 | "execution_count": null, 2574 | "outputs": [] 2575 | }, 2576 | { 2577 | "cell_type": "markdown", 2578 | "metadata": { 2579 | "id": "ijN5gi_Nhh0C", 2580 | "colab_type": "text" 2581 | }, 2582 | "source": [ 2583 | "---\n", 2584 | "> P-096: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。\n", 2585 | ">\n", 2586 | "> - ファイル形式はCSV(カンマ区切り)\n", 2587 | "> - ヘッダ無し\n", 2588 | "> - 文字コードはUTF-8" 2589 | ] 2590 | }, 2591 | { 2592 | "cell_type": "code", 2593 | "metadata": { 2594 | "trusted": false, 2595 | "id": "HRMFIbjNhh0C", 2596 | "colab_type": "code", 2597 | "colab": {} 2598 | }, 2599 | "source": [ 2600 | "" 2601 | ], 2602 | "execution_count": null, 2603 | "outputs": [] 2604 | }, 2605 | { 2606 | "cell_type": "markdown", 2607 | "metadata": { 2608 | "id": "EGEj2Gfohh0D", 2609 | "colab_type": "text" 2610 | }, 2611 | "source": [ 2612 | "---\n", 2613 | "> P-097: 先に作成した以下形式のファイルを読み込み、データフレームを作成せよ。また、先頭10件を表示させ、正しくとりまれていることを確認せよ。\n", 2614 | ">\n", 2615 | "> - ファイル形式はCSV(カンマ区切り)\n", 2616 | "> - ヘッダ有り\n", 2617 | "> - 文字コードはUTF-8" 2618 | ] 2619 | }, 2620 | { 2621 | "cell_type": "code", 2622 | "metadata": { 2623 | "trusted": false, 2624 | "id": "elyUH6_2hh0D", 2625 | "colab_type": "code", 2626 | "colab": {} 2627 | }, 2628 | "source": [ 2629 | "" 2630 | ], 2631 | "execution_count": null, 2632 | "outputs": [] 2633 | }, 2634 | { 2635 | "cell_type": "markdown", 2636 | "metadata": { 2637 | "id": "v51_UZ-Ahh0E", 2638 | "colab_type": "text" 2639 | }, 2640 | "source": [ 2641 | "---\n", 2642 | "> P-098: 先に作成した以下形式のファイルを読み込み、データフレームを作成せよ。また、先頭10件を表示させ、正しくとりまれていることを確認せよ。\n", 2643 | ">\n", 2644 | "> - ファイル形式はCSV(カンマ区切り)\n", 2645 | "> - ヘッダ無し\n", 2646 | "> - 文字コードはUTF-8" 2647 | ] 2648 | }, 2649 | { 2650 | "cell_type": "code", 2651 | "metadata": { 2652 | "trusted": false, 2653 | "id": "4YBgcGjuhh0E", 2654 | "colab_type": "code", 2655 | "colab": {} 2656 | }, 2657 | "source": [ 2658 | "" 2659 | ], 2660 | "execution_count": null, 2661 | "outputs": [] 2662 | }, 2663 | { 2664 | "cell_type": "markdown", 2665 | "metadata": { 2666 | "id": "PgrSkEmuhh0F", 2667 | "colab_type": "text" 2668 | }, 2669 | "source": [ 2670 | "---\n", 2671 | "> P-099: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。\n", 2672 | ">\n", 2673 | "> - ファイル形式はTSV(タブ区切り)\n", 2674 | "> - ヘッダ有り\n", 2675 | "> - 文字コードはUTF-8" 2676 | ] 2677 | }, 2678 | { 2679 | "cell_type": "code", 2680 | "metadata": { 2681 | "trusted": false, 2682 | "id": "WrdmX0mihh0F", 2683 | "colab_type": "code", 2684 | "colab": {} 2685 | }, 2686 | "source": [ 2687 | "" 2688 | ], 2689 | "execution_count": null, 2690 | "outputs": [] 2691 | }, 2692 | { 2693 | "cell_type": "markdown", 2694 | "metadata": { 2695 | "id": "fRhhcyMuhh0G", 2696 | "colab_type": "text" 2697 | }, 2698 | "source": [ 2699 | "---\n", 2700 | "> P-100: 先に作成した以下形式のファイルを読み込み、データフレームを作成せよ。また、先頭10件を表示させ、正しくとりまれていることを確認せよ。\n", 2701 | ">\n", 2702 | "> - ファイル形式はTSV(タブ区切り)\n", 2703 | "> - ヘッダ有り\n", 2704 | "> - 文字コードはUTF-8" 2705 | ] 2706 | }, 2707 | { 2708 | "cell_type": "code", 2709 | "metadata": { 2710 | "trusted": false, 2711 | "id": "PrE1Dn_7hh0G", 2712 | "colab_type": "code", 2713 | "colab": {} 2714 | }, 2715 | "source": [ 2716 | "" 2717 | ], 2718 | "execution_count": null, 2719 | "outputs": [] 2720 | }, 2721 | { 2722 | "cell_type": "markdown", 2723 | "metadata": { 2724 | "id": "WGSLC2Szhh0H", 2725 | "colab_type": "text" 2726 | }, 2727 | "source": [ 2728 | "# これで100本終わりです。おつかれさまでした!" 2729 | ] 2730 | } 2731 | ] 2732 | } 2733 | --------------------------------------------------------------------------------