8.1.4 データのクレンジング
分析用のデータを準備する際の一般的なステップは、一部の値を削除してデータを変換することです。
drop
、drop_duplicates
およびdropna
メソッドを使用して、不要なデータをフィルタ処理で除外できます。
例8-7 データのフィルタリング
この例では、drop
メソッドを使用して列を削除する方法、dropna
メソッドを使用して欠損値を削除する方法、およびdrop_duplicates
メソッドを使用して重複する値を削除する方法を示します。
import pandas as pd
import oml
df = pd.DataFrame({'numeric': [1, 1.4, -4, -4, 5.432, None, None],
'string1' : [None, None, 'a', 'a', 'a', 'b', None],
'string2': ['x', None, 'z', 'z', 'z', 'x', None]})
oml_df = oml.push(df, dbtypes = {'numeric': 'BINARY_DOUBLE',
'string1':'CHAR(1)',
'string2':'CHAR(1)'})
# Drop rows with any missing values.
oml_df.dropna(how='any')
# Drop rows in which all column values are missing.
oml_df.dropna(how='all')
# Drop rows in which any numeric column values are missing.
oml_df.dropna(how='any', subset=['numeric'])
# Drop duplicate rows.
oml_df.drop_duplicates()
# Drop rows that have the same value in column 'string1' and 'string2'.
oml_df.drop_duplicates(subset=['string1', 'string2'])
# Drop column 'string2'
oml_df.drop('string2')
この例のリスト
>>> import pandas as pd
>>> import oml
>>>
>>> df = pd.DataFrame({'numeric': [1, 1.4, -4, -4, 5.432, None, None],
... 'string1' : [None, None, 'a', 'a', 'a', 'b', None],
... 'string2': ['x', None, 'z', 'z', 'z', 'x', None]})
>>> oml_df = oml.push(df, dbtypes = {'numeric': 'BINARY_DOUBLE',
... 'string1':'CHAR(1)',
... 'string2':'CHAR(1)'})
>>>
>>> # Drop rows with any missing values.
... oml_df.dropna(how='any')
numeric string1 string2
0 -4.000 a z
1 -4.000 a z
2 5.432 a z
>>>
>>> # Drop rows in which all column values are missing.
... oml_df.dropna(how='all')
numeric string1 string2
0 1.000 None x
1 1.400 None None
2 -4.000 a z
3 -4.000 a z
4 5.432 a z
5 NaN b x
>>>
>>> # Drop rows in which any numeric column values are missing.
... oml_df.dropna(how='any', subset=['numeric'])
numeric string1 string2
0 1.000 None x
1 1.400 None None
2 -4.000 a z
3 -4.000 a z
4 5.432 a z
>>>
>>> # Drop duplicate rows.
... oml_df.drop_duplicates()
numeric string1 string2
0 5.432 a z
1 1.000 None x
2 -4.000 a z
3 NaN b x
4 1.400 None None
5 NaN None None
>>>
>>> # Drop rows that have the same value in columns 'string1' and 'string2'.
... oml_df.drop_duplicates(subset=['string1', 'string2'])
numeric string1 string2
0 -4.0 a z
1 1.4 None None
2 1.0 None x
3 NaN b x
>>>
>>> # Drop the column 'string2'.
... oml_df.drop('string2')
numeric string1
0 1.000 None
1 1.400 None
2 -4.000 a
3 -4.000 a
4 5.432 a
5 NaN b
6 NaN None
親トピック: データの準備