[PYTHON] Fonctionnement de base des pandas

À propos des pandas

Étant donné que pandas est une opération de données basée sur numpy, cela est pratique car l'opération de numpy peut être utilisée telle quelle. Cependant, il est difficile de comprendre comment extraire des lignes et des colonnes tant que vous ne vous y êtes pas habitué. Je ne suis toujours pas familier avec cela, alors je vais l'écrire.

DataFrame et série

Il existe deux types de formats de données dans les pandas, DataFrame et Series. Les premières sont des données bidimensionnelles et les secondes sont des données unidimensionnelles. Fondamentalement, Series est rarement utilisé, nous allons donc nous concentrer sur DataFrame. Lorsqu'une colonne est spécifiée et extraite de DataFrame, elle devient de type Series.

# DataFrame
   foo  bar
a    0    1
b    2    3
c    4    5

# Series
a    0
b    2
c    4

Opérations DataFrame

index et colonne

Dans DataFrame, les numéros d'élément tels que numpy tels que la nième ligne et la mième colonne et les spécifications d'élément définies par l'utilisateur par index et colonne peuvent être spécifiés comme informations de position d'élément. Sauf indication contraire, un numéro est attribué, mais il n'est pas utilisé en pratique car il est identique à numpy dans un tel usage. Personnellement, je me demande aussi si l'index peut être un nombre.

Spécification de l'index et des colonnes

Pour spécifier l'index et les colonnes, procédez comme suit.

df.columns = ['foo', 'bar']
df.index = ['a', 'b', 'c']

En outre, pour vérifier l'index et le nom des colonnes du DataFrame, procédez comme suit.

df.columns
df.index
df.info() # columns, index, memory usage

Extraction de colonne la plus simple

