HOME


sh-3ll 1.0
DIR:/usr/local/lib64/python3.6/site-packages/pandas/core/arrays/__pycache__/
Upload File :
Current File : //usr/local/lib64/python3.6/site-packages/pandas/core/arrays/__pycache__/masked.cpython-36.pyc
3

���h�,�@sddlmZmZmZmZmZddlZddlm	Z	m
Zddlm
Z
ddlmZddlmZddlmZddlmZmZmZmZdd	lmZmZdd
lmZddlmZm Z ddl!m"Z"dd
l#m$Z$m%Z%ddl&m'Z'er�ddl(m)Z)eddd�Z*Gdd�de�Z+Gdd�de$e%�Z,dS)�)�
TYPE_CHECKING�Optional�Tuple�Type�TypeVarN)�lib�missing)�Scalar)�AbstractMethodError)�doc)�ExtensionDtype)�
is_integer�is_object_dtype�	is_scalar�is_string_dtype)�isna�notna)�nanops)�_factorize_array�take)�masked_reductions)�ExtensionArray�ExtensionOpsMixin)�check_array_indexer)�Series�BaseMaskedArrayT�BaseMaskedArray)Zboundc@s@eZdZdZejZeej	d�dd��Z
eedd�dd��Z
dS)	�BaseMaskedDtypez@
    Base class for dtypes for BasedMaskedArray subclasses.
    )�returncCst�dS)N)r
)�self�r �;/tmp/pip-build-5_djhm0z/pandas/pandas/core/arrays/masked.py�numpy_dtype'szBaseMaskedDtype.numpy_dtypercCst�dS)zq
        Return the array type associated with this dtype.

        Returns
        -------
        type
        N)�NotImplementedError)�clsr r r!�construct_array_type+s	z$BaseMaskedDtype.construct_array_typeN)�__name__�
__module__�__qualname__�__doc__�
libmissing�NA�na_value�property�np�dtyper"�classmethodrr%r r r r!r src@s�eZdZUdZed;ejejed�dd�Z	e
ed�dd��Zd	d
�Z
eejejfd�dd�Zd
d�dd�Zdd�Zed�dd�Zeed�dd�Zd
dejfeeejd�dd�ZdZd<ejd�dd�Zd=dd�Ze
ed�dd ��Zejd�d!d"�Ze
d#d$��Ze
ed�d%d&��Ze e!eed'�d(d)��Z"d>eee#eed*�d+d,�Z$eed�d-d.�Z%e&e'j(�d@eeeje'fd0�d1d2��Z(dAed4d5�d6d7�Z)dBe*ed8�d9d:�Z+d
S)Crzf
    Base class for masked arrays (which use _data and _mask to store the data).

    numpy based
    F)�values�mask�copycCsht|tj�o|jtjks td��|jdks2td��|jdksDtd��|rX|j�}|j�}||_	||_
dS)NzGmask should be boolean numpy array. Use the 'pd.array' function instead�zvalues must be a 1D arrayzmask must be a 1D array)�
isinstancer.�ndarrayr/Zbool_�	TypeError�ndim�
ValueErrorr3�_data�_mask)rr1r2r3r r r!�__init__As

zBaseMaskedArray.__init__)rcCst|��dS)N)r
)rr r r!r/TszBaseMaskedArray.dtypecCsHt|�r$|j|r|jjS|j|St||�}t|�|j||j|�S)N)r
r;r/r,r:r�type)r�itemr r r!�__getitem__Xs


zBaseMaskedArray.__getitem__cCst|��dS)N)r
)rr1r r r!�_coerce_to_arraybsz BaseMaskedArray._coerce_to_arrayNcCsVt|�}|r|g}|j|�\}}|r4|d}|d}t||�}||j|<||j|<dS)Nr)rr@rr:r;)r�key�valueZ
_is_scalarr2r r r!�__setitem__es

zBaseMaskedArray.__setitem__ccs<x6tt|��D]&}|j|r(|jjVq|j|VqWdS)N)�range�lenr;r/r,r:)r�ir r r!�__iter__ss
zBaseMaskedArray.__iter__cCs
t|j�S)N)rEr:)rr r r!�__len__zszBaseMaskedArray.__len__)rrcCst|�|j|j�S)N)r=r:r;)rr r r!�
__invert__}szBaseMaskedArray.__invert__)r3r,rcCsz|tjkrtj}|dkrt}|jrft|�p0t|�rN|tjkrNtd|�d���|j	j
|�}|||j<n|j	j
||d�}|S)aF
        Convert to a NumPy Array.

        By default converts to an object-dtype NumPy array. Specify the `dtype` and
        `na_value` keywords to customize the conversion.

        Parameters
        ----------
        dtype : dtype, default object
            The numpy dtype to convert to.
        copy : bool, default False
            Whether to ensure that the returned value is a not a view on
            the array. Note that ``copy=False`` does not *ensure* that
            ``to_numpy()`` is no-copy. Rather, ``copy=True`` ensure that
            a copy is made, even if not strictly necessary. This is typically
            only possible when no missing values are present and `dtype`
            is the equivalent numpy dtype.
        na_value : scalar, optional
             Scalar missing value indicator to use in numpy array. Defaults
             to the native missing value indicator of this array (pd.NA).

        Returns
        -------
        numpy.ndarray

        Examples
        --------
        An object-dtype is the default result

        >>> a = pd.array([True, False, pd.NA], dtype="boolean")
        >>> a.to_numpy()
        array([True, False, <NA>], dtype=object)

        When no missing values are present, an equivalent dtype can be used.

        >>> pd.array([True, False], dtype="boolean").to_numpy(dtype="bool")
        array([ True, False])
        >>> pd.array([1, 2], dtype="Int64").to_numpy("int64")
        array([1, 2])

        However, requesting such dtype will raise a ValueError if
        missing values are present and the default missing value :attr:`NA`
        is used.

        >>> a = pd.array([True, False, pd.NA], dtype="boolean")
        >>> a
        <BooleanArray>
        [True, False, <NA>]
        Length: 3, dtype: boolean

        >>> a.to_numpy(dtype="bool")
        Traceback (most recent call last):
        ...
        ValueError: cannot convert to bool numpy array in presence of missing values

        Specify a valid `na_value` instead

        >>> a.to_numpy(dtype="bool", na_value=False)
        array([ True, False, False])
        Nzcannot convert to 'zZ'-dtype NumPy array with missing values. Specify an appropriate 'na_value' for this dtype.)r3)r�
