excelで作成されたデータを、pd.read_excel()にて読み込んでいます。
さらにデータを加工・抽出し、グラフを描こうとすると、以下のエラーが出てしまいます。
TypeError: Empty 'DataFrame': no numeric data to plot
対処方法を、ご教示くださいませ。
python
1import pandas as pd 2 3# xlsファイルの読み込み 4df=pd.read_excel('f005-30-027.xls') 5 6#列、行の欠損値の削除、不要な1行目の削除 7df=df.dropna(how='all').dropna(how='all',axis=1).drop(1) 8df.head()
python
1# [Unnamed:0]と[Unnamed:4]の列の抽出 2df=df[['Unnamed: 0','Unnamed: 4']] 3df.head()
pyton
1# 行(都道府県)の抽出 2df=df.loc[29:85] 3df.head()
python
1# 1列目の名前を「都道府県」に、2列目を「収穫量」に変更する 2df = df.rename(columns={df.columns[0]: '都道府県',df.columns[1]: '収穫量'}) 3df.head()
python
1import matplotlib.pyplot as plt 2fig,axes = plt.subplots(2,1) 3 4# 横表示の棒グラフ、縦表示の棒グラフを描く 5df.plot.bar(ax=axes[0]) 6df.plot.barh(ax=axes[1])
TypeError: Empty 'DataFrame': no numeric data to plot
◎やったこと
df.astype(float)をやってみました。
python
1df=df.astype(float) 2 3import matplotlib.pyplot as plt 4fig,axes = plt.subplots(2,1) 5df.plot.bar(ax=axes[0]) 6df.plot.barh(ax=axes[1]) 7 8df=df.astype(float)
◎結果
ValueError: could not convert string to float: ' (11)\u3000キャベツ'
「収穫量」の列だけfloat型に変換してはどうでしょうか?
コメント、ありがとうございます。
ご指摘の通り「収穫量」は数値なので、この行だけfloatにすれば良さそうです。
ただ、その方法が分からないのです〜汗)
(当てずっぽう似)
df=df.columns[1].astype(float)にしたところ、以下のようなエラーが出ます〜
AttributeError: 'str' object has no attribute 'astype'
df['収穫量'] = df['収穫量'] .astype(float)でどうでしょうか?
お手数をおかけしております。以下のような表示が出ます〜
ValueError: could not convert string to float: '収穫量'
これは「収穫量」の列に数値に変換できない文字列が含まれていることを意味しています。それが何かを特定して対処する必要があります。
※元々のデータがエクセルならエクセルで開いて確認されるのが良いでしょう。
ご指摘のとおり、集荷量の数値のない都道府県は、....となっています。これを0にする必要がありそうです。
ありがとうございます〜
「集荷量」は「収穫量」の打ち間違いです。失礼しました。
回答1件
あなたの回答
tips
プレビュー



