PandsでSeriesとDataFrameのインデックスが実現されます。


本文
SeriesオブジェクトとDataFrameオブジェクトをインデックスするときは、下記の索引を使用するか、キーワードを使って索引を行うかを明確にします。例えばリストが索引を行うときは下付きを使いますが、dict索引の場合はキーワードを使います。
下付き索引を使用する場合は、下付きは常に0から始まり、かつインデックス値は常に数字です。キーワードを使って索引を行います。キーワードはkeyの中の値です。数字でもいいし、文字列でもいいです。
Series対象紹介:
Seriesオブジェクトはインデックスindexと値valuesからなり、一つのindexは一つのvalueに対応します。その中でindexはpandsのIndexオブジェクトです。valuesはnumpyの配列オブジェクトです。

import pandas as pd
s1 = pd.Series([2,3,4,5], index=['a', 'b', 'c', 'd'])
print(s1)
  :
a  2
b  3
c  4
d  5
dtype: int64

print(s1.index)
  :
Index(['a', 'b', 'c', 'd'], dtype='object')

print(s1.values)
  :
[2 3 4 5]
Seriesオブジェクトの索引はどうやって行いますか?
1:indexの値を使って索引を作成します。

print(s1['a'])
  :
2

print(s1[['a','d']])
  :
a  2
d  5
dtype: int64


print(s1['b':'d'])
  (  ,           ):
b  3
c  4
d  5
dtype: int64
2:下付きで索引を作成します。 

print(s1[0])
  :
2

print(s1[[0,3]])
  :
a  2
d  5
dtype: int64

print(s1[1:3])
  (  :                 ,       ):
b  3
c  4
dtype: int64

3:特殊な状況:
上のindexは文字列です。indexが数字なら、インデックスをindexの値で行いますか?それとも下付きで行いますか? 

s1 = pd.Series([2,3,4,5], index=[1,2,3,4])
print(s1[2])
  :
3
print(s1[0])    

print(s1[[2,4]])
  :
2  3
4  5
dtype: int64

print(s1[1:3])
  :
2  3
3  4
dtype: int64
indexが整数の場合、最初の2つの選択はindexの値を用いてインデックス化され、その後の1つのスライスは下付きのインデックスを選択して使用されることがわかる。
4:ブールSeriesを使ってインデックスを作成します。
ブールSeriesを使ってインデックスを行う場合は、ブールSeriesと私たちのインデックスオブジェクトと同じindexが必要です。

s1 = pd.Series([2,3,4,5], index=['a', 'b', 'c', 'd']
print(s1 > 3)
  (    bool Series):
a  False
b  False
c   True
d   True
dtype: bool

print(s1[s1 > 3])
  (    bool Series   Series       ):
c  4
d  5
dtype: int64

5:Indexオブジェクトを使用した索引
Indexオブジェクトを使って索引を行う場合と、使用値インデックスとは本質的な違いがありません。Indexにも多くの値が入っていますので、Indexをリストとして見ることができます。
DataFrameオブジェクト紹介:
DataFrameオブジェクトは行列からなる表です。DataFrameの行はcolumnsからなり、列はindexからなり、それらはすべてIndexオブジェクトです。その値はnumpy配列です。

data = {'name':['ming', 'hong', 'gang', 'tian'], 'age':[12, 13, 14, 20], 'score':[80.3, 88.2, 90, 99.9]}
df1 = pd.DataFrame(data)

print(df1.index)
  :
RangeIndex(start=0, stop=4, step=1)

print(df1.columns)
  :
Index(['age', 'name', 'score'], dtype='object')

print(df1.values)
  :
[[12 'ming' 80.3]
 [13 'hong' 88.2]
 [14 'gang' 90.0]
 [20 'tian' 99.9]]
どのようにDataFrameオブジェクトをインデックスするか?
1:columnsの値を使って列を索引する
  columnsの値を直接使用して索引を行います。得られたのは一列または複数列の値です。

print(df1['name'])
  :
0  ming
1  hong
2  gang
3  tian
Name: name, dtype: object

print(df1[['name','age']])
  :
name age
0 ming  12
1 hong  13
2 gang  14
3 tian  20
  :               ,   columns      。          
print(df1[0])
2:スライスまたはブールSeriesで行をインデックスします。
スライスインデックスまたはブールタイプSeriesを使ってインデックスを作成します。

print(df1[0:3])
        ,  :
age name score
0  12 ming  80.3
1  13 hong  88.2
2  14 gang  90.0

print(df1[ df1['age'] > 13 ])
      Series    ,        Series DataFrame    index,  :
age name score
2  14 gang  90.0
3  20 tian  99.9

3:locとilocを使ってインデックスを作成する
本質的にはlocはindexとcolumnsの中の値でインデックスしていますが、ilocはindexとcolumnsの中の値を無視しています。永遠に0からの下付きでインデックスしています。ですから、この言葉を理解すると、下の索引はとても簡単になります。

print(df1.loc[3])
  :
name   hong
score  88.2
Name: 3, dtype: object

print(df1.loc[:,'age'])
  :
1  12
3  13
4  14
5  20
Name: age, dtype: int64

print(df1.iloc[3])
  :
age    20
name   tian
score  99.9
Name: 5, dtype: object

print(df1.iloc[:,1])
  :
1  ming
3  hong
4  gang
5  tian
Name: name, dtype: object

以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。