no_defaultr*r+�object�_hasnarrr9r:�astyper;)rr/r3r,�datar r r!�to_numpy�s?

zBaseMaskedArray.to_numpyi�cCs|j|d�S)z|
        the array interface, return my values
        We return an object array here to preserve our scalar values
        )r/)rO)rr/r r r!�	__array__�szBaseMaskedArray.__array__cCsddl}|j|j|j|d�S)z6
        Convert myself into a pyarrow Array.
        rN)r2r=)Zpyarrow�arrayr:r;)rr=�par r r!�__arrow_array__�szBaseMaskedArray.__arrow_array__cCs
|jj�S)N)r;�any)rr r r!rL�szBaseMaskedArray._hasnacCs|jS)N)r;)rr r r!r�szBaseMaskedArray.isnacCs|jjS)N)r/r,)rr r r!�	_na_value�szBaseMaskedArray._na_valuecCs|jj|jjS)N)r:�nbytesr;)rr r r!rV�szBaseMaskedArray.nbytes)r$rcCs2tjdd�|D��}tjdd�|D��}|||�S)NcSsg|]
}|j�qSr )r:)�.0�xr r r!�
<listcomp>�sz5BaseMaskedArray._concat_same_type.<locals>.<listcomp>cSsg|]
}|j�qSr )r;)rWrXr r r!rY�s)r.�concatenate)r$Z	to_concatrNr2r r r!�_concat_same_type�sz!BaseMaskedArray._concat_same_type)r�
allow_fill�
fill_valuercCsrt|�r|jn|}t|j|||d�}t|j|d|d�}|r`t|�r`tj|�dk}|||<||A}t|�||dd�S)N)r]r\Tr4F)r3���)	r�_internal_fill_valuerr:r;rr.Zasarrayr=)rZindexerr\r]Zdata_fill_value�resultr2Z	fill_maskr r r!r�szBaseMaskedArray.takecCs0|j|j}}|j�}|j�}t|�||dd�S)NF)r3)r:r;r3r=)rrNr2r r r!r3szBaseMaskedArray.copyr4)�na_sentinelrcCsT|j}|j}t|||d�\}}|j|jjdd�}t|�|tjt	|�t
d��}||fS)N)rar2F)r3)r/)r:r;rrMr/r"r=r.�zerosrE�bool)rraZarrr2�codesZuniquesr r r!�	factorizeszBaseMaskedArray.factorizeTr)�dropnarc
Cs�ddlm}m}ddlm}|j|j}||�j�}|jj	j
t�}|rP|j	}nVtj
t|�ddd�}||dd
�<|jj�|d<|tj|tj|jjgtd�g�td�}tjt|�dd�}	|||	�}|||d	�S)aA
        Returns a Series containing counts of each unique value.

        Parameters
        ----------
        dropna : bool, default True
            Don't include counts of missing values.

        Returns
        -------
        counts : Series

        See Also
        --------
        Series.value_counts
        r)�Indexr)�IntegerArrayr4Zint64)r/Nrc)�indexr^r^)�pandasrgrZ
pandas.arraysrhr:r;�value_countsriZ_valuesrMrKr.�emptyrE�sumrZrQr/r,rb)
rrfrgrrhrNrkri�countsr2r r r!rk)s 
zBaseMaskedArray.value_counts)�name�skipnacKs�|j}|j}|dkr4tt|�}|||fd|i|��S|jrJ|jdtjd�}ttd|�}||fd	||d
�|��}tj	|�r�t
jS|S)Nrm�prod�min�maxrpZfloat64)r,�nanr)Zaxisrpr2>rmrqrrrs)r:r;�getattrrrLrOr.rtr�isnanr*r+)rrorp�kwargsrNr2�opr`r r r!�_reduceXs

zBaseMaskedArray._reduce)F)N)N)FNr^)r^)T)T),r&r'r(r)r	r_r.r6rcr<r-rr/r?rr@rCrG�intrHrrIrrJrOZ__array_priority__rPrSrLrrUrVr0rr[rrr3rrrerk�strryr r r r!r7s@

R
/)-ZtypingrrrrrZnumpyr.Zpandas._libsrrr*Zpandas._typingr	Z
pandas.errorsr
Zpandas.util._decoratorsrZpandas.core.dtypes.baserZpandas.core.dtypes.commonr
rrrZpandas.core.dtypes.missingrrZpandas.corerZpandas.core.algorithmsrrZpandas.core.array_algosrZpandas.core.arraysrrZpandas.core.indexersrrjrrrrr r r r!�<module>s$