Pandas で CSV ファイルやテキストファイルを読み込む

このページでは、CSV ファイルやテキストファイル (タブ区切りファイル, TSV ファイル) を読み込んで Pandas のデータフレームに変換する方法について説明します。

Pandas のファイルの読み込み関数

CSV ファイルのロード: read_csv()
Pandas には、CSV ファイルをロードする関数として、read_csv() メソッドが用意されています。

テキストファイルのロード: read_table()
テキストファイルなど、一般的な可変長のテキストファイルを読み込む関数として、read_table() メソッドが用意されています。

read_csv() メソッドの書式

pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer',
                names=None, index_col=None, usecols=None, squeeze=False,
                prefix=None, mangle_dupe_cols=True, dtype=None, engine=None,
                converters=None, true_values=None, false_values=None,
                skipinitialspace=False, skiprows=None, skipfooter=None,
                nrows=None, na_values=None, keep_default_na=True, na_filter=True,
                verbose=False, skip_blank_lines=True, parse_dates=False,
                infer_datetime_format=False, keep_date_col=False,
                date_parser=None, dayfirst=False, iterator=False, chunksize=None,
                compression='infer', thousands=None, decimal='.',
                lineterminator=None, quotechar='"', quoting=0, escapechar=None,
                comment=None, encoding=None, dialect=None, tupleize_cols=False,
                error_bad_lines=True, warn_bad_lines=True, skip_footer=0,
                doublequote=True, delim_whitespace=False, as_recarray=False,
                compact_ints=False, use_unsigned=False, low_memory=True,
                buffer_lines=None, memory_map=False, float_precision=None)

read_table() メソッドの書式

read_csv()read_table() の違いは、区切り文字がカンマ (,)になっているか、タブ (\t) になっているかです。

pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer',
                names=None, index_col=None,usecols=None, squeeze=False,
                prefix=None, mangle_dupe_cols=True, dtype=None, engine=None,
                converters=None, true_values=None, false_values=None,
                skipinitialspace=False, skiprows=None, skipfooter=None,
                nrows=None, na_values=None, keep_default_na=True, na_filter=True,
                verbose=False, skip_blank_lines=True,parse_dates=False,
                infer_datetime_format=False, keep_date_col=False,
                date_parser=None, dayfirst=False,iterator=False, chunksize=None,
                compression='infer', thousands=None, decimal='.',
                lineterminator=None,quotechar='"', quoting=0, escapechar=None,
                comment=None, encoding=None, dialect=None, tupleize_cols=False,
                error_bad_lines=True, warn_bad_lines=True, skip_footer=0,
                doublequote=True, delim_whitespace=False,as_recarray=False,
                compact_ints=False, use_unsigned=False, low_memory=True,
                buffer_lines=None,memory_map=False, float_precision=None)

主要な引数

read_csv()read_csv() 共通で利用可能な引数のうち、主要なものを紹介します。

filepath_or_buffer 読み込み元のファイルのパスや URL を指定。
sep 区切り文字。 (デフォルト: ‘,’ (read.csv) / ‘\t’ (read.table) )
delimiter sep の代わりに delimiter 引数でも区切り文字を指定可能。 (デフォルト: None)
header ヘッダ行の行数を整数で指定。 (デフォルト: ‘infer’)
names ヘッダ行をリストで指定。 (デフォルト: None)
index_col 行のインデックスに用いる列番号。 (デフォルト: None)
dtype 各行のデータタイプ。例: {‘a’: np.float64, ‘b’: np.int32}  (デフォルト: None)
skiprows 先頭から読み込みをスキップする行数。 (デフォルト: None)
skipfooter 末尾から読み込みをスキップする行数。 (デフォルト: None)
nrows 読み込む行数。 (デフォルト: None)
quotechar ダブルクォーテーションなどでクオートされている場合のクオート文字。 (デフォルト: ‘”‘)
escapechar エスケープされている場合のエスケープ文字。 (デフォルト: None)
comment コメント行の行頭文字を指定。指定した文字で始まる行は無視されます。 (デフォルト: None)
encoding 文字コード。’utf-8′, ‘shift_jis’, ‘euc_jp’ などを指定。参考: Python の文字コードの一覧 (デフォルト: None)

CSV ファイル / テキストファイル の読み込み例 (ローカルファイル)

事前に用意したファイルを読み込むには、Pythonファイルと同じフォルダにファイルを配置し、ファイル名を直接指定します。

データが手元にない場合は、以下からサンプルデータをダウンロード可能です。

サンプルデータ (sample_dataset.csv)
sample_dataset_csv

サンプルデータ (sample_dataset.txt)
sample_dataset_txt

コードの例

>>> # CSV ファイルを読み込み
>>> import pandas as pd
>>> dataset1 = pd.read_csv("sample_dataset.csv")
>>> dataset1
        ID     Name  Birthdate Sex Occupation   Salary
