【Python】No numeric types to aggregate エラー対処方法

Python-No numeric types to aggregate-アイキャッチ Python

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冊です!