Pythonにファイルのパスを教える際、クォーテーションで囲むのを忘れてしまった

未分類

初歩的すぎるミス。わざわざ書くまでもないほど初歩的だが備忘録として書いておく。

原因

これがエラーコード。

-------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_37/4006798392.py in <cell line: 0>()
      1 # データの読み込み
----> 2 train_df = pd.read_csv(kaggle/input/rossmann-store-sales/train.csv)
      3 store_df = pd.read_csv(kaggle/input/rossmann-store-sales/store.csv)
      4 test_df = pd.read_csv(kaggle/input/rossmann-store-sales/test.csv)
      5

NameError: name 'kaggle' is not defined

エラーの原因は、pd.read_csv(パス)のパスがクォーテーションで囲まれていなかった事が原因。クォーテーションが無かったため、Pythonはkaggleやinputという変数を使った割り算だと認識し、「NameError: name ‘kaggle’ is not defined」を吐いた。

解決策

解決策は、パスをクォーテーションで囲むだけ。Pythonはシングルクォーテーションでもダブルクォーテーションでも可。

つまりこうなる。

# データの読み込み
# ファイルパスをクォーテーション(')で囲んで、ただの文字列であることをPythonに教える
train_df = pd.read_csv('/kaggle/input/rossmann-store-sales/train.csv')
store_df = pd.read_csv('/kaggle/input/rossmann-store-sales/store.csv')
test_df = pd.read_csv('/kaggle/input/rossmann-store-sales/test.csv')

# データの結合 (trainとstoreを結合)
train_merged_df = pd.merge(train_df, store_df, on='Store')

# testとstoreも同様に結合
test_merged_df = pd.merge(test_df, store_df, on='Store')

# 結合できたか最初の5行を確認
print("結合後の学習データ:")
display(train_merged_df.head())

ここから得られる教訓

「Pythonに、ファイルパスや文章など、何かの “文字” そのものを伝えたい時は、必ずクォーテーションで囲む」

これを覚えておけば、今後同じエラーで悩むことはなくなる。

  • my_variable (クォーテーションなし) → Pythonは「my_variableという名前の変数(箱)」を探しにいく。
  • 'my_variable' (クォーテーションあり) → Pythonは「my_variableという文字そのもの」として扱う。

コメント

タイトルとURLをコピーしました