このページでは、Pandas を使ってデータフレームを作成する方法を紹介します。
Series (1 次元の値のリスト) を作成する
pd.Series()
を用いて、1 次元のリスト (Series, シリーズと呼ばれます) を作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
>>> # 数値で構成される Series を作成 >>> s = pd.Series([1,3,5,np.nan,6,8]) >>> s 0 1 1 3 2 5 3 NaN 4 6 5 8 dtype: float64 >>> # 日付の Series を作成 >>> dates = pd.date_range('20130101', periods=6) >>> dates DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04', '2013-01-05', '2013-01-06'], dtype='datetime64[ns]', freq='D') |
データフレームを作成する
それでは、データフレームを作成してみましょう。本例では、A~Fの各列に数値、文字列、日付、Numpy の行列などを格納します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
>>> df = 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 A B C D E F 0 1 2013-01-02 1 3 test foo 1 1 2013-01-02 1 3 train foo 2 1 2013-01-02 1 3 test foo 3 1 2013-01-02 1 3 train foo |
Numpy の 行列からデータフレームを作成する
Numpy で作成した行列をデータフレームに変換することもできます。本例では、 6 x 4 の 2 次元の行列からデータフレームを作成し、各列に A, B, C, D という名前を付与します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
>>> matrix = np.random.randn(6,4) >>> matrix array([[-0.62613284, -0.18401896, 0.36230433, 0.25385535], [-0.52775779, -1.04001947, -0.70918754, -0.42403257], [ 0.66380938, 1.5464776 , -0.88366703, -0.25407405], [ 0.90132314, -0.74399435, -2.41854429, 0.01882765], [-0.09548835, 0.59397054, -0.76961208, -0.89502256], [ 0.21945467, -1.21903131, -1.74845886, 1.99341913]]) >>> df2 = pd.DataFrame(matrix, columns=list('ABCD')) >>> df2 A B C D 0 -0.626133 -0.184019 0.362304 0.253855 1 -0.527758 -1.040019 -0.709188 -0.424033 2 0.663809 1.546478 -0.883667 -0.254074 3 0.901323 -0.743994 -2.418544 0.018828 4 -0.095488 0.593971 -0.769612 -0.895023 5 0.219455 -1.219031 -1.748459 1.993419 |
ディクショナリからデータフレームを作成する
Python のディクショナリ (Python 以外のプログラミング言語ではハッシュまたは連想配列とも呼ばれます) からデータフレームを作成には、from_dict()
メソッドを利用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
>>> import pandas as pd >>> import numpy as np >>> a_values = [1, (2, 3, 4, 5] >>> b_values = np.random.rand(5) >>> c_values = ["apple", "banana", "strawberry", "peach", "orange"] >>> my_dict = {"A": a_values, "B": b_values, "C":c_values} >>> my_dict {'A': [1, 2, 3, 4, 5], 'B': array([ 0.11306604, 0.07231923, 0.87799638, 0.04161152, 0.55345912]), 'C': ['apple', 'banana', 'strawberry', 'peach', 'orange']} >>> my_df = pd.DataFrame.from_dict(my_dict) >>> my_df A B C 0 1 0.113066 apple 1 2 0.072319 banana 2 3 0.877996 strawberry 3 4 0.041612 peach 4 5 0.553459 orange |
それでは、続いて、作成したデータフレームを操作してみましょう。
参考・ソースコード出典: 10 Minutes to pandas — pandas 0.18.0 documentation