ここではpandasと呼ばれるライブラリのread_csv関数、read_table関数についてのべます。CSVやTSVファイルを簡単に読み込むことができます。オプションを全網羅するのではなく良く用いるパラメータのみをまとめて記載しています。
ここではpandasと呼ばれるライブラリのread_csv関数、read_table関数についてのべます。CSVやTSVファイルを簡単に読み込むことができます。オプションを全網羅するのではなく良く用いるパラメータのみをまとめて記載しています。
pandasはpythonでデータ分析をおこなうのに良く使われるライブラリです。以下でインストールします。
pip install pandas
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_csvでsep='\t'を指定したときと同じ動作をします。個人的にはread_tableは使わずread_csvで統一したほうが良いとおもっています。
今回はread_csvでcsvファイルを読み取ってみました。詳細なオプションを調べたいときにはpandasの本家ドキュメントのread_csvで調べてみてください。
Comment on this article
コメントはまだありません。
Send comments