Pandas入門
Pythonのデータ操作ライブラリPandasを軽くまとめる。
機械学習などのコーディングでよく使うと思う。
概要
Pandasはデータ操作ライブラリでデータ構造の扱いやデータ分析を簡単に行うことができる。 IPythonと親和性があり、データ表示(表、グラフなど)の際に楽ができる。
PandasにはSeriesとDataFrameという2つのデータ構造があり、Seriesは1次元配列であるのに対して、 DataFrameは2次元配列。
Seriesは通常の配列とは異なり、0からの整数だけでなく任意の文字列をインデックスとして使うことができるが、 DataFrameは行と列どちらも、0からの整数や任意の文字列をインデックスとして使うことができる。
SeriesやDataFrameの作成には後述のコード上で作成する方法に加え、テキストファイル(CSV)、Excel、RDB、HDF5フォーマットのファイルからの入力、出力も可能。
Series
IPythonやJupiter Notebookで実行するテイで書く。
■Seriesの作成方法
import numpy as np import pandas as pd series_data = pd.Series([1,2,3]) series_data # 0 1 # 1 2 # 2 3 # dtype: int64
■Seriesの作成方法(インデックス付)
import numpy as np import pandas as pd series_data=pd.Series([1,2,3], index=['a','b','c']) series_data # a 1 # b 2 # c 3 # dtype: int64
Seriesは様々な関数をもっていて、例えば『max()』は最大値を求めることができる。
series_data.max() # 3
その他には最小値『min()』、平均値『mean()』、中央値『median()』、分散『var()』、合計値『sum()』等様々ある。
DataFrame
■DataFrameの作成方法
import numpy as np import pandas as pd df = pd.DataFrame([[1,4,7],[2,5,8],[3,6,9]], index = ['i1','i2','i3'], columns = list("abc")) df # a b c # i1 1 4 7 # i2 2 5 8 # i3 3 6 9
■DataFrameの作成方法(ディクショナリから)
import numpy as np import pandas as pd df_d = pd.DataFrame({ 'A' : 1., 'B' : pd.Timestamp('20130102'), 'C' : pd.Series(1,index=list(range(4)),dtype='float32'), 'D' : np.array([3] * 4,dtype='int32'), 'E' : pd.Categorical(["test","train","test","train"]), 'F' : 'foo' }) df_d # A B C D E F # 0 1.0 2013-01-02 1.0 3 test foo # 1 1.0 2013-01-02 1.0 3 train foo # 2 1.0 2013-01-02 1.0 3 test foo # 3 1.0 2013-01-02 1.0 3 train foo
■DataFrameの作成方法(NunPyの行列から)
import numpy as np import pandas as pd matrix = np.random.randn(6,4) # array([[-0.12536899, -0.75456054, -1.19577963, -0.0848719 ], # [-0.98614593, 0.21677862, 1.2834255 , -1.03136611], # [-0.09024273, -0.42737333, -1.32127224, 1.82916309], # [ 2.32546221, 0.16171471, 0.55143076, 0.6343525 ], # [-0.89829105, -0.91013159, 0.58194418, -0.35566087], # [-0.32814107, -0.57992834, 0.06743956, -1.9469574 ]]) df_m = pd.DataFrame(matrix, columns=list('ABCD')) df_m # A B C D # 0 -0.125369 -0.754561 -1.195780 -0.084872 # 1 -0.986146 0.216779 1.283425 -1.031366 # 2 -0.090243 -0.427373 -1.321272 1.829163 # 3 2.325462 0.161715 0.551431 0.634353 # 4 -0.898291 -0.910132 0.581944 -0.355661 # 5 -0.328141 -0.579928 0.067440 -1.946957
■DataFrameの作成方法(CSV読込)
import os import numpy as np import pandas as pd path = os.getcwd() + '\input.txt' df_csv = pd.read_csv(path, header=None, names=['a', 'b', 'c']) df_csv # a b c # 0 1 4 7 # 1 2 5 8 # 2 3 6 9
データの表示
DataFrameでは、IPythonで普通に全データを表示するだけでなく加工して表示することができる。
例えば、『head()』はデータの先頭から、『tail()』はデータの末尾からデータを表示することができる。bash的に。
df.head(2) # a b c # i1 1 4 7 # i2 2 5 8
その他にも「行列の転置」、「ソート」、インデックスなどによる「抽出」など様々可能。
詳細については公式ドキュメントを参照。