pandas.DataFrameでのデータ作成・データへのアクセス
「pandas.Seriesでのデータ作成・データへのアクセス」の続き。
次のコードで色々試してみた。
########### DataFrame ########### #### データフレームの作成 #1-1.numpyからdataFrameを作成 print np.array( [ [10, 11], [20, 21] ] ) df = pd.DataFrame( np.array( [ [10, 11], [20, 21] ] ) ) print "" print "### print df" print df #1-2.SeriesからdataFrameを作成 s1_1 = pd.Series(np.arange(10, 15)) s1_2 = pd.Series(np.arange(15, 20)) print "" print "### print s1_1" print s1_1 print "" print "### print s1_2" print s1_2 df1 = pd.DataFrame( [ s1_1, s1_2 ] ) print "" print "### print df1" print df1 #2-1.カラム名を指定して作成 nparray = np.array( [ [10, 11], [20, 21] ] ) df = pd.DataFrame( nparray, columns=['a', 'b'] ) print "" print "### print df" print df #2-2-1.カラム名と対応するカラムデータの指定(列データを作成して設定する) df2_2_1 = pd.DataFrame( { 'c1':s1_1, 'c2':s1_2 } ) print "" print "### print df2_2_1" print df2_2_1 #2-2-2.カラム名と対応するカラムデータの指定(列データを作成して設定する) df2_2_2 = pd.DataFrame( [ s1_1, s1_2 ], index=['r1', 'r2'] ) print "" print "### print df2_2_2" print df2_2_2 #### データフレームからの選択 # 番号を指定しての選択 s1_1 = pd.Series(np.arange(10, 15)) s1_2 = pd.Series(np.arange(15, 20)) df3_1 = pd.DataFrame( [ s1_1, s1_2 ], index=['r1', 'r2'] ) print "" print "### print df3_1" print df3_1 print "" print "### print df3_1[0:1] # 1行目の選択" print df3_1[0:1] # 1行目の選択 print "" print "### print df3_1[1:2] # 2行目の選択" print df3_1[1:2] # 2行目の選択 print "" print "### print df3_1[0:2] # 1〜2行目の選択" print df3_1[0:2] # 1〜2行目の選択 print "" print "### print df3_1[0] # 0列目の選択" print df3_1[0] # 0列目の選択 print "" print "### print df3_1[1] # 1列目の選択" print df3_1[1] # 1列目の選択 print "" print "### print df3_1[[0,2,3]] # 0列目、2列目、3列目の選択" print df3_1[[0,2,3]] # 0列目、2列目、3列目の選択 ##loc、ilocを使用した行選択 print "" print "### print df3_1.loc['r1'] # 1行目の選択" print df3_1.loc['r1'] # 1行目の選択 print "" print "### print df3_1.loc['r2'] # 2行目の選択" print df3_1.loc['r2'] # 2行目の選択 print "" print "### print df3_1.loc[['r1', 'r2']] # 1〜2行目の選択" print df3_1.loc[['r1', 'r2']] # 1〜2行目の選択 # カラム名を指定しての選択 s1_1 = pd.Series(np.arange(10, 15)) s1_2 = pd.Series(np.arange(15, 20)) df3_2 = pd.DataFrame( [ s1_1, s1_2 ], columns=('Open', 'High', 'Low', 'Close', 'Volume'), index=['r1', 'r2'] ) print "" print "###print df3_2 numpyの配列に変換して格納する必要がある" print df3_2 # カラム名を指定してのdataFrame作成には、一旦numpy配列にデータを変換してから設定する nparray = np.array( [ s1_1, s1_2 ] ) df3_2 = pd.DataFrame( nparray, columns=('Open', 'High', 'Low', 'Close', 'Volume'), index=['r1', 'r2'] ) print "" print "### print df3_2" print df3_2 print "" print "### print df3_2['Open'] # 0列目の選択" print df3_2['Open'] # 0列目の選択 print "" print "### print df3_2['High'] # 1列目の選択" print df3_2['High'] # 1列目の選択 print "" print "### print df3_2[['Open','Low','Close']] # 0列目、2列目、3列目の選択" print df3_2[['Open','Low','Close']] # 0列目、2列目、3列目の選択
結果は次。
### print df
0 1
0 10 11
1 20 21### print s1_1
0 10
1 11
2 12
3 13
4 14
dtype: int32### print s1_2
0 15
1 16
2 17
3 18
4 19
dtype: int32### print df1
0 1 2 3 4
0 10 11 12 13 14
1 15 16 17 18 19### print df
a b
0 10 11
1 20 21### print df2_2_1
c1 c2
0 10 15
1 11 16
2 12 17
3 13 18
4 14 19### print df2_2_2
0 1 2 3 4
r1 10 11 12 13 14
r2 15 16 17 18 19### print df3_1
0 1 2 3 4
r1 10 11 12 13 14
r2 15 16 17 18 19### print df3_1[0:1] # 1行目の選択
0 1 2 3 4
r1 10 11 12 13 14### print df3_1[1:2] # 2行目の選択
0 1 2 3 4
r2 15 16 17 18 19### print df3_1[0:2] # 1〜2行目の選択
0 1 2 3 4
r1 10 11 12 13 14
r2 15 16 17 18 19### print df3_1[0] # 0列目の選択
r1 10
r2 15
Name: 0, dtype: int32### print df3_1[1] # 1列目の選択
r1 11
r2 16
Name: 1, dtype: int32### print df3_10,2,3 # 0列目、2列目、3列目の選択
0 2 3
r1 10 12 13
r2 15 17 18### print df3_1.loc['r1'] # 1行目の選択
0 10
1 11
2 12
3 13
4 14
Name: r1, dtype: int32### print df3_1.loc['r2'] # 2行目の選択
0 15
1 16
2 17
3 18
4 19
Name: r2, dtype: int32### print df3_1.loc'r1', 'r2' # 1〜2行目の選択
0 1 2 3 4
r1 10 11 12 13 14
r2 15 16 17 18 19###print df3_2 numpyの配列に変換して格納する必要がある
Open High Low Close Volume
r1 NaN NaN NaN NaN NaN
r2 NaN NaN NaN NaN NaN### print df3_2
Open High Low Close Volume
r1 10 11 12 13 14
r2 15 16 17 18 19### print df3_2['Open'] # 0列目の選択
r1 10
r2 15
Name: Open, dtype: int32### print df3_2['High'] # 1列目の選択
r1 11
r2 16
Name: High, dtype: int32### print df3_2'Open','Low','Close' # 0列目、2列目、3列目の選択
Open Low Close
r1 10 12 13
r2 15 17 18