Работа с пропущенными данными
В этом разделе мы обсудим пропущенные (также обозначаемые как NA) значения в pandas.
Примечание
Выбор использования NaN для обозначения пропущенных данных в основном обусловлен простотой и производительностью. Это отличается от подхода MaskedArray, например, scikits.timeseries. Мы надеемся, что NumPy вскоре предоставит решение с собственным типом NA (похожее на R), достаточно эффективное для использования в pandas.
См. пособие для некоторых расширенных стратегий.
Значения, считающиеся «пропущенными»
Поскольку данные имеют множество форм, pandas стремится к гибкости в отношении обработки пропущенных данных. Хотя NaN является по умолчанию маркером пропущенного значения по причинам вычислительной скорости и удобства, нам необходимо иметь возможность легко определять это значение с данными различных типов: с плавающей точкой, целыми числами, булевыми и общими объектами. Однако во многих случаях возникает Python None, и мы также хотим рассматривать его как «пропущенное» или «недоступное» или «NA».
Примечание
Если вы хотите считать inf и -inf «NA» в вычислениях, вы можете установить pandas.options.mode.use_inf_as_na = True.
In [1]: df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f', 'h'],
...: columns=['one', 'two', 'three'])
...:
In [2]: df['four'] = 'bar'
In [3]: df['five'] = df['one'] > 0
In [4]: df
Out[4]:
one two three four five
a 0.469112 -0.282863 -1.509059 bar True
c -1.135632 1.212112 -0.173215 bar False
e 0.119209 -1.044236 -0.861849 bar True
f -2.104569 -0.494929 1.071804 bar False
h 0.721555 -0.706771 -1.039575 bar True
In [5]: df2 = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
In [6]: df2
Out[6]:
one two three four five
a 0.469112 -0.282863 -1.509059 bar True
b NaN NaN NaN NaN NaN
c -1.135632 1.212112 -0.173215 bar False
d NaN NaN NaN NaN NaN
e 0.119209 -1.044236 -0.861849 bar True
f -2.104569 -0.494929 1.071804 bar False
g NaN NaN NaN NaN NaN
h 0.721555 -0.706771 -1.039575 bar True
Для облегчения обнаружения пропущенных значений (и в различных типах массивов) pandas предоставляет функции isna() и notna(), которые также являются методами объектов Series и DataFrame:
In [7]: df2['one'] Out[7]: a 0.469112 b NaN c -1.135632 d NaN e 0.119209 f -2.104569 g NaN h 0.721555 Name: one, dtype: float64 In [8]: pd.isna(df2['one'])
© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.24.2/user_guide/missing_data.html