学校の実験でpythonを用いたデータ解析をしています。
pythonを学習したことは一度もありません。
いきなりサンプルデータとサンプルコードを渡され、理解度はかなり低いです。
そのサンプルコードと授業後の課題についての疑問点を質問させてください。
Jupyter notebook上で動かしています。
まず、ホームディレクトリにホテルの予約に関するデータ(reserve.csv)が表としてまとめてあります。データの一部を以下に示します。
|reserve_id|hotel_id|customer_id|people_num|total_price|
|:--|:--:|--:|
|r1|h_75|c_1|4|97200|
|r2|h_219|c_1|2|20600|
|・・・||・・・||・・・
|r19|h_23|c_3|3|390600|
|・・・||・・・||・・・
|r4030|h_117|c_1000|1|44100
横5×縦4030のデータです。
customer_idはc_1からc_1000の範囲内(重複あり)、people_numの範囲は1から4です。
reserve_idは重複しておらず、1から4030です。
hotel_idはh_1からh_300の範囲内(重複あり)です。
ここで、授業内でホテルごとの予約したことがある顧客数の検出を行いました。
以下のコードを実行したところ、
Python
1result = reserve_tb.groupby(‘hotel_id’)[‘customer_id’].nunique().reset_index() 2result.head()
結果は
hotel_id | customer_id | |
---|---|---|
0 | h_1 | 10 |
1 | h_10 | 3 |
2 | h_100 | 19 |
3 | h_101 | 17 |
4 | h_102 | 13 |
となりました。
ここで質問なのですが
4030個のデータから探索したはずなのに、なぜhotel_idは5種類しか表に現れなかったのでしょうか?
また課題で各顧客ごとの予約件数を調査する、というものがあります。
先ほどのコードを踏まえて以下のコードを実行したところ、
Python
1reserve_tb.sample(frac=0.5) 2result = reserve_tb.groupby('customer_id'['reserve_id'].nunique().reset_index() 3#reset_index 関数によって、行番号を振り直す 4#集約処理に適した列名を指定 5result.columns = ['customer_id', 'num'] 6result.head()
customer_id | num_id | |
---|---|---|
0 | c_1 | 8 |
1 | c_10 | 6 |
2 | c_100 | 5 |
3 | c_1000 | 2 |
4 | c_101 | 5 |
またしても5種類のデータしか抽出されませんでした。これはなぜでしょうか?
ここまで長くなってしまい、そして大変見にくくて恐縮ですが、わかるかた教えていただけませんでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/14 12:57