(学習ログ)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