Dans DataFrame, la spécification de la façon de prendre __getitem__ '' est la spécification des colonnes. En outre, le numéro de colonne peut être récupéré, mais dans ce cas, il est nécessaire de spécifier ne serait-ce qu'un seul type de liste. Cependant, le numéro de ligne (index) de l'index ne peut pas être spécifié par cette méthode. Dans le cas de Series, index est spécifié par `` getitem```. C'est naturel car il n'y a qu'une seule colonne.

df['foo'] or df[[0]]  # designate single column
df[['foo', 'bar']] or df[[0, 1]] # designate multi columns

Extraction plus détaillée (ix, iloc, loc)

Comme mentionné ci-dessus, les informations de position des éléments sur le DataFrame incluent le numéro d'élément de la matrice et le nom défini par l'utilisateur. Il existe trois types, ix, iloc et loc, pour préciser lequel est utilisé pour l'extraction. iloc ne peut être spécifié que par numéro, loc ne peut être spécifié que par nom et ix peut être spécifié par les deux. En prenant l'exemple ci-dessus, si vous voulez prendre [0,0], vous pouvez écrire comme suit.

df.ix[[0], [0]]
df.ix[[0], ['foo']]
df.ix[['a'], ['foo']]
df.ix[['a'], [0]]
df.iloc[[0], [0]]
df.loc[['a'], ['foo']]

En passant, si vous souhaitez spécifier plusieurs index, vous pouvez procéder comme suit.

df.ix[:, [0]]   #tout
df.ix[1:5, [0]] #Spécification de la gamme
df.ix[:]        #Spécifier uniquement l'index

Extraction de lignes et de colonnes à partir de conditions spécifiées

Extraction de lignes

Comment extraire des lignes qui remplissent certaines conditions à partir de colonnes spécifiées. Toutes les colonnes de cette colonne sont générées.

print foo.loc[foo['bar'] == condition]

Extraction de colonne

Indirectement, les éléments qui ne remplissent pas les conditions sont rendus NaN, puis les colonnes contenant NaN sont supprimées.

foo = foo[foo == 1] #Tous les éléments qui ne remplissent pas les conditions sont NaN.
foo = foo.dropna(axis=1)

Itérateur

Lors de l'itération pour chaque colonne de pd.DataFrame.

for index, rows in df.iterrows():
    print index, rows # rows: pd.C'est un DataFrame.

Créez et modifiez pd.DataFrame.

#Lors de la création d'un seul navire
foo = pd.DataFrame(columns=['bar', 'baz'])

foo = pd.DataFrame({'bar': [0, 1, 2],
                    'baz': [3, 4, 5]}
                    index=['a', 'b', 'c'])
# foo
    bar  baz
a    0    3
b    1    4
c    2    5

Ajouter une colonne

L'ajout d'une nouvelle colonne est plus simple que l'ajout d'une ligne.

foo['qux'] = [6, 7, 8]
# foo
    bar  baz  qux
a    0    3    6
b    1    4    7
c    2    5    8

Ajouter une ligne

foo = foo.append(pd.DataFrame({'bar': [6, 7], 'baz': [8, 9]}, index=['d', 'e']))
# foo
#Si vous souhaitez modifier l'index, vous devez le spécifier vous-même.
    bar  baz
a    0    3
b    1    4
c    2    5
d    6    7
e    8    9

Supprimez les lignes et les colonnes.

foo.drop('e')
foo.drop('bar', axis=1) #Supprimez la colonne.
del foo['bar'] #Supprimez la colonne.(J'utilise python del.)

URL de référence http://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas

referenced URL: http://sinhrks.hatenablog.com/entry/2014/11/12/233216

Recommended Posts

Fonctionnement de base des pandas
Fonctionnement de base des Pandas
Résumé de l'utilisation de base de Pandas
Fonctionnement de base de Python Pandas Series et Dataframe (1)
Mémorandum d'opération Pandas
J'ai écrit le fonctionnement de base de Pandas dans Jupyter Lab (partie 1)
J'ai écrit le fonctionnement de base de Pandas dans Jupyter Lab (partie 2)
[Python] Opération d'énumération
Fonctionnement automatique de Chrome avec Python + Sélénium + pandas
Utilisation basique de flask-classy
Utilisation de base de Jinja2
Liste des opérations de base de Python3 list, tapple, dictionnaire, set
À propos de MultiIndex of Pandas
Utilisation de base de SQL Alchemy
Connaissance de base de Python
Python Basic --Pandas, Numpy-
Prenez note de la liste des utilisations de base de Pandas
Application Python: Pandas Partie 1: Basique
Utilisation super basique de pytest
Utilisation de base de l'interface graphique PySimple
Fonctionnement du filtre (Aucun, liste)
Flux de base de détection d'anomalies
Principes de base de XPath (1) - Concept de base de XPath
Graphique de base à une ligne de HoloViews
Comportement de la méthode pandas rolling ()
Utilisation basique de la f-string Python
Index d'utilisation de certains pandas
Le pouvoir des pandas: Python
J'ai écrit le fonctionnement de base de Seaborn dans Jupyter Lab
[Calcul scientifique / technique par Python] Fonctionnement de base du tableau, numpy
J'ai écrit le fonctionnement de base de Numpy dans Jupyter Lab.
J'ai écrit le fonctionnement de base de matplotlib dans Jupyter Lab
Connaissance de base de Linux et des commandes de base
Mémorandum de travail (pymongo) Partie 1. Fonctionnement de base
Résumé des connaissances de base de PyPy Partie 1
Résumé de l'implémentation de base par PyTorch
Caractéristiques de pd.NA dans Pandas 1.0.0 (RC0)
Etosetra lié à Pandas read_csv
Pandas
À propos du type de base de Go
[Mémo] Petite histoire de pandas, stupide
1. Statistiques apprises avec Python 1-1. Statistiques de base (Pandas)
Notifier LINE des informations sur l'exploitation du train
Grammaire de base du système Python3 (dictionnaire)
Mémo de fonctionnement de l'environnement virtuel Conda
Etude de base d'OpenCV avec Python
[Python] Résumé de l'utilisation des pandas
[Linux] Examen des commandes de base fréquemment utilisées 2
Résumé des méthodes fréquemment utilisées chez les pandas
[Etude de conception 1] Etude de conception du système d'automatisation d'exploitation PC 1
Fonctionnement du script de trading automatique de monnaie virtuelle
Un petit examen minutieux de Pandas 1.0 et Dask
Installation d'Elasticsearch et fonctionnement de base pour ubuntu
Écriture de base de divers langages de programmation (auto-mémo)
Utilisation de base de Btrfs dans Arch Linux