Pythonを使ってCSVファイルからデータを読み込み、集計や分析を行いたいと考えた時、その最も強力で効率的な選択肢となるのが「Pandasライブラリ」です。
Pythonには標準でcsvモジュールも用意されていますが、データ分析や機械学習といった分野では、Pandasを使うのが現在のデファクトスタンダードとなっています。
その理由は、Pandasが提供する「DataFrame」という高機能なデータ構造にあります。
この記事では、なぜPandasがCSV読み込みに最適なのかという基本から、pd.read_csv()関数の基本的な使い方、そして実務で必ず役立つ応用的なオプションまで、豊富なサンプルコードと共に徹底的に解説していきます。
受講生から評判の良いプログラミングスクール
スクール |
特徴 |
受講料金 |
| 大手比較サイトで4年連続人気NO.1!受講生からの評判も非常に高く、Web系のエンジニアを目指すならRUNTEQ一択。 | 657,000円 (最大約53万円の給付金が適用される) |
|
| 月単価80万円以上の現役エンジニア講師による指導!一度入会すればサポートは半永久的。 | 498,000円 |
|
| 格安で質の高いWeb制作スキルを習得したい人におすすめ!業界最安級の料金でありながら、コミュニティやサポートが充実。 | 129,800円~ |
|
| 完全無料でプログラミングが学べる貴重なスクール!最短1ヶ月で卒業可能。ゼロスク運営会社への就職もできる。 | 完全無料 |
|
| 長期間に渡って学習し、希少人材を目指す人に最適なスクール!受講料は高いものの、高収入を得られる人材を目指せる。 | 96~132万円 |
Pandasとは?なぜCSV読み込みに使うのか?
Pandasは、Pythonでデータ分析を行うための高速で柔軟、かつ表現力豊かなデータ構造を提供するオープンソースライブラリです。
その中心的な役割を担うのがDataFrameオブジェクトです。
DataFrameとは、Excelのスプレッドシートやデータベースのテーブルのように、行と列から成る二次元の表形式データを扱うためのデータ構造です。
Pandasを使うと、CSVファイルをわずか1行のコードでこのDataFrameに直接読み込むことができます。
DataFrameに読み込んでしまえば、特定の列の抽出、条件による絞り込み、集計、グラフ化といった、データ分析に必要なあらゆる操作を簡単かつ高速に行うことが可能になります。
これが、多くのデータサイエンティストやエンジニアがCSV操作にPandasを選ぶ理由です。
Pandas read_csvの基本的な使い方
それでは、実際にPandasを使ってCSVファイルを読み込んでみましょう。
Pandasのインストール
まず、Pandasがインストールされていない場合は、ターミナル(コマンドプロンプト)で以下のコマンドを実行してインストールします。
pip install pandas
CSVファイルの準備
今回は、以下のような内容のsample.csvというファイルが、Pythonスクリプトと同じディレクトリにあることを想定して進めます。
ID,Name,Age,City
1,Sato,32,Tokyo
2,Suzuki,45,Osaka
3,Takahashi,28,Nagoya
最もシンプルな読み込み
Pandasをインポートし、pd.read_csv()関数にファイル名を渡すだけで、CSVファイルをDataFrameとして読み込むことができます。
サンプルコード
import pandas as pd
# CSVファイルを読み込む
df = pd.read_csv('sample.csv')
# 読み込んだ内容(DataFrame)を表示
print(df)
実行結果
ID Name Age City
0 1 Sato 32 Tokyo
1 2 Suzuki 45 Osaka
2 3 Takahashi 28 Nagoya
ソースコードの解説
import pandas as pdでPandasライブラリをインポートし、慣例としてpdという別名を付けています。pd.read_csv('sample.csv')でCSVファイルを読み込み、その結果をdfという変数に格納します。print(df)でDataFrameの中身を確認すると、CSVの1行目が自動的にヘッダー(列名)として認識され、データがきれいな表形式で取り込まれていることが分かります。
【目的別】read_csvの便利な引数(オプション)
read_csvは非常に多機能で、様々な形式のCSVファイルに対応するための引数(オプション)が用意されています。
ここでは、実務で特によく使うものを厳選して紹介します。
ヘッダー(列名)の操作
CSVファイルによっては、ヘッダー行がなかったり、先頭に不要な情報が含まれていたりすることがあります。
header=None: ヘッダー行がないCSVファイル用
# header=None を指定すると、列名が自動で0から始まる連番になる
df_no_header = pd.read_csv('no_header.csv', header=None)
print(df_no_header)
names=['列名1', ...]: 自分で列名を指定
# header=None と names を組み合わせるのが一般的
df_with_names = pd.read_csv('no_header.csv', header=None, names=['ID', '名前', '年齢', '都市'])
print(df_with_names)
skiprows=数値: 先頭から指定した行数を読み飛ばす
# 先頭の2行をスキップして読み込む
df_skipped = pd.read_csv('with_title.csv', skiprows=2)
print(df_skipped)
インデックス列の指定
デフォルトでは、インデックス(行ラベル)は0, 1, 2, ...と自動で振られますが、CSVファイル内の特定の列をインデックスとして使いたい場合があります。
index_col=列番号または列名: 指定した列をインデックスにする
# 'ID'列をインデックスとして読み込む
df_indexed = pd.read_csv('sample.csv', index_col='ID')
print(df_indexed)
実行結果
Name Age City
ID
1 Sato 32 Tokyo
2 Suzuki 45 Osaka
3 Takahashi 28 Nagoya
左端のインデックスが、ID列の値に変わっていることが確認できます。
文字コードの指定(文字化け対策)
WindowsのExcelで作成・保存されたCSVファイルは、文字コードがShift_JIS(またはcp932)になっていることが多く、そのまま読み込むと日本語が文字化けすることがあります。
encoding='文字コード名': 文字コードを指定して文字化けを防ぐ
# Shift_JISでエンコードされたCSVファイルを読み込む
try:
df = pd.read_csv('sample_sjis.csv')
except UnicodeDecodeError as e:
print(f"エラー: {e}")
# encodingを指定して正しく読み込む
df_sjis = pd.read_csv('sample_sjis.csv', encoding='shift_jis')
print(df_sjis)
文字化けが起きたら、まずはencoding='shift_jis'やencoding='cp932'を試してみるのが定石です。
データ型の指定
read_csvは自動でデータ型を推測しますが、意図しない型に解釈されることがあります(例: 001のようなIDが数値の1になってしまう)。
これを防ぐには、dtype引数で型を明示的に指定します。
dtype={'列名': 型}: 列ごとにデータ型を指定
# 'ID'列を文字列(object)として読み込む
df_dtype = pd.read_csv('zero_padded_id.csv', dtype={'ID': 'object'})
print(df_dtype)
print(df_dtype.info()) # .info()で各列のデータ型を確認できる
CSV読み込みでよくあるエラーと対処法
FileNotFoundError: 「ファイルが見つかりません」というエラーです。- ファイル名やパスのスペルは正しいか?
- 実行しているPythonスクリプトとCSVファイルは同じディレクトリにあるか?(違う場合は、
'data/sample.csv'のような相対パスや、絶対パスで指定する必要があります)
UnicodeDecodeError: 文字化けが原因で発生するエラーです。encoding引数に'shift_jis','cp932','utf-8'などを指定して、正しい文字コードを探しましょう。
ParserError: CSVファイルの形式自体に問題がある場合に発生します。- 各行のカンマの数が異なっていないか?
- データの中に予期せぬ改行が含まれていないか? CSVファイルをテキストエディタで開いて、構造が崩れていないか確認してみてください。
初心者がPythonでのCSV読み込みなどを効率的に学ぶには
CSV読み込みをはじめとするPythonのスキルを効率的に習得するには、プログラミングスクールの活用が最も近道です。
スクールでスキルを高めることにより、今の仕事に活かしたり、副業として高単価な案件を受注できたりするだけでなく、Pythonエンジニアとして転職することも可能になります。
Pythonエンジニアは需要が非常に高いため、それに比例して年収も高くなる傾向にあります。
「今よりも年収を上げたい」「将来性の高い職種であるエンジニアへ転職したい」といった気持ちが強い場合は、プログラミングスクールでPythonの専門スキルを習得しつつ、ポートフォリオ支援や転職支援を受けてエンジニアへ転職する、という道を目指すのもよいでしょう。
なお、「Pythonに強く、受講生からの評判も良いプログラミングスクール」には、以下のようなところがあります。
- デイトラ
(※格安)
- キカガク
(※専門的)
- Aidemy Premium
(※受講コースが豊富)
その他、以下の記事でもPythonのおすすめスクールをまとめていますので、興味のある方は是非参考にしてください。




