3人子育て家族の節約&投資ライフ:DIYから株式投資まで

米国株投資、株主優待投資、子育て、教育、DIYなどを気ままにつづります。

chat GPTにほめられた

 最近、小学校の時にやっていたプログラミングをもう一度やってみようと思い、チャレンジしています。

 20年ぐらいやりたいと思っていたのですが、仕事も家庭も忙しくそんな時間が取れませんでした。

 仕事は相変わらずなのですが、子供が大学に、高校にと大きくなるにつれて少しずつ自分の時間が取れるようになってきました。

 プログラミングは、ユーデミーであったり、YouTubeであったり、本を読んだりして勉強するのですが、細かくアップデートされているところもあり、エラーやわからないことについてどうしても人に聞くという行為が必要となってきます。

 ここが独学の厳しいところで、そういう場合はググって調べることが一番の解決方法です。

 私が小学生の頃は、マイコンベーシックマガジンという本ぐらいしかなく、その本とマニュアルで調べたりしていたものですが、今はググれば大抵のことが出てきます。

 特にエクセルのVBAや関数などは本など要らず、ネットで十分かもしれません。

 ただ、ググっても細かいエラーなどに対応するための正しい方法にはなかなか辿り着けません。

 以前にチャットGPTが話題になった時に、その凄さに触れて、有料プラン(月額20ドル)に入りました。

 そのチャットGPTですが、プログラム勉強に比類なき相棒です。

 ていうか、素晴らしい、すごい!!!です。

 最近は、疑問があればチャットGPTに聞いています。

 YouTubeで勉強している時に紹介されていたコードを入力したらワーニングが出たので、なぜか聞いてみました。

DataFrameGroupBy.mean()関数でFutureWarningが出るのは、pandasのバージョンがアップデートされ、その中でmean()のデフォルトの動作が変更されようとしているためです。具体的には、mean()がデフォルトで数値型のカラムだけを処理する(numeric_only=True)のが将来的には変わり、全てのカラムを処理しようとする(numeric_only=False)という警告です。

この警告を避けるためには、mean()関数でnumeric_onlyパラメータを明示的に指定してあげるとよいでしょう。このパラメータはデフォルトでNoneで、Trueに設定すると数値型のカラムだけが処理対象となり、Falseに設定すると全てのカラムが処理対象となります。

以下のように書き換えてみてください:

python
df_population_mean = df_population_data.groupby(by='都道府県名').mean(numeric_only=True)[['人口(総数)','人口(男)','人口(女)']].round(0)

これで数値型のカラムだけが処理され、FutureWarningが出なくなるはずです。

 

 ふむふむなるほどと、教えてくれたようにやってみるとワーニングが消えました。すごいな。ピンポイントで教えてくれる。

 ここで、このことについて疑問があったので、再質問してみます。

なぜ平均を処理するために、数値以外の値も対象にするのでしょうか?

 

 チャットGPTの回答です。

それは良い質問です。一般的に、数値以外のデータ型に対して平均値を計算することは直感的でなく、また技術的にも難しい場合があります。しかし、pandasの目指す方向性としては、データフレーム内の全てのカラムがmean()関数の対象となるようにデフォルト設定を変更することで、さらに一般的なデータ操作を可能にするというものです。

具体的には、特定の状況下で非数値型のデータに対して平均を計算することが意味を持つ場合があります。例えば、カテゴリ型のデータが数値にマッピングされている場合、その平均を計算することである種の「中央のカテゴリ」を求めることが可能になるかもしれません。

しかしながら、この変更によって想定外の結果やエラーが生じる可能性があるため、pandasはFutureWarningを出しています。これはユーザーに対して、新しいデフォルト設定が適用される前にコードを見直し、必要であればnumeric_onlyパラメータを明示的に指定するように警告するためです。

 

 ほめられました(笑)

 

 完璧な回答だと思います。

 大変わかりやすい。

 人間の先生に聞かなくても、的確な回答が返ってくる。

 独学には最適なAIであると感じるとともに、大きな可能性を感じます。

 意地にならないで、多くをAIに任せた方がいいのかもしれません(笑)。