🐍

(学習ログ)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'を指定して再試行。
  • 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の状態を素早く診断できる。

次の一歩:必要に応じてdtypena_valuesusecolsを指定し、読み込み段階で品質を整えると、後工程(前処理・集計)がぐっと楽になります。

Discussion