Python入門 Pandas基礎②

はじめに

Pandas基礎①に続いて、Pythonのデータ分析において必須のライブラリである、Pandasについてまとめます。

データの選択と抽出

DataFrameの作成

df.loc

df.loc['A']

# output
'''
C1    1.764052
C2    0.400157
C3    0.978738
C4    2.240893
C5    1.867558
Name: A, dtype: float64
'''
df.loc['A', ['C1', 'C3']]
# output
'''
C1    1.764052
C3    0.978738
Name: A, dtype: float64
'''

df.iloc

df.iloc[2, 3]
# 0.121675

スライス(:)で複数行・複数列を指定できます。

df.iloc[:3, 1]
’’’
A    0.400157
B    0.950088
C    1.454274
Name: C2, dtype: float64
’’’

条件による選択

df[df > 0]
df[df['C1'] > 0]
df[(df['C1'] > 0) & (df['C1'] < 1)]

データの追加と削除

データの追加

df['new_column'] = df['C1'] * df['C2']
df

データの削除

データの削除に使用するdropメソッドは、行名・列名をそれぞれ指定することが出来ます。inplace引数をTrueにすると、元のdfが更新されます。

# この場合は更新されない
df.drop(columns=['C1'])
df
# DataFrameが更新される
df.drop(columns=['C1'], inplace=True)
df

欠損値の処理

欠損値nan(not a number)を処理する場合は、次のメソッドが便利です。

df = pd.DataFrame(data=[[1, 2, 3, np.nan, 4], 
                        [5, np.nan, 6, np.nan, 7],
                        [8, 9, 10, np.nan, 11],
                        [12, np.nan, np.nan, np.nan, 13],
                        [14, 15, 16, 17, 18]],
                  index=['A', 'B', 'C', 'D', 'E'],
                  columns=['C1', 'C2', 'C3', 'C4', 'C5'])
df

df.dropna

欠損しているデータを削除

df.dropna()

特定の列の欠損値がある部分を削除

df[df['C2'].isnull() == False]

欠損値の数を指定して削除

df.dropna(thresh=3)

列の削除

df.dropna(thresh=3, axis=1)

df.fillna

欠損値を別の値で埋めます。次の場合は平均値に置換しています。

df['C2'].fillna(df['C2'].mean())
df.fillna(df.mean())

引き続き、Pandasについてまとめていきます。