Pythonのコーディング中に発生した「No numeric types to aggregate」のエラー対処の方法をご紹介します。
スプレッドシートをpandasで読み込んで、
ピボットテーブルを作成しようとしたところ、エラーが発生しました。
No numeric types to aggregate エラー発生コード
1番最後のコード(37行目)でエラーが発生しました。
エラー発生コード → [df.pivot_table(index=’配属’,values=’得点’)]
import gspread
from google.oauth2.service_account import Credentials
import pandas as pd
#認証
scopes = [
'https://www.googleapis.com/auth/spreadsheets',
'https://www.googleapis.com/auth/drive'
]
credentials = Credentials.from_service_account_file(
'xxx.json',
scopes=scopes
)
gc = gspread.authorize(credentials)
#スプレットシートとシート指定
SP_KEY='xxx'
SP_SHEET='demo'
#スプレッドシート開く
sh=gc.open_by_key(SP_KEY)
#シートを変数格納
ws=sh.worksheet(SP_SHEET)
#スプレッドシート 全データ読込
data=ws.get_all_values()
#pandas形式で読込 B列から読込 1行目はタイトル行として認識
df=pd.DataFrame(data[2:],columns=data[1])
#空の列を削除
df=df.drop(df.columns[[0]], axis=1)
df.pivot_table(index='配属',values='得点')
エラー発生時のコマンドプロンプト
「得点」列のデータ型は「文字列」となっていますが、
文字列→数値に変換する必要があるみたいです。
読込対象のスプレッドシートです。
エラー解決方法
コードを1行追加することで、エラー解決できました。
エラーが出ているコードの手前に「df=df.astype({‘得点’: int})」を追加しました。
[astype] を使用することで、「得点」のデータ型を文字列→数値に変換しています。
この記事がお役に立ちますと幸いです。
【Python】よくあるエラーの原因と対処方法まとめ:38選
...
「Python 1年生 体験してわかる!会話でまなべる!」
初めての方でも安心して取り組めるように丁寧に解説
簡単なサンプルを作りながら、対話形式でプログラミングまで紹介
人工知能の導入としてもオススメの1冊です!
リンク