python pandas dataframeのデータを4則演算およびフィルタリングする

15560 ワード

dataframeの行に対して、列は4つの演算を加減します
まずdataframeを構築します
import pandas as pd
d={'one':{'a':1,'b':2,'c':3,'d':4},'two':{'a':5,'b':6,'c':7,'d':8},'three':{'a':9,'b':10,'c':11,'d':12}}
df=pd.DataFrame(d)
print(df)

出力結果:
one two three a 1 5 9 b 2 6 10 c 3 7 11 d 4 8 12
加算を例にdataframeを処理する
各行の合計を計算
df['sum']=df['one']+df['two']+df['three']
print(df)

出力結果:
one two three sum a 1 5 9 15 b 2 6 10 18 c 3 7 11 21 d 4 8 12 24
各列の合計を計算
df.loc['sum']=df.loc['a']+df.loc['b']+df.loc['c']+df.loc['d']
print(df)

出力結果:
one two three sum a 1 5 9 15 b 2 6 10 18 c 3 7 11 21 d 4 8 12 24 sum 10 26 42 78
pandasによるデータの処理は、行全体または列全体で処理されると理解できる
Dataframeのデータのフィルタリング
まずdataframeを再構築
import pandas as pd
d={'one':{'a':1,'b':2,'c':3,'d':4},'two':{'a':5,'b':6,'c':7,'d':8},'three':{'a':9,'b':10,'c':11,'d':12}}
df=pd.DataFrame(d)
print(df)

出力結果:
one two three a 1 5 9 b 2 6 10 c 3 7 11 d 4 8 12
Dataframeの3番目の列が10より大きい行をフィルタします.
df['three']>10
print(df)

出力結果:
a False b False c True d True Name: three, dtype: bool
Trueはdataframeの3番目の列が10より大きい行を表し、Falseは10以下の行を表します.この2行の内容は何ですか.
df1=df[df['three']>10]
print(df1)

出力結果:
one two three c 3 7 11 d 4 8 12
Dataframeの2番目の列が8未満で、(&)3番目の列が10より大きい行をフィルタします.
また、「&」で関係を表し、2つのフィルタ条件に括弧を付けることを覚えています.
print((df['two']<8)&(df['three']>10))

出力結果:
a False b False c True d False dtype: bool
df2=df[(df['two']<8)&(df['three']>10)]
print(df2)

出力結果:
one two three c 3 7 11
これがフィルタされた行ですが、seriesではなくdataframeです.
print(type(df2))

出力結果:
Dataframeの2番目の列が6未満、または(|)3番目の列が10より大きい行をフィルタします.
またはパイプ記号「|」で関係を表す
print((df['two']<6)|(df['three']>10))

出力結果:
a True b False c True d True dtype: bool
df3=df[(df['two']<6)|(df['three']>10)]
print(df3)

出力結果:
one two three a 1 5 9 c 3 7 11 d 4 8 12
Dataframeで特定の条件を満たす要素をフィルタします.
Dataframeの5より大きい要素をフィルタします
print(df>5)

結果:
one two three a False False True b False True True c False True True d False True True
print(df[df>5])

結果:
one two three a NaN NaN 9 b NaN 6.0 10 c NaN 7.0 11 d NaN 8.0 12
リスト=[2,4,6,8,10]のdataframeの要素をフィルタ
list=[2,4,6,8,10]
print(df.isin(list))

出力結果:
one two three a False False False b True True True c False False False d True True False
print(df[df.isin(list)])

出力結果:
one two three a NaN NaN NaN b 2.0 6.0 10.0 c NaN NaN NaN d 4.0 8.0 NaN