このページでは、CSV ファイルやテキストファイル (タブ区切りファイル, TSV ファイル) を読み込んで Pandas のデータフレームに変換する方法について説明します。
Pandas のファイルの読み込み関数
CSV ファイルのロード: read_csv()
Pandas には、CSV ファイルをロードする関数として、read_csv()
メソッドが用意されています。
テキストファイルのロード: read_table()
テキストファイルなど、一般的な可変長のテキストファイルを読み込む関数として、read_table()
メソッドが用意されています。
read_csv() メソッドの書式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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) になっているかです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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ファイルと同じフォルダにファイルを配置し、ファイル名を直接指定します。
データが手元にない場合は、以下からサンプルデータをダウンロード可能です。
コードの例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
>>> # 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 にあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
>>> 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 ファイルやテキストファイルを読み込みます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
>>> # CSV ファイルを読み込み >>> dataset3 = pd.read_csv("http://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("http://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