Spec-Zone.ru › pandas 0.25

Работа с пропущенными данными

В этом разделе мы обсудим пропущенные (также обозначаемые как 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API