データ分析用ライブラリpandasはPythonでデータ分析を行う際に一般的に用いられるライブラリ。pandasでは表構造をしたデータフレームオブジェクトを操作しデータ分析を行う。この記事ではテキストファイル、csvファイル、エクセルファイルなどの外部ファイルを読み込んでデータフレームに変換する方法を解説する。
ライブラリpandasを使うにはインポートが必要。通常次のようにpdという名前でインポートされる。
import pandas as pd
1. テキストファイルの読み込み
各項目がカンマで区切られた次のテキストファイル'table.txt'を読み出す場合。
country,area,population,GDP
USA,9628000,327830000,204128
China,9634057,1395380000,136000
Russia,17098246,146804400,20968
Japan,377975,126160000,54130
テキストファイル読み込みにはread_tableを用いる。区切り文字','を引数sepで指定する。
import pandas as pd df = pd.read_table('table.txt', sep=',') print(df)
実行結果
country area population GDP 0 USA 9628000 327830000 204128 1 China 9634057 1395380000 136000 2 Russia 17098246 146804400 20968 3 Japan 377975 126160000 54130
次のファイル(table.txt)のように日本語が含まれる場合も、Pythonの標準文字コードであるUTF-8で保存されていれば問題なく読み出せる。
国,面積,人口,GDP アメリカ,9628000,327830000,204128 中国,9634057,1395380000,136000 ロシア,17098246,146804400,20968 日本,377975,126160000,54130
import pandas as pd df = pd.read_table('table.txt', sep=',') print(df)
実行結果
国 面積 人口 GDP 0 アメリカ 9628000 327830000 204128 1 中国 9634057 1395380000 136000 2 ロシア 17098246 146804400 20968 3 日本 377975 126160000 54130
UTF-8以外の文字コードで保存されたテキストファイルを読み出すとエラーになる場合がある。
import pandas as pd df = pd.read_table('table.txt', sep=',') print(df)
実行結果
'utf-8' codec can't decode byte 0x8d in position 0: invalid start byte
これを回避するにはencoding='SHIFT-JIS'またはencoding='cp932'とエンコードを与えるかengine='python'としてエンコードエンジンを指定する(デフォルトはengine='c')。
encoding='SHIFT-JIS'を指定した場合。
import pandas as pd df = pd.read_table('table.txt', sep=',' encoding='SHIFT-JIS') print(df)
実行結果
国 面積 人口 GDP 0 アメリカ 9628000 327830000 204128 1 中国 9634057 1395380000 136000 2 ロシア 17098246 146804400 20968 3 日本 377975 126160000 54130
encoding='cp932'を指定した場合。
import pandas as pd df = pd.read_table('table.txt', sep=',' encoding='cp932') print(df)
実行結果
国 面積 人口 GDP 0 アメリカ 9628000 327830000 204128 1 中国 9634057 1395380000 136000 2 ロシア 17098246 146804400 20968 3 日本 377975 126160000 54130
engine='python'を指定した場合。
import pandas as pd df = pd.read_table('table.txt', sep=',' engine='python') print(df)
実行結果
国 面積 人口 GDP 0 アメリカ 9628000 327830000 204128 1 中国 9634057 1395380000 136000 2 ロシア 17098246 146804400 20968 3 日本 377975 126160000 54130
2. CSVファイルの読み込み
CSVファイルの読み出しにはread_csvを用いる。
次のCSVファイル'table.csv'を読み出す場合。
country,area,population,GDP USA,9628000,327830000,204128 China,9634057,1395380000,136000 Russia,17098246,146804400,20968 Japan,377975,126160000,54130
import pandas as pd df = pd.read_csv('table.csv') print(df)
実行結果
country area population GDP 0 USA 9628000 327830000 204128 1 China 9634057 1395380000 136000 2 Russia 17098246 146804400 20968 3 Japan 377975 126160000 54130
日本語が使われたファイルの読み出しでエンコードエラーが出る場合はテキストファイルの場合同様、encoding='SHIFT-JIS'またはencoding='cp932'とエンコードを与えるかengine='python'としてエンコードエンジンを指定する。
3. エクセルファイルの読み込み
エクセルファイルの読み込みにはread_excelを用いる。
import pandas as pd df = pd.read_excel('table.xlsx') print(df)
実行結果
国 面積 人口 GDP 0 アメリカ 9628000 327830000 204128 1 中国 9634057 1395380000 136000 2 ロシア 17098246 146804400 20968 3 日本 377975 126160000 54130
4. リファレンス
pandas > pandas.read_table
pandas > pandas.read_csv
pandas > pandas.read_excel
0 件のコメント:
コメントを投稿