実現したいこと
・インデックス番号を指定して円グラフを表示したい
前提
名前,国語,数学,英語,理科,社会
A太,83,89,76,97,76
B介,66,93,75,88,76
C子,100,84,96,82,94
D郎,60,73,63,52,70
E美,92,62,84,80,78
F菜,96,92,94,92,90
↑のCSVデータ(test.csvとします)があります。
このCSVデータからインデックス番号を指定して1人分のデータの円グラフを表示したいです。
まったくの初心者なものでエラー内容を調べてみてもどこをどう対処すれば良いのか全く分からず・・・
どなたかご教授いただけると幸いです。
どうぞよろしくお願いいたします。
エラーメッセージ File "C:\Users\Owner\Desktop\Python\2021_Python入門講座\2021_Python入門講座(6~11教程)\教程11 表データの加工 2\⑤円グラフを表示する\質問 円グラフを表示する\質問.py", line 19, in <module> df.iloc[2].plot.pie() File "C:\Users\Owner\anaconda3\lib\site-packages\pandas\plotting\_core.py", line 1584, in pie return self(kind="pie", **kwargs) File "C:\Users\Owner\anaconda3\lib\site-packages\pandas\plotting\_core.py", line 972, in __call__ return plot_backend.plot(data, kind=kind, **kwargs) File "C:\Users\Owner\anaconda3\lib\site-packages\pandas\plotting\_matplotlib\__init__.py", line 70, in plot plot_obj = PLOT_CLASSES[kind](data, **kwargs) File "C:\Users\Owner\anaconda3\lib\site-packages\pandas\plotting\_matplotlib\core.py", line 1626, in __init__ if (data < 0).any().any(): File "C:\Users\Owner\anaconda3\lib\site-packages\pandas\core\ops\common.py", line 70, in new_method return method(self, other) File "C:\Users\Owner\anaconda3\lib\site-packages\pandas\core\arraylike.py", line 48, in __lt__ return self._cmp_method(other, operator.lt) File "C:\Users\Owner\anaconda3\lib\site-packages\pandas\core\series.py", line 5623, in _cmp_method res_values = ops.comparison_op(lvalues, rvalues, op) File "C:\Users\Owner\anaconda3\lib\site-packages\pandas\core\ops\array_ops.py", line 283, in comparison_op res_values = comp_method_OBJECT_ARRAY(op, lvalues, rvalues) File "C:\Users\Owner\anaconda3\lib\site-packages\pandas\core\ops\array_ops.py", line 73, in comp_method_OBJECT_ARRAY result = libops.scalar_compare(x.ravel(), y, op) File "pandas\_libs\ops.pyx", line 107, in pandas._libs.ops.scalar_compare TypeError: '<' not supported between instances of 'str' and 'int'
エラーメッセージはどこまで必要な情報になるか分からないのですべて書きました。
該当のソースコード
Python Spyder
1import pandas as pd 2import matplotlib.pyplot as plt 3from matplotlib import rcParams 4 5rcParams['font.family'] = 'sans-serif' 6rcParams['font.sans-serif'] = ['Hiragino Maru Gothic Pro', 'Yu Gothic', 'Meirio', 'Takao', 'IPAexGothic', 'IPAPGothic', 'Noto Sans CJK JP'] 7 8df = pd.read_csv("test.csv") 9 10 11df.iloc[3].plot.pie() 12plt.legend(loc="lower left") 13plt.show() 14
試したこと
意味があるか分かりませんが、
df = pd.read_csv("test.csv")
print(df)
でインデックスの番号を付けたのを確認して実行してみましたが、変わりませんでした。
名前 国語 数学 英語 理科 社会
0 A太 83 89 76 97 76
1 B介 66 93 75 88 76
2 C子 100 84 96 82 94
3 D郎 60 73 63 52 70
4 E美 92 62 84 80 78
5 F菜 96 92 94 92 90
私の言うインデックス番号とはこの1番左の番号のことです。
補足情報(FW/ツールのバージョンなど)
Spyderを使用しています。

回答2件
あなたの回答
tips
プレビュー