🐍
(学習ログ)Python001:CSVを読み込んで先頭行を確認する
1. はじめに
-
この記事の目的
pandas.read_csv()
でCSVファイルを読み込み、先頭数行を安全に確認する最小コードを理解します。パスや文字コードでつまずかないための確認ポイントも押さえます。 -
この記事の概要
3行のサンプルコード → 行ごとの役割 → 実行結果のイメージ → 代表的エラーと自己診断メソッド、の順でコンパクトに解説します。
2. サンプルコード
コード全文
import pandas as pd
sample_file = pd.read_csv('001_サンプル/sample_file.csv')
sample_file.head()
行ごとの説明
-
import pandas as pd
データ分析ライブラリpandasをpd
という短い別名で読み込みます。 -
sample_file = pd.read_csv('001_サンプル/sample_file.csv')
相対パス001_サンプル/sample_file.csv
のCSVを読み込み、DataFrameとしてsample_file
に格納します。 -
sample_file.head()
先頭5行だけを表示し、読み込みが正しく行われたかをすばやく確認します。
実行結果例
実際の内容はファイルに依存しますが、出力イメージは以下のようになります。
id name price in_stock
0 1 apple 120 True
1 2 banana 90 True
2 3 grape 300 False
3 4 peach 200 True
4 5 mango 350 False
列名・件数などを素早く把握できればOKです。より詳しくは後述の確認メソッドでチェックします。
3. エラーと確認のポイント
代表的なエラー文
-
FileNotFoundError: [Errno 2] No such file or directory
- 原因: パスが間違い、作業ディレクトリが想定と違う、ファイル名の全角/半角差異など。
-
対処: 後述の
os.getcwd()
で現在の作業ディレクトリを確認し、相対パスがそこから見て正しいかを確認。必要に応じて絶対パスに変更。
-
UnicodeDecodeError: 'utf-8' codec can't decode ...
-
原因: 文字コード不一致(特にWindowsのCSVで
cp932
/shift_jis
系が多い)。 -
対処:
pd.read_csv(..., encoding='cp932')
やencoding='utf-8'
を指定して再試行。
-
原因: 文字コード不一致(特にWindowsのCSVで
-
ParserError: Error tokenizing data
- 原因: 区切り文字が想定と違う、改行や引用符の不整合。
-
対処:
sep=';'
など区切りを指定、quotechar='"'
やon_bad_lines='skip'
を検討。
-
パスに日本語・スペースが含まれる場合
-
対処:
pathlib.Path
で扱うと安全。文字化け時はエンコード指定も併用。
-
対処:
よく使う確認メソッドや出力例
import os
os.getcwd() # いまの作業ディレクトリを確認
# 例: '.../my_project/notebooks'
from pathlib import Path
Path('001_サンプル').exists() # Trueならフォルダが見つかっている
Path('001_サンプル/sample_file.csv').exists() # Trueならファイルが見つかっている
sample_file.shape # (行数, 列数) 例: (500, 4)
sample_file.columns # Index(['id', 'name', 'price', 'in_stock'], dtype='object')
sample_file.head(3) # 先頭3行で素早く中身を点検
sample_file.tail(3) # 末尾3行で欠損や並びを点検
sample_file.info() # 列型や欠損状況を一目で把握
ワンポイント:
- Windowsの日本語CSVは
encoding='cp932'
指定で解決することが多いです。- 区切りがタブなら
pd.read_csv(..., sep='\t')
。- 列型が誤推定される場合は
dtype={'id': 'Int64', 'price': 'float'}
のように明示しましょう。
トラブルを避ける“少し堅牢な読み込み例”
from pathlib import Path
import pandas as pd
csv_path = Path('001_サンプル') / 'sample_file.csv'
assert csv_path.exists(), f'ファイルが見つかりません: {csv_path.resolve()}'
df = pd.read_csv(csv_path, encoding='utf-8') # うまくいかなければ 'cp932' を試す
print(df.shape)
print(df.head(3))
4. まとめ
-
read_csv()
とhead()
で 「読み込み→先頭確認」 までを最小手順で実行できるようになった。 - 作業ディレクトリ・相対パス・文字コードを押さえると、初手のエラーを短時間で切り分けられる。
-
shape / columns / info / head / tail
を使うことで、DataFrameの状態を素早く診断できる。
次の一歩:必要に応じて
dtype
やna_values
、usecols
を指定し、読み込み段階で品質を整えると、後工程(前処理・集計)がぐっと楽になります。
Discussion