質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Kaggle

Kaggleは、機械学習モデルを構築するコンペティションのプラットフォームおよびその運営企業を指します。企業や政府といった組織とデータサイエンティスト・機械学習エンジニアを繋げるプラットフォームであり、単純なマッチングではなくコンペティションが特徴です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

1853閲覧

Pythonのpandasライブラリでのエラー(サポートされていない?)についての質問

yokise

総合スコア3

Kaggle

Kaggleは、機械学習モデルを構築するコンペティションのプラットフォームおよびその運営企業を指します。企業や政府といった組織とデータサイエンティスト・機械学習エンジニアを繋げるプラットフォームであり、単純なマッチングではなくコンペティションが特徴です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/05/09 12:04

編集2020/05/09 12:55

質問内容

私は今、時系列分析の練習の一環でKaggleのRecruit Restaurant Visitor Forecastingコンペ(コンペ自体は既に終了)に取り組んでいるのですが、その初心者チュートリアルが載っているウェブサイトのコードリンク内容を動かしてみると、サポートされていない?というエラーが表示されてしまいました。(「過去データの曜日の中央値を算出しよう」にあるコードの内の一つです。)
この記事自体が2年半前のもので、おそらく今このコードだと通用しないことは理解したのですが、自分一人ではこの解決方法が分からず質問させて頂きました。

発生している問題・エラーメッセージ

--------------------------------------------------------------------------- SpecificationError Traceback (most recent call last) <ipython-input-79-9a6f69d1b232> in <module> 3 4 # trainからair_store_idとdowをグルーピングしてvisitorsの中央値(median)を算出 ----> 5 agg_data = train.groupby(['air_store_id','dow']).agg(aggregation).reset_index() 6 agg_data.head() 7 /opt/conda/lib/python3.7/site-packages/pandas/core/groupby/generic.py in aggregate(self, func, *args, **kwargs) 938 func = _maybe_mangle_lambdas(func) 939 --> 940 result, how = self._aggregate(func, *args, **kwargs) 941 if how is None: 942 return result /opt/conda/lib/python3.7/site-packages/pandas/core/base.py in _aggregate(self, arg, *args, **kwargs) 349 # {'ra' : { 'A' : 'mean' }} 350 if isinstance(v, dict): --> 351 raise SpecificationError("nested renamer is not supported") 352 elif isinstance(obj, ABCSeries): 353 raise SpecificationError("nested renamer is not supported") SpecificationError: nested renamer is not supported

該当のソースコード

Python

1# pandasのagg関数で使うリストを作成 2aggregation = {'visitors' : {'total_visitors' : 'median'}} 3 4# trainからair_store_idとdowをグルーピングしてvisitorsの中央値(median)を算出 5agg_data = train.groupby(['air_store_id','dow']).agg(aggregation).reset_index() 6agg_data.head() 7 8 9# agg_dataのカラム名をつける 10agg_data.columns = ['air_store_id', 'dow', 'visitors'] 11agg_data['visitors']= agg_data['visitors'] , 12 13# agg_dataを確認しよう 14agg_data.head(12) 15 16

【追記】
この直前のコードや具体的にどのようなデータになるかなどの画像はこちらです(前述のリンク内容のスクショ)
1枚目
イメージ説明


2枚目(問題の箇所)
イメージ説明

試したこと

必要なライブラリがimportされているか、変数名等に間違えていることはないか、データがきちんと読み込まれているかなどの初歩的なミスはないことは確認しました。どこでエラー起こっているかを一行ずつ実行して試した所、agg_data=の部分で何か問題が起こっているようです。またこれに近いと思われるエラーの対処の記事リンク内容を見つけましたが、今回の私のケースのような解決方法はわかりませんでした。

環境

KaggleのNotebook上での実行です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

aggregation = {'visitors' : 'median'}で良さそうな気がします。
元のデータを見ていないので違っていたらすみません。


【追記】データで試した結果です。

Python

1import pandas as pd 2 3air_data = pd.read_csv('air_visit_data.csv', parse_dates=['visit_date']) 4air_data['dow'] = air_data['visit_date'].dt.dayofweek 5train = air_data[air_data['visit_date'] > '2017-01-28'].reset_index() 6train['dow'] = train['visit_date'].dt.dayofweek 7aggregation = {'visitors' : 'median'} 8agg_data = train.groupby(['air_store_id', 'dow']).agg(aggregation).reset_index() 9agg_data.head() 10 11#air_store_id dow visitors 12#0 air_00a91d42b08b08d9 0 24.0 13#1 air_00a91d42b08b08d9 1 30.5 14#2 air_00a91d42b08b08d9 2 28.0 15#3 air_00a91d42b08b08d9 3 33.5 16#4 air_00a91d42b08b08d9 4 37.0

投稿2020/05/09 12:27

編集2020/05/09 13:24
meg_

総合スコア10579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yokise

2020/05/09 12:58

回答ありがとうございます。その方法で試して見ましたが解決にはいたりませんでした。 実行した結果どのようなデータになるか分かるように画像を追加しました。 もしよろしければ回答よろしくお願いします。
meg_

2020/05/09 13:06

「解決にはいたりませんでした」というのは、質問と同じ個所で同じエラーが出た、という意味でしょうか?
yokise

2020/05/09 13:12 編集

すいません、言葉足らずでした。 meg_さんに指摘して頂いた部分はagg関数で使うリストを作成している所で、aggregation = {'visitors' : 'median'}に変えてしまうと「Length of values does not match length of index」で質問した内容とは別のエラーが返ってきます。
yokise

2020/05/09 14:23

ありがとうございます! 解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問