PandsでSeriesとDataFrameのインデックスが実現されます。
4690 ワード
本文
SeriesオブジェクトとDataFrameオブジェクトをインデックスするときは、下記の索引を使用するか、キーワードを使って索引を行うかを明確にします。例えばリストが索引を行うときは下付きを使いますが、dict索引の場合はキーワードを使います。
下付き索引を使用する場合は、下付きは常に0から始まり、かつインデックス値は常に数字です。キーワードを使って索引を行います。キーワードはkeyの中の値です。数字でもいいし、文字列でもいいです。
Series対象紹介:
Seriesオブジェクトはインデックスindexと値valuesからなり、一つのindexは一つのvalueに対応します。その中でindexはpandsのIndexオブジェクトです。valuesはnumpyの配列オブジェクトです。
1:indexの値を使って索引を作成します。
上のindexは文字列です。indexが数字なら、インデックスをindexの値で行いますか?それとも下付きで行いますか?
4:ブールSeriesを使ってインデックスを作成します。
ブールSeriesを使ってインデックスを行う場合は、ブールSeriesと私たちのインデックスオブジェクトと同じindexが必要です。
Indexオブジェクトを使って索引を行う場合と、使用値インデックスとは本質的な違いがありません。Indexにも多くの値が入っていますので、Indexをリストとして見ることができます。
DataFrameオブジェクト紹介:
DataFrameオブジェクトは行列からなる表です。DataFrameの行はcolumnsからなり、列はindexからなり、それらはすべてIndexオブジェクトです。その値はnumpy配列です。
1:columnsの値を使って列を索引する
columnsの値を直接使用して索引を行います。得られたのは一列または複数列の値です。
スライスインデックスまたはブールタイプSeriesを使ってインデックスを作成します。
本質的にはlocはindexとcolumnsの中の値でインデックスしていますが、ilocはindexとcolumnsの中の値を無視しています。永遠に0からの下付きでインデックスしています。ですから、この言葉を理解すると、下の索引はとても簡単になります。
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
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。