0  ID-0001      Abe   1985/1/1   M   Engineer  8422213
1  ID-0002    Saito  1970/2/11   F  Professor  8222588
2  ID-0003   Yamada  1975/3/21   M     Doctor  9845288
3  ID-0004   Tanaka  1980/4/22   F      Sales  8505218
4  ID-0005  Okamoto  1995/5/25   M    Student   218103

>>> # テキストファイルを読み込み
>>> dataset2 = pd.read_table("sample_dataset.txt")
>>> dataset2
        ID     Name  Birthdate Sex Occupation   Salary
0  ID-0001      Abe   1985/1/1   M   Engineer  8422213
1  ID-0002    Saito  1970/2/11   F  Professor  8222588
2  ID-0003   Yamada  1975/3/21   M     Doctor  9845288
3  ID-0004   Tanaka  1980/4/22   F      Sales  8505218
4  ID-0005  Okamoto  1995/5/25   M    Student   218103

コードの例 (日本語を含むファイルを読み込む例)

日本語や韓国語、中国語などのマルチバイト文字を含むファイルを読み込む場合は、引数に encoding="<文字コード>" を指定することで正しく文字化けしない状態で読み込むことができます。Python で使える文字コードの一覧は 7.2.3. Standard Encodings にあります。

>>> import pandas as pd

>>> # UTF-8 形式の CSV ファイルを読み込み
>>> dataset3 = pd.read_csv("sample_dataset.utf8.csv", encoding="utf_8")
>>> dataset3
        ID Name   Birthdate Sex Occupation   Salary
0  ID-0001   安部   1985年1月1日   男      エンジニア  8422213
1  ID-0002   斎藤  1970年2月11日   女       大学教授  8222588
2  ID-0003   山田  1975年3月21日   男         医師  9845288
3  ID-0004   田中  1980年4月22日   女         営業  8505218
4  ID-0005   岡本  1995年5月25日   男         学生   218103

>>> # Shift-JIS 形式の CSV ファイルを読み込み
>>> dataset4 = pd.read_csv("sample_dataset.sjis.csv", encoding="shift_jis")
>>> dataset4
        ID Name   Birthdate Sex Occupation   Salary
0  ID-0001   安部   1985年1月1日   男      エンジニア  8422213
1  ID-0002   斎藤  1970年2月11日   女       大学教授  8222588
2  ID-0003   山田  1975年3月21日   男         医師  9845288
3  ID-0004   田中  1980年4月22日   女         営業  8505218
4  ID-0005   岡本  1995年5月25日   男         学生   218103

>>> # EUC-JP 形式のテキストファイルを読み込み
>>> dataset5 = pd.read_table("sample_dataset.eucjp.txt", encoding="euc_jp")
>>> dataset5
        ID Name   Birthdate Sex Occupation   Salary
0  ID-0001   安部   1985年1月1日   男      エンジニア  8422213
1  ID-0002   斎藤  1970年2月11日   女       大学教授  8222588
2  ID-0003   山田  1975年3月21日   男         医師  9845288
3  ID-0004   田中  1980年4月22日   女         営業  8505218
4  ID-0005   岡本  1995年5月25日   男         学生   218103

CSV ファイル / テキストファイルの読み込み例 (URL を指定)

インターネット上に配置されたファイルを読み込むことも可能です。本例では、当サイトにアップロード済みのCSV ファイルやテキストファイルを読み込みます。

>>> # CSV ファイルを読み込み
>>> dataset3 = pd.read_csv("https://pythondatascience.plavox.info/wp-content/uploads/2016/05/sample_dataset.csv")
>>> dataset3
        ID     Name  Birthdate Sex Occupation   Salary
0  ID-0001      Abe   1985/1/1   M   Engineer  8422213
1  ID-0002    Saito  1970/2/11   F  Professor  8222588
2  ID-0003   Yamada  1975/3/21   M     Doctor  9845288
3  ID-0004   Tanaka  1980/4/22   F      Sales  8505218
4  ID-0005  Okamoto  1995/5/25   M    Student   218103

>>> # テキストファイルを読み込み
>>> dataset4 = pd.read_table("https://pythondatascience.plavox.info/wp-content/uploads/2016/05/sample_dataset.txt")
>>> dataset4
        ID     Name  Birthdate Sex Occupation   Salary
0  ID-0001      Abe   1985/1/1   M   Engineer  8422213
1  ID-0002    Saito  1970/2/11   F  Professor  8222588
2  ID-0003   Yamada  1975/3/21   M     Doctor  9845288
3  ID-0004   Tanaka  1980/4/22   F      Sales  8505218
4  ID-0005  Okamoto  1995/5/25   M    Student   218103

参考:
pandas.read_table — pandas 0.18.1 documentation
pandas.read_csv — pandas 0.18.1 documentation