詳細はパンdasでDataFrameオブジェクトの.loc[],.iloc[]を利用してデータを抽出します。
pandsのDataFrameオブジェクトは、本質的に二次元マトリックスであり、従来の二次元マトリックスとの違いは、前者が各行と各列の名称を追加的に指定していることにある。このように内部データ抽出は、「行列名(対応.loc[]方法)」ともいい、「マトリックス下付き(対応.iloc[]方法)」ともいいます。
以下、具体的に説明します。
(以下の手順は全部Jupyter notebookで行います。一部の語句のprint()関数は省略します。)
まず、DataFrameオブジェクトを生成します。
下の図は前の状況を説明しています。
DataFrameオブジェクトの.loc[]と.iloc[]の方法は、データを抽出するために使用されます。.loc[]:locationであり、columnsとindexをパラメータとしています。 .iloc[]:index locationであり、二次元マトリックスの位置指標(すなわち0,1,2...)をパラメータとしている。
loc[]文法
loc[行ラベルの署名/[行ラベルの署名リスト]と、ラベルの署名/[列标の署名リスト]という2つの入力パラメータがあります。最初の指定行名、2番目の指定列名です。パラメータが一つしかない場合、デフォルトは行名(つまり行全体を抽出)で、すべての列が選択されます。
.iloc[]文法
loc[行位置/[行位置list],列位置/[列位置list]もあり、2つの入力パラメータもあり、最初の指定行位置、2番目の指定列位置があります。パラメータが一つしかない場合、デフォルトは行の位置(つまり行全体を抽出)で、すべての列が選択されます。
例1.1行分のデータを抽出する
例2.指定行名抽出任意複数行データ
例3.連続任意複数行のデータを抽出する
例4.「列」を抽出する各種の場合
例5.指定行と列対応データを同時に抽出する
まとめ:
(1)DataFrameオブジェクトの.loc[,]および.iloc[,]方法はデータを抽出するために用いられます。loc[,]は行列のラベル名をパラメータとして使用します。iloc[,]は二次元マトリックス要素のメッシュで下付きでパラメータとして表記します。
(2)2つの方法は、2つのパラメータを受け入れます。最初は「行ラベル」または「行列行番号」、2番目は「列ラベル」または「行列列番号」です。
(3)2つの方法は、1つの入力パラメータのみを指定すると、すべてが「行」に関連して黙示され、列はすべて選択されます。行と列の指定が必要な場合は、間をカンマで区切ることが大切です。そうでないとエラーが発生します。
(4)すべての行のいくつかの列を選択する必要がある場合は、行パラメータを省略し、列パラメータを指定する必要があります。列パラメータの前に「:」を付ける必要があります。形はloc[:列パラメータ],iloc[:列パラメータ]のようです。
(5).loc[,],iloc[,]は一つか二つの入力パラメータを設定していますが、肝心な点は「,」があるかどうかを確認して、二つのパラメータを分離して、カンマが一つのパラメータの内部コンマであるかを区別します。また、行列パラメータを分けるコンマもあります。
(6)二つのパラメータの概念区分について.loc['国語'、'数学']というのは二つのパラメータを入力したことを示しています。行パラメータは‘国語’で、列パラメータは‘数学’です。上の表にとっては間違っています。'数学'という列がないので、[[国語]、'数学']と書くべきです。ここのコンマは行と列を区切るものではなく、行リストのコンマだけです。国語','数学'''=''国語','数学',''','=''',''国語','数学',:'はいずれも1行のパラメータだけを表しています。列はすべて選択されています。
ここで、pandsでDataFrameオブジェクトを利用したデータ抽出方法について紹介します。これに関連して、pands.loc[]、.iloc[]が抽出したデータの内容を紹介します。以前の記事を検索したり、次の関連記事を見たりしてください。よろしくお願いします。
以下、具体的に説明します。
(以下の手順は全部Jupyter notebookで行います。一部の語句のprint()関数は省略します。)
まず、DataFrameオブジェクトを生成します。
import pandas as pd
score = [[34,67,87],[68,98,58],[75,73,86],[94,59,81]]
name = [' ',' ',' ']
course = [' ',' ',' ',' ']
mydata1 = pd.DataFrame(data=score,columns=name,index=course)# (index) (columns)
print(mydata1)
mydata2 = pd.DataFrame(score)# , 0,1,2……
print(mydata2)
#
34 67 87
68 98 58
75 73 86
94 59 81
#
0 1 2 ( )
0 34 67 87
1 68 98 58
2 75 73 86
3 94 59 81
DataFrameオブジェクトの生成にはdataパラメータを指定する必要がありますが、ユーザーはまた、2つのパラメータcolumns(列名)とindex(行名、ここのindexは数字だけでなく、ユーザーが指定した任意のデータタイプ、例えばアルファベット)を指定できます。指定しないと、行列名はデフォルトで0、1、2…。下の図は前の状況を説明しています。
DataFrameオブジェクトの.loc[]と.iloc[]の方法は、データを抽出するために使用されます。
loc[行ラベルの署名/[行ラベルの署名リスト]と、ラベルの署名/[列标の署名リスト]という2つの入力パラメータがあります。最初の指定行名、2番目の指定列名です。パラメータが一つしかない場合、デフォルトは行名(つまり行全体を抽出)で、すべての列が選択されます。
.iloc[]文法
loc[行位置/[行位置list],列位置/[列位置list]もあり、2つの入力パラメータもあり、最初の指定行位置、2番目の指定列位置があります。パラメータが一つしかない場合、デフォルトは行の位置(つまり行全体を抽出)で、すべての列が選択されます。
例1.1行分のデータを抽出する
# .loc[] 1 ‘ ' ( )
mydata1.loc[' ']
mydata1.loc[' ',]
mydata1.loc[' ',:]
mydata1.loc[[' '],]
mydata1.loc[[' '],:]
# .iloc[] 1 ‘ ' ( )
mydata1.iloc[0]
mydata1.iloc[0,]
mydata1.iloc[0,:]
mydata1.iloc[[0],]
mydata1.iloc[[0],:]
# 1( 1 [], Series ):
34
67
87
Name: , dtype: int64
# 2( 1 [], DataFrame ):
34 67 87
Name: , dtype: int64
上記.loc[]と.iloc[]はいずれも1つのパラメータ「国語」または「0」のみを受信していますので、デフォルトでは行情報を表しますが、列はすべて選択されています。すなわち、「国語」という行のデータを抽出します。は、2つのパラメータを分離して(2つのパラメータがあれば)、':'ここでは選択中のすべての列を表します。入力パラメータが一つしかない場合は、pythonはデフォルトで、''と':'は書き込みも省略もできます。注意:パラメータ['国語']または[0]の中にオブジェクトが一つしかない場合(つまり1行のみ)、[]も省略できます。複数のオブジェクト(つまり複数行)がある場合は[]を加えなければなりません。また、[]を加えて抽出した結果は、データの行、データの行、データの列、データの列に関係なく、彼はDataFrameオブジェクトです。[]を追加しない場合は、1行または1列のデータが選択されている場合は、Seriesオブジェクトで、単独のデータであれば、そのデータ自体のタイプです。例2.指定行名抽出任意複数行データ
#
mydata1.loc[[' ',' ',' '],:]
75 73 86
34 67 87
94 59 81
mydata1.iloc[[1,0],:]
68 98 58
34 67 87
例2と例1の唯一の違いは、最初のパラメータが複数行を指定して一緒に出力する場合、行名または下付きを[]で囲む必要があります。そうでないとエラーが発生します。後の',''と':'は同じ例1で省略できます。注意:元のデータの行の順序は、国語、数学、英語、政治であり、ここでの抽出順序は「英語」、「国語」、「政治」であり、出力も「英語」、「国語」、「政治」であり、出力順序とパラメータ指定順序は一致しています。例3.連続任意複数行のデータを抽出する
mydata1.loc[' ':' ',:] #
34 67 87
68 98 58
75 73 86
mydata1.loc[:' ',:] # 1
34 67 87
68 98 58
75 73 86
mydata1.iloc[0:3,:] # 1~3
34 67 87
68 98 58
75 73 86
mydata1.iloc[1:,:] # 2
68 98 58
75 73 86
94 59 81
例3は依然として1つのパラメータを受け入れていますが、列パラメータはなく、後の'、''と':'は同例1で省略できます。連続パラメータは‘start:end’で行範囲を指定します。注意:ここでは[]でくくらないとエラーが発生します。また、行列名で連続して値を取る場合、例えば「国語」「政治」は「政治」の行を取ることができますが、マトリックスを利用して表示した場合、0:3は0,1,2に対応する3行だけ取って、最後の行は取り出しません。しかし、行の署名自体が整数0,1,2...であって、文字やその他のタイプではない場合、連続する行のラベル名を使ってデータを取る場合、最後の行または列は取り出されません。例4.「列」を抽出する各種の場合
mydata1.loc[:,[' ']] # , , , []
67
98
73
59
mydata1.loc[:,[' ',' ']] # ,
34 67
68 98
75 73
94 59
mydata1.iloc[:,[1,2]] # , 2 3
67 87
98 58
73 86
59 81
mydata1.loc[:,' ':] #
34 67 87
68 98 58
75 73 86
94 59 81
mydata1.iloc[:,:3] # 1 3
34 67 87
68 98 58
75 73 86
94 59 81
列全体を抽出する方式は、パラメータ設定上の行全体を抽出するのと同じです。loc[]と.iloc[]の2つの方法はデフォルトでは2番目のパラメータとなりますので、列全体を抽出する時は必ず','を付けなければなりません。例5.指定行と列対応データを同時に抽出する
mydata1.loc[' ',' '] # , ,
34
<class 'numpy.int64'> # [] ,
mydata1.loc[[' '],[' ']] # ,
34
<class 'pandas.core.frame.DataFrame'> # [] , DataFrame
mydata1.iloc[1,2] # 2 3 ,
58
<class 'numpy.int64'> # []
mydata1.iloc[[1],[2]]
58
<class 'pandas.core.frame.DataFrame'> # []
mydata1.loc[[' ',' '],[' ']] # ,
34
68
mydata1.iloc[1:,[0,2]] # 2 , 1 3
68 58
75 86
94 81
分部行と列を同時に抽出する場合は、上記単独で行と列を抽出する方式を併用します。全体のDataFrameの対象を抽出すると.loc[:]または.iloc[:]ですが、これはあまり意味がありません。まとめ:
(1)DataFrameオブジェクトの.loc[,]および.iloc[,]方法はデータを抽出するために用いられます。loc[,]は行列のラベル名をパラメータとして使用します。iloc[,]は二次元マトリックス要素のメッシュで下付きでパラメータとして表記します。
(2)2つの方法は、2つのパラメータを受け入れます。最初は「行ラベル」または「行列行番号」、2番目は「列ラベル」または「行列列番号」です。
(3)2つの方法は、1つの入力パラメータのみを指定すると、すべてが「行」に関連して黙示され、列はすべて選択されます。行と列の指定が必要な場合は、間をカンマで区切ることが大切です。そうでないとエラーが発生します。
(4)すべての行のいくつかの列を選択する必要がある場合は、行パラメータを省略し、列パラメータを指定する必要があります。列パラメータの前に「:」を付ける必要があります。形はloc[:列パラメータ],iloc[:列パラメータ]のようです。
(5).loc[,],iloc[,]は一つか二つの入力パラメータを設定していますが、肝心な点は「,」があるかどうかを確認して、二つのパラメータを分離して、カンマが一つのパラメータの内部コンマであるかを区別します。また、行列パラメータを分けるコンマもあります。
(6)二つのパラメータの概念区分について.loc['国語'、'数学']というのは二つのパラメータを入力したことを示しています。行パラメータは‘国語’で、列パラメータは‘数学’です。上の表にとっては間違っています。'数学'という列がないので、[[国語]、'数学']と書くべきです。ここのコンマは行と列を区切るものではなく、行リストのコンマだけです。国語','数学'''=''国語','数学',''','=''',''国語','数学',:'はいずれも1行のパラメータだけを表しています。列はすべて選択されています。
ここで、pandsでDataFrameオブジェクトを利用したデータ抽出方法について紹介します。これに関連して、pands.loc[]、.iloc[]が抽出したデータの内容を紹介します。以前の記事を検索したり、次の関連記事を見たりしてください。よろしくお願いします。