初歩的すぎるミス。わざわざ書くまでもないほど初歩的だが備忘録として書いておく。
原因
これがエラーコード。
-------------------------
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
という文字そのもの」として扱う。
コメント