Pandasを使ってみたけれどさっそくつまづく

動画を見て実際に記録しているデータで同じことができるかを確認してみた

使うデータ

2020年8月25日から毎日記録しているアクティビティで動画と同様の挙動をするのかを確認する。

記録項目は、日付、基礎(kcal)、活動(kcal)、消費(kcal)、歩数(歩)の5項目。

実際にコードを書いていく

import pandas as pd
import datetime
df = pd.read_csv(‘shokuji_data.csv’, encoding=’utf-8)
df

以上のように記述してみた。結果は次のように表示された。

動画で見たとおりにcsvデータを読み込むことができた。

type(df)
データの型を確認する
pandas.core.frame.DataFrame

こちらもデータフレームと表示されているので、視聴した動画と同様の結果が出た。

df.head(5)
df.tail(10)
df.sample(10)
先頭5行、最後10行、ランダム10行を試してみる

これについてもうまくデータを取り出すことができた。

df.info()
データフレーム内の情報を取り出してみる

こちらもうまく取り出すことができた。

自分で記録していたものも同じように扱うことができるなんて便利だなぁ、そう思った矢先でした。

describeでサンプルと異なる結果が出た

df.describe()
要約統計量を出してみると・・・

要約統計量と取り出してみると、なんだか動画で見たものとは異なるものが出てきた。

columnsの項目はそのままだが、indexの項目がなんだか違う。

前回の動画で視聴した際にはこんな感じだった。

topとかfreqとかuniqueとか、見慣れない項目がindexに並んだ。

何か書き方が違うのだろうか。

ピボットテーブルのコードでついにエラーが出る

ピボットテーブルのコードを書いてみる

df.groupby(by=’日付’).mean()[[‘基礎(kcal)’, ‘活動(kcal)’, ‘消費(kcal)’, ‘歩数(歩)’]].round(0)
エラーが出た

全く同じようにコードを書いてみたけれど、エラーが出てしまった。

はっきりとした原因はわからないけれど、動画では最後の方に「時系列データを扱えるようになるともっと便利」のようなことを言っていたなぁということを思い出した。

ということは、問題の箇所は日付かなぁ…

問題点

どうしてエラーが出たのかは現時点ではよく分かっていないが、発生したエラーはこれかな?

return self._cython_agg_general(
agg_blocks, agg_items = self._cython_agg_blocks(
raise DataError("No numeric types to aggregate")

以上の3つのエラーが出ているような気がします。

英語が読めないのでGoogle先生にコピペしてみると、「そんなデータはないよ」とかそんなことが書いてある。

そして、これらをコピペした検索結果には日付の型変換でもエラーが起きるといったようなことが書いてあった。

とりあえず原因はひとつだけではなさそうな感じです。

まだPandasを勉強し始めたばかりなので、現時点では解決策は分かっていない。

コピペ検索で解決策を探してもいけそうだけど、時間がかかりそうな気もするので、一旦このエラーについては保留にすることにした。

このまま動画視聴を続けていって、原因となりそうな項目が出てきたら再度コードを書き直してみようと思う。

現時点でのまとめ

  • とりあえずピボットテーブルのコードを書いたらエラーが出た
  • 現時点での解決策はわからない
  • ぱっと正解に辿り着けなさそうなので一旦保留
  • 動画視聴を進めて理解が深まったら再度挑戦してみる

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA