ホーム > 記事 > Python > pandas > 【Python】CSVを読み込む | read_csv | read_table

記事

【Python】CSVを読み込む | read_csv | read_table

ここではpandasと呼ばれるライブラリのread_csv関数、read_table関数についてのべます。CSVやTSVファイルを簡単に読み込むことができます。オプションを全網羅するのではなく良く用いるパラメータのみをまとめて記載しています。

 

目次

  1. pandasのインストール
  2. read_csv関数
    1. 一番簡単な例
    2. 区切り文字を指定したい場合
    3. 日付の取り扱い
    4. ファイルがない場合
    5. データがないファイルの場合
  3. read_table関数
  4. まとめ

pandasのインストール

pandasはpythonでデータ分析をおこなうのに良く使われるライブラリです。以下でインストールします。

pip install pandas

↑目次

read_csv関数

一番簡単な例

1行目がヘッダ行のcsvファイルを読み込みます

sample1.csv

"name","age","area"
"鈴木",32,"東京都"
"佐藤",43,"山梨"
"山田",27,"岐阜"
"市橋",48,"鳥取"

サンプルコード

import pandas as pd
data_frame=pd.read_csv('sample1.csv')
print(data_frame)

実行結果

  name  age area
0   鈴木   32  東京都
1   佐藤   43   山梨
2   山田   27   岐阜
3   市橋   48   鳥取

read_csvは、引数にファイル以外に指定しない場合、ファイルの最初の行をヘッダととらえ、2行目以降をデータとして読み込みます。

↑目次

区切り文字を指定したい

tab区切りのときにはread_tableを用いればよいですが、タブやカンマ以外を区切り文字に使いたい場合(例えば半角スペース)にはsepを用います。

sample2.csv

name age area
鈴木 32 東京都
佐藤 43 山梨
山田 27 岐阜
市橋 48 鳥取

ソースコード

import pandas as pd
data_frame=pd.read_csv('sample2.csv',sep=' ')
print(data_frame)

実行結果

  name  age area     
0   鈴木   32  東京都
1   佐藤   43   山梨 
2   山田   27   岐阜 
3   市橋   48   鳥取

↑目次

日付の取り扱い

read_csvで日付う読み取っても指定しないと単に文字列として取得されます。

sample3.csv

name,age,area,updday
鈴木,32,東京都,2021/6/23
佐藤,43,山梨,2021/2/23
山田,27,岐阜,2021/2/24
市橋,48,鳥取,2021/2/25

ソースコード

import pandas as pd
data_frame=pd.read_csv('sample3.csv')
print(data_frame)
print(type(data_frame.loc[0,'updday']))

実行結果

  name  age area     updday
0   鈴木   32  東京都  2021/6/23
1   佐藤   43   山梨  2021/2/23
2   山田   27   岐阜  2021/2/24
3   市橋   48   鳥取  2021/2/25
<class 'str'>

上記のように文字列として扱われているのがわかります。文字列として扱わず日付として扱うためにはparse_datesを用いて日付に変換するカラムを指定します。

サンプルコード

import pandas as pd
data_frame=pd.read_csv('sample3.csv',parse_dates=[3])
print(data_frame)
print(type(data_frame.loc[0,'updday']))

上記ではparse_datesで列番号を指定することで、read_csv時に日付に変換する列を指定しています。実行結果は以下のようになります。

  name  age area     updday
0   鈴木   32  東京都 2021-06-23
1   佐藤   43   山梨 2021-02-23
2   山田   27   岐阜 2021-02-24
3   市橋   48   鳥取 2021-02-25
<class 'pandas._libs.tslibs.timestamps.Timestamp'>

upddayが日付(Timestamp)で扱われているのがわかります。複数列を日付指定したい場合にはparse_dates=[3,4]のように指定することができます。

↑目次

ファイルがない場合

ファイルがない場合にはFileNotFoundErrorが発生します。

FileNotFoundError: [Errno 2] No such file or directory: 'sample.csv'

↑目次

データがないファイルの場合

EmptyDataErrorが発生します。

pandas.errors.EmptyDataError: No columns to parse from file

↑目次

read_table関数

単純にread_csvでsep='\t'を指定したときと同じ動作をします。個人的にはread_tableは使わずread_csvで統一したほうが良いとおもっています。

 

↑目次

まとめ

今回はread_csvでcsvファイルを読み取ってみました。詳細なオプションを調べたいときにはpandasの本家ドキュメントのread_csvで調べてみてください。

 

↑目次

この記事へのコメント

コメントはまだありません。

コメントを送る

必須
必須  
※ メールアドレスは公開されません
任意
必須
Loading...  画像の文字を入力してください