Spec-Zone.ru › pandas 0.23

Работа с отсутствующими данными

В этом разделе мы обсудим отсутствующие (также обозначаемые как NA) значения в pandas.

Примечание

Выбор использования NaN для обозначения отсутствующих данных в основном обусловлен простотой и производительностью. Это отличается от подхода MaskedArray, например, scikits.timeseries. Мы надеемся, что NumPy вскоре сможет предоставить решение с родным типом NA (аналогичное R), достаточно эффективное для использования в pandas.

См. справочник для некоторых продвинутых стратегий.

Основы работы с отсутствующими данными

Когда/почему данные могут отсутствовать?

Некоторые могут поспорить о нашем использовании термина «отсутствующий». Под «отсутствующим» мы просто подразумеваем NA («недоступно») или «не присутствует по какой-либо причине». Многие наборы данных изначально содержат отсутствующие данные, либо потому, что они существовали, но не были собраны, либо потому, что они никогда не существовали. Например, в коллекции финансовых временных рядов некоторые временные ряды могут начинаться в разные даты. Таким образом, значения до даты начала обычно отмечаются как отсутствующие.

В pandas одним из наиболее распространенных способов введения отсутствующих данных в набор данных является переиндексация. Например:

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.166778  0.501113 -0.355322  bar  False
c -0.337890  0.580967  0.983801  bar  False
e  0.057802  0.761948 -0.712964  bar   True
f -0.443160 -0.974602  1.047704  bar  False
h -0.717852 -1.053898 -0.019369  bar  False

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.166778  0.501113 -0.355322  bar  False
b       NaN       NaN       NaN  NaN    NaN
c -0.337890  0.580967  0.983801  bar  False
d       NaN       NaN       NaN  NaN    NaN
e  0.057802  0.761948 -0.712964  bar   True
f -0.443160 -0.974602  1.047704  bar  False
g       NaN       NaN       NaN  NaN    NaN
h -0.717852 -1.053898 -0.019369  bar  False

Значения, рассматриваемые как «отсутствующие»

Поскольку данные могут иметь различные формы, pandas стремится к гибкости в обработке отсутствующих данных. Хотя NaN является значением по умолчанию для обозначения отсутствующих данных по соображениям вычислительной скорости и удобства, нам необходимо иметь возможность легко определять это значение с данными разных типов: с плавающей точкой, целыми числами, булевыми значениями и общими объектами. Однако во многих случаях возникает Python None, и мы также хотим рассматривать его как «отсутствующий» или «недоступный», или «NA».

Примечание

Если вы хотите рассматривать inf и -inf как «NA» при вычислениях, вы можете установить pandas.options.mode.use_inf_as_na = True.

Для упрощения обнаружения отсутствующих значений (и для различных типов массивов) pandas предоставляет функции isna() и notna(), которые также являются методами объектов Series и DataFrame:

In [7]: df2['one']
Out[7]: 
a   -0.166778
b         NaN
c   -0.337890
d         NaN
e    0.057802
f   -0.443160
g         NaN
h   -0.717852
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.23.4/missing_data.html

Spec-Zone.ru

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