1
votes

Est-ce que iloc [:, 1: 2]. values ​​et .iloc [:, 1] .values ​​fonctionnent différemment?

Si je découpe un pandas dataframe avec dataset.iloc [:, 1: 2] .values ​​, cela me donne un 2 dimensions (matrice) données structurées où dataset.iloc [:, 1] .values ​​ me donne des données 1 dimension . Donc, mon doute est que iloc [:, 1: 2] & iloc [:, 1] ne font pas la même chose?

Voici l'exemple de code:

    >>> df1 = df.iloc[:, 1:2].values
    >>> print(df1.shape,df1.ndim)
    (9578, 1) 2
    >>> df2 = df.iloc[:, 1].values
    >>> print(df2.shape,df2.ndim)
    (9578,) 1
    >>>


2 commentaires

Puisque vous obtenez des résultats différents, il est assez prudent de dire qu'ils ne font pas la même chose.


.iloc [:, 1] renvoie une série tandis que .iloc [:, 1: 2] renvoie une trame de données. C'est la même chose que df ['A'] renvoie la série tandis que df [['A']] renvoie la trame de données


4 Réponses :


4
votes

df.iloc [:, 1: 2] renvoie un dataframe (matrice) tandis que df.iloc [:, 1] renvoie une série (vecteur). Un vecteur n'a pas de taille de colonne. Essayez ceci si vous souhaitez conserver la structure du dataframe

df.iloc[:,[1]]


0 commentaires

2
votes

Techniquement parlant, la méthode de découpage que vous utilisez est appelée " Sélection par position ". iloc est appelé emplacement basé sur un entier.

Lorsque vous utilisez df.iloc [:, 1: 2] , la sortie résultante serait un objet pandas DataFrame: p >

>>> type(df.iloc[:, 1])
pandas.core.series.Series

Lorsque vous utilisez df.iloc [:, 1] , la sortie résultante serait un objet de la série pandas:

>>> type(df.iloc[:, 1:2])
pandas.core.frame.DataFrame


0 commentaires

0
votes

Oui, iloc [:, 1: 2] & iloc [:, 1] ils ne sont pas similaires car l'un donne Dataframe et l'autre donne Serious en sortie.

Utilisation df.iloc [:, 1: 2] donne Dataframe et il donne en 2D car Dataframe est une structure de données 2D

type(df.iloc[:, 1])
pandas.core.series.Series

Utilisation de df.iloc [:, 1] donne Series and Series est un tableau étiqueté 1-d

type(df.iloc[:, 1:2])
pandas.core.frame.DataFrame


0 commentaires

0
votes

Pandas iloc () fait en fait ce que vous devez attendre dans un contexte Python. Comparez ce qui suit:

>>> numbers = [0, 1, 2]
>>> numbers[1]
1
>>> numbers[1:2]
[1]

Le premier donne des données à 0 dimension et le second des données à une dimension qui sont analogues à votre exemple.


0 commentaires