【超簡単‼】Pythonで「KeyError: 0」というエラーが出てきた時の対処法を分かりやすく解説‼

Pythonpython
スポンサーリンク
スポンサーリンク

初めに

今回の記事では、Pythonの「あいうえお」というエラーが出てきた時の対処法について解説していきます‼

Pythonを独学で勉強している方は、絶対この記事の最後のところにある、Pythonは独学でやるもんじゃない‼を読んでください‼

それでは解説していきます‼

3か月で副業月収100万越えが当たり前に‼/

必要なのは名前とメアドだけ,稼げる保証付き,完全オンライン完結‼

このエラーが出てくる原因

このエラーが出てくるときの原因は、データの型があっていないからです。

例えば、下のようなコードを実行したときにこのエラーは出てきます。

if os.path.exists('mnist_784'):
    with open('mnist_784','rb') as f:
        mnist = pickle.load(f)
else:
    mnist = datasets.fetch_openml('mnist_784')
    with open('mnist_784', 'wb') as f:
        pickle.dump(mnist, f)
    
# 画像とラベルを取得
X, T = mnist.data, mnist.target
# 訓練データとテストデータに分割
X_train, X_test, T_train, T_test = train_test_split(X, T, test_size=0.2)
T_train = np.eye(10)[T_train.astype("int")]
T_test = np.eye(10)[T_test.astype("int")]

# データを5つ表示
for i in range(5):
    plt.gray()
    plt.imshow(X_train[i].reshape((28,28)))
    plt.show()
    print("label: ", T_train[i])

出力結果: KeyError: 0

このエラーが出てきた時の対処法

このエラーが出てくる原因はデータの型があってないからです。

この場合だと、Dataframeとndarrayみたいな感じ。

このエラーが出てきた時の対処法は、データの型をそろえるために、下のように入力しなおすことです。

if os.path.exists('mnist_784'):
    with open('mnist_784','rb') as f:
        mnist = pickle.load(f)
else:
    mnist = datasets.fetch_openml('mnist_784')
    with open('mnist_784', 'wb') as f:
        pickle.dump(mnist, f)
    
# 画像とラベルを取得
X, T = mnist.data, mnist.target
# 訓練データとテストデータに分割
X_train, X_test, T_train, T_test = train_test_split(X, T, test_size=0.2)
T_train = np.eye(10)[T_train.astype("int")]
T_test = np.eye(10)[T_test.astype("int")]

#下の行を追加。データの型を変換する
X_train=X_train.values
X_test=X_test.values
T_train=T_train.values
T_test=T_test.values

# データを5つ表示
for i in range(5):
    plt.gray()
    plt.imshow(X_train[i].reshape((28,28)))
    plt.show()
    print("label: ", T_train[i])

これで多分エラーは解消されていると思います‼

解決しなかったときは…

「このパターンのコード以外でもこのエラーが出てくる」とか、「この記事の情報通りやったのにエラーが解決しない」といった方は、この記事の一番下のところにある「コメント欄」で教えてください‼

絶対1日以内には返答します‼

Pythonは独学でやるもんじゃない‼

最初に言っておきます。

Pythonは独学でやるもんじゃない‼‼

独学でやっている人、今すぐやめてスクールに行ってください。時間の無駄です。

というのも、私も最初はYoutubeとか本とかで独学でやってました。

でも、どんなふうに学習をすすめていけばいいかわからないし(特にPythonは幅が広いので)、一番のデメリットとして感覚的理解が追い付かない。

それを一番実感したのが、Deep learningを始めた時でした。初めは「所詮この本(下の本)読んで勉強するだけか。」と高をくくっていましたが、勉強してみると全く理解できない…

正直、これを独学でやろうと思うと、相当の数学力と才能が必要だなと思いました。

そして、諦めてスクールに行ってみると、絶対理解不可能だと思っていたDeep learningも簡単に理解できるようになったし、今まで独学でやってきたことがどれだけ無駄な努力だったかを感じさせられました。

結局、独学でやると「覚えなくていいものを覚えようとしてしまう」から、時間の効率が超悪いです。プログラミングスクールだと、本当に大事な点を重点的に勉強できるようなカリキュラムが作られているので、絶対こっちの方が時間的に効率がいいです。

実際、私が独学で学ぶのに3か月ぐらいかかったようなことが、プログラミングスクールだと、3日で流されました。😥

というわけで、時間的な効率も考えて、本格的に勉強する気がない方でも、ぜひプログラミングスクールに行くことを強く勧めます‼ 時は金なりです‼

ここで、お勧めしたいのが、私も受講した利用者数,満足度ともに業界No.1完全オンライン完結のプログラミングスクール、Techacademyです‼

TechAcademyなら…

  • 他社とは比べ物にならない圧倒的コストパフォーマンス‼
  • 現役エンジニアによる徹底サポート初心者でも安心‼
  • 副業として稼げるまでのサポート保証付き‼‼
  • 期限がないから自分のペースでできる‼‼
  • 完全オンライン完結で行く手間が省ける‼

\基礎から稼ぐまでの技術までをしっかり学べる‼/

終わりに

いかがでしたか。

エラーに関しては、同じエラーでもいろんなパターンがあって、プログラムや環境によって違うから、解決方法や登場パターンを一概には言えないこともあります。

だから、「自分はこういうコードでもこのエラーが出てきたけど、対処の仕方がわからない」とか、「こういうパターンでエラーが出た時はこう対処すればいい」などといった情報を記事の一番下のところにあるコメント欄に記載してくれると嬉しいです‼

ほかにも面白い記事たくさんありますので、ぜひほかの記事も読んでください‼

それでは次の記事で‼

プロフィール

この記事を書いた人
tisikinohako

このブログの情報が少しでも役に立てれば嬉しいです。