🐍

(学習ログ)Python021:複数のCSVファイルを一括で読み込んでデータ量を確認する方法

に公開

1. はじめに

この記事の目的

データ分析の最初のステップは、必要なデータを正しく読み込むことです。pandasを使って複数のCSVファイルを効率的に読み込み、それぞれのデータ量を確認する基本的な方法を解説します。

この記事の概要

実務では、顧客マスタ、利用ログ、キャンペーン情報など、複数のファイルを扱うことが一般的です。この記事を通じて、データ分析の「入り口」となる処理を確実に理解できるようになります。

2. サンプルコード

コード全文

# pandasライブラリをインポート(データ分析用の基本ライブラリ)
import pandas as pd

# 利用ログデータを読み込む
sample_usagelog = pd.read_csv('003_サンプル/usage_log.csv')
# 読み込んだデータの行数を出力
print(len(sample_usagelog))

# 顧客マスタデータを読み込む
sample_customer = pd.read_csv('003_サンプル/customer_master.csv')
# 読み込んだデータの行数を出力
print(len(sample_customer))

# 会員区分マスタデータを読み込む
sample_class_master = pd.read_csv('003_サンプル/class_master.csv')
# 読み込んだデータの行数を出力
print(len(sample_class_master))

# キャンペーンマスタデータを読み込む
sample_campaign_master = pd.read_csv('003_サンプル/campaign_master.csv')
# 読み込んだデータの行数を出力
print(len(sample_campaign_master))

コード解説

① ライブラリのインポート

import pandas as pd

pandasは、Pythonでデータ分析を行う際の必須ライブラリです。CSVファイルの読み込みやデータの加工・分析を簡単に行えます。pdという略称で読み込むのが慣例です。

② CSVファイルの読み込み

sample_usagelog = pd.read_csv('003_サンプル/usage_log.csv')

pd.read_csv()関数は、CSVファイルをDataFrame(表形式のデータ構造)として読み込みます。引数にはファイルパスを指定します。相対パスでも絶対パスでも指定可能です。

初心者がつまずくポイント:

  • ファイルパスの書き方に注意(Windowsの場合、¥ではなく/を使う)
  • ファイル名の大文字・小文字は区別される
  • カレントディレクトリ(現在作業しているフォルダ)からの相対位置を意識する

③ データ量の確認

print(len(sample_usagelog))

len()関数は、DataFrameの行数を返します。データが正しく読み込めたか、想定通りのデータ量かを最初に確認するのは重要な習慣です。

なぜ最初に行数を確認するのか:

  • ファイルが正しく読み込めたかの確認
  • データの欠損や重複の早期発見
  • 処理時間の見積もり(大量データの場合)

実行結果例

45327
8324
3
4

この出力は以下を意味します:

  • 利用ログ:45,327件のレコード
  • 顧客マスタ:8,324件の顧客情報
  • 会員区分マスタ:3種類の会員区分
  • キャンペーンマスタ:4件のキャンペーン情報

マスタデータは少なく、トランザクションデータ(利用ログ)は大量、という典型的な構造です。

3. エラーと確認のポイント

代表的なエラー

① FileNotFoundError

FileNotFoundError: [Errno 2] No such file or directory: '003_サンプル/usage_log.csv'

原因: ファイルが指定したパスに存在しない
対処法:

  • ファイル名のスペルミスを確認
  • カレントディレクトリを確認(import os; print(os.getcwd())
  • ファイルの実際の場所を確認

② UnicodeDecodeError

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 0

原因: CSVファイルの文字エンコーディングがUTF-8ではない(日本語環境ではshift-jisの場合が多い)
対処法:

sample_usagelog = pd.read_csv('003_サンプル/usage_log.csv', encoding='shift-jis')

③ ParserError

ParserError: Error tokenizing data. C error: Expected 5 fields in line 10, saw 7

原因: CSV内のカンマの数が不一致(データ内に余分なカンマが含まれている)
対処法:

sample_usagelog = pd.read_csv('003_サンプル/usage_log.csv', sep=',', quotechar='"')

よく使う確認メソッド

shape - 行数と列数を同時確認

print(sample_usagelog.shape)
# 出力例: (45327, 5)  # 45327行、5列

len()よりも情報量が多く、列数も把握できます。

head() - 最初の数行を表示

print(sample_usagelog.head())
# デフォルトで最初の5行を表示
print(sample_usagelog.head(10))  # 10行表示

データの構造や内容を素早く把握できます。

info() - データ型とメモリ使用量を確認

print(sample_usagelog.info())
# 出力例:
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 45327 entries, 0 to 45326
# Data columns (total 5 columns):
#  #   Column        Non-Null Count  Dtype 
# ---  ------        --------------  ----- 
#  0   customer_id   45327 non-null  int64 
#  1   usage_date    45327 non-null  object
# ...

欠損値の有無やデータ型を一目で確認できます。

columns - 列名の一覧を確認

print(sample_usagelog.columns)
# 出力例: Index(['customer_id', 'usage_date', 'amount', ...], dtype='object')

列名を確認して、後続の処理で指定する列名を把握します。

4. まとめ

  • pandasのread_csv() で簡単にCSVファイルを読み込める
  • len()関数でデータの行数を素早く確認できる
  • エラーメッセージから原因を特定し、適切に対処できる
  • shape, head(), info() などでデータを多角的に確認できる

Discussion