1. ホーム
  2. プログラミング言語
  3. その他

エラー概要】IndexError: シングルポジションインデクサーはアウトオブバウンズです。

2022-01-22 15:56:02
<パス

<フォント 問題の説明

seabornを使って描画しているのですが、データを読み込むときにこのようなエラーが発生します。

IndexError: single positional indexer is out-of-bounds


私はまず チュートリアル 試してみましたが、エラーが出てしまい、チュートリアルはこんな感じです。

import seaborn as sns; sns.set()
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
ax = sns.scatterplot(x="total_bill", y="tips", data=tips)


そのsns.load_dataset("tips")ブラケットは、支払総額とチップの関係を記録した"tips.csv"という名前のcsvファイルである。正確な書式は以下の通りです。


をご覧ください。 ギズブ をクリックして、彼のデータセットをダウンロードし、自分で実験してみてください。

サンプルのコードは動作しますが、私自身のデータセットがより大きいため、エラーで実行されます。

コードを見ると、インデックスの大きさを制限しているようですが?自分のデータセットの横座標と縦座標のサイズの差が大きすぎるのかもしれません。どうしよう、解決すべき問題は常にある。うちの描画関数を見てみると

ax = sns.scatterplot(x="total_bill", y="tip", data=tips)


2つのデータセット、それぞれ1次元のベクトルを与える必要がある。

そこで、今回はデータにpandasを使い、例としてtips.csvのデータを使ってみます。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd 

path = ". /tips.csv"

df = pd.read_csv(path)

x_ = df["total_bill"]
y_ = df["tip"]

ax = sns.scatterplot(x = x_, y = y_, data=df)

plt.show()



これで問題は解決です。主な問題は、データをロードするseaborn関数にはそれ自身のバグがありますが、プロットを描画する関数はデータが正しく与えられている限り問題ないことです。