Fonctionnement de base de Python Pandas Series et Dataframe (1)

Lors de l'analyse de données avec python, il est courant (probablement) d'utiliser un module appelé pandas.

Dans les pandas, les données peuvent être stockées dans des types appelés Series et Dataframe. La série est utilisée pour stocker des données unidimensionnelles et Dataframe est utilisé pour stocker des données bidimensionnelles. Ils sont comme des tableaux unidimensionnels haute performance et des tableaux bidimensionnels, respectivement. Haute performance signifie que chaque ligne et colonne peut être nommée, et de nombreuses méthodes sont disponibles.

# Hachiman Yukino Yui
Math 8 90 10
langue nationale 88 100 50
Anglais 38 95 35

Lorsque vous exprimez cela dans un tableau à deux dimensions, il est difficile de gérer des caractères tels que "Hachiman", "Yukino", "Yui", "Mathematics", "Kokugo" et "English". Dans Dataframe, cela peut être représenté par des colonnes et un index.

Cependant, ce type a diverses spécifications gênantes, et j'ai trébuché depuis le début. Ceci est un manuel d'utilisation des pandas super rudimentaire que j'ai créé pour moi-même en tant que super débutant. La version de python est 3.5.2 (j'utilise Anacondan 4.2.0 au lieu de python standard) La version des pandas est la 0.18.1 Le code imagine une situation fonctionnant sur iPython 5.1.0.

Préparation avant d'utiliser les pandas

Installer des pandas

J'ai tout mis à Anaconda. (Anaconda est comme python + une bibliothèque populaire, y compris Numpy et iPython) En plus de cela, vous pouvez le mettre dans pip ou quelque chose comme ça.

Importer des pandas

Puisque pandas est un module, il doit être importé. In[1]: import pandas Cependant, peu importe où vous regardez les sites de référence, les pandas semblent être chargés sous le nom pd, je vais donc le suivre ici également. In[2]: import pandas as pd

Fonctionnement en série

Faire une série

# Hachiman
Math 8
langue nationale 88
Anglais 38

Par exemple, supposons que vous disposiez d'un tel tableau unidimensionnel. La première chose qui vous vient à l'esprit lorsque vous voyez cela est de créer une liste.

HachimanList = [8, 88, 38]



 Il est facile d'accéder aux éléments de ceci.
 Si vous voulez un score de langue nationale,
 ʻDans [4]: Hachiman [1] `
 ʻOut [4]: 88` sera retourné.

 Le problème avec ceci est qu'il manque des informations telles que les scores «mathématiques».
 Bien sûr, vous pouvez créer des dictionnaires, des objets et des taples nommés, mais aucun d'entre eux ne convient au traitement de données à grande échelle.

 La solution à cela est la série pandas.

In[5]: HachimanSeries = pd.Series(HachimanList, index = ["math", "japanese", "english"])


 de cette façon,

variable= pd.Series(Tableau de données, index =Un tableau de noms rampants)


 Peut être spécifié avec.
 Quand j'essaye de sortir ceci,

In[6]: HachimanSeries Out[6]: math 8 japanese 88 english 38 dtype: int64`


 Vous pouvez voir que chaque élément reçoit un nom et une sortie.
 Notez que «dtype» est le type de données du tableau entier. (Dans Numpy, les types entiers sont affectés à plusieurs types d'entiers différents. Int64 est l'un d'entre eux.)

 Et si vous ne spécifiez pas d'index? Une erreur sera-t-elle renvoyée?

In[7]: YukinoSeries = pd.Series([90, 100, 95]) In[8]: YukinoSeries Out[8]: 0 90 1 100 2 95 dtype: int64

 Apparemment, «index» a une valeur par défaut qui augmente de 0.
 Notez que «index» peut être ajouté plus tard.

In[9]: YukinoSeries.index = ["math", "japanese", "english"] In[10]: YukinoSeries Out[10]: math 90 japanese 100 english 95 dtype: int64


 Il existe également une méthode utilisant un dictionnaire.

In[11]: YuiSeries = pd.Series({"math":10, "japanese":50, "english":35}) In[12]: YuiSeries Out[12]: english 35 japanese 50 math 10 dtype: int64

 Dans ce cas, il est inévitable que la commande soit en panne.

## Extraire la valeur de la série
 La récupération des valeurs de la série est presque identique à un tableau normal.
#### Spécification des éléments
 Le nième élément du tableau est récupéré par ʻarray [n-1] `.
 De même, le nième élément de Series est

In[13]: HachimanSeries[2] Out[14]: 38

 Il est également possible de le transmettre à une variable et de le calculer.

In[15]: HachimanMath = HachimanSeries[0] In[16]: 40 <= HachimanMath Out[16]: False


 Cependant, le type de HachimanMath est `numpy.int64` au lieu de l'habituel ʻint`.


In[17]: type(HachimanMath) Out[17]: numpy.int64


 Vous pouvez également utiliser le ʻarray [-1] `.
 Il est facile de récupérer plusieurs variables.

In[18]: HachimanSeries[0:2] Out[18]: [8, 38]


 Les lecteurs qui ont exécuté l'exemple de code dans leur propre environnement sans avaler mes résultats auraient dû remarquer que je me suis enfin présenté et que j'ai écrit un mensonge ici.

 Ce code `HachimanSeries [0: 2]` retourne le résultat de l'exécution de type Series car il ressemble à `pandas.core.series.Series`.

In[18]: HachimanSeries[0:2] Out[18]: math 8 japanese 88 dtype: int64

In[19]: type(HachimanSeries[0:2]) Out[19]: pandas.core.series.Series


 Résumé

 - Si vous spécifiez un élément seul, vous obtiendrez un résultat d'exécution comme le type ʻint` appelé` numpy.int64`.
 --Si vous spécifiez un élément dans une plage, vous obtiendrez un type `Series` appelé` pandas.core.series.Series`.

 Certaines personnes peuvent trouver cela un peu désagréable, mais si vous y réfléchissez bien

- `int`->`numpy.int64`
- `list` ->`pandas.core.series.Series`

 C'est la même chose qu'une opération de tableau normale, simplement parce qu'il y a une correspondance.
 Ainsi, bien sûr, un type `Series` avec un seul élément peut être récupéré de la même manière qu'un seul tableau est récupéré à partir d'un tableau.

In[20]: HachimanSeries[1:1+1] Out[20]: japanese 88 dtype: int64

In[21]: type(HachimanSeries[1:1+1]) Out[21]: pandas.core.series.Series


 Pour spécifier un élément, vous pouvez également le spécifier par le nom «index» comme un type de dictionnaire.

In[22]: HachimanSeries["math"] Out[22]: 8


 Au fait, si vous utilisez ʻarray [:: -1] `, le résultat inverse sera retourné.

 Étonnamment, cela peut même être rangé en utilisant le nom «index».

In[23]: HachimanSeries["math":"english"] Out[23]: math 8 japanese 88 english 38 dtype: int64


 C'est quelque chose qui ne peut pas être fait avec les collections.OrderedDict ainsi que les dictionnaires ordinaires, et montre les hautes performances de Series-tan.

 Si vous voulez accéder au nom de ʻindex`, traitez` Series.index` comme un tableau.


In[24]:HachimanSeries.index Out[24]:Index(['math', 'japanese', 'english'], dtype='object')

In[25]: HachimanSeries.index[1] Out[25]: 'japanese'

In[26]: HachimanSeries.index.[1:2] Out[26]: Index(['japanese'], dtype='object')



 Jusqu'à présent, nous avons expliqué que Series peut récupérer des éléments comme un tableau ou un dictionnaire normal.
#### Obtenez la série que vous voulez
 Que faire si vous souhaitez récupérer des données dans "Series"?
 En d'autres termes, vous voulez seulement «math» et «japonais», ou vous voulez seulement «math» et «anglais».
 Ou vous voulez "math" à deux endroits.
 (Ressentez-vous un tel besoin maintenant ...)

 Pour `math` et` japonais`,` HachimanSeries [0: 2] `fera l'affaire. Cependant, quand il s'agit de «math» et «anglais», c'est assez ennuyeux.
 Je l'ai inventé là-bas.

In[27]: HachimanSeries["math"]+HachimanSeries["english"]

 Que dis-tu de ça! !!

Out[27]: 46


 La réalité est impitoyable, mais cette sortie hoche la tête. En premier lieu, le résultat de `HachimanSeries [" math "]` est `numpy.int64`.

 Si c'est le cas,

In[28]: HachimanSeries[0:0 + 1] + HachimanSeries[2:2 + 1]


 Essayer.

Out[28]: english NaN math NaN dtype: float64


 Comme vous pouvez le voir, il a craché des déchets industriels.
 Ceci est probablement dû au fait que l'ajout dans "Series" "ajoute les mêmes index".
 Et pour les éléments qui ne sont pas communs, remplissez `NaN` pour le moment.
 En réalité

In[29]: HachimanSeries[0:0 + 2] + YukinoSeries[1:1 + 2] Out[29]: english NaN japanese 188.0 math NaN dtype: float64

 Sera.

 Alors, comment préférez-vous uniquement «math» et «anglais» dans la même série?
 La réponse est d'écrire un double «[]».

In[30]: HachimanSeries[[0, 2]] Out[30]: math 8 english 38 dtype: int64


 Peut-être que ceci «[[]]» n'a rien à voir avec la notation du tableau quadratique. Il semble que je voulais juste utiliser la notation «[[]]».
 (`HachimanSeries [(0,2)]` ne passe pas, donc ça ne devait pas être quelque chose comme un itérateur. Il est considéré comme identique à un tableau en termes de traitement.)

 Si vous voulez juste souligner votre score en mathématiques

In[31]: HachimanSeries[["math","math","math","math","math"]] Out[31]: math 8 math 8 math 8 math 8 math 8 dtype: int64


 Tu peux le faire. (Ici, j'ai spécifié directement le nom «index»)
 La même chose est vraie pour «index».

In [32]: HachimanSeries.index[[1,2]] Out[32]: Index(['japanese', 'english'], dtype='object')


 Jusqu'à présent, j'ai appris à utiliser «[[]]» pour créer une nouvelle série qui extrait uniquement l'index »souhaité.
### Réécriture des éléments de la série
 Vous constaterez peut-être plus tard que le contenu de la «série» et le nom «index» étaient incorrects.
 Il existe un moyen d'écraser la version modifiée `Series` avec le même nom, mais en fait, elle peut être modifiée aussi facilement qu'un tableau.

 Tout d'abord, le code pour en réécrire un seul.

In[33]:HachimanSeries[1] Out[33]: 88

In[34]: HachimanSeries[1] = 98

In[35]: HachimanSeries[1] Out[35]: 98



 Puis réécrivez la plage spécifiée

In[36]: HachimanSeries Out[36]: math 8 japanese 98 english 38 dtype: int64

In[37]: HachimanSeries[1:1+2] = [89,33]

In[38]: HachimanSeries Out[38]: math 8 japanese 89 english 33 dtype: int64


 Ici, je me fâche s'il n'y a pas de chiffres sur les côtés gauche et droit.


In[39]: HachimanSeries[1:1+1] = [88,38]

ValueError (Omis) ValueError: cannot set using a slice indexer with a different length than the value


 Cependant, ils peuvent être alignés sur la même valeur.

In[40]: HachimanSeries[0:0+3] = 0

In[41]: HachimanSeries Out[40]: math 0 japanese 0 english 0 dtype: int64


 Enfin, réécrire «index»

In[42]: HachimanSeries.index[1] = "Japanese" Out[42]: HachimanSeries math 0 Japanese 0 english 0 dtype: int64


 En fait, ce n'est pas le cas.

TypeError: Index does not support mutable operations

 Comme vous pouvez le voir, «index» semble être immuable. (Même si vous faites quelque chose de similaire avec une chaîne de caractères, vous vous mettez en colère)

 Il n'y a donc pas d'autre choix que de l'écraser.

In[43]: HachimanSeries.index = ["Math","Japanese","English"]

In[44]: HachimanSeries Out[44]: Math 0 Japanese 0 English 0 dtype: int64


 Eh bien, réinitialisons-le après avoir examiné.

In[45]: HachimanSeries[0:0+3] = [8,88,38]

In[46]: HachimanSeries.index = ["math", "japanese", "english"] Out[46]: math 8 japanese 88 english 38 dtype: int64


 Ce qui précède est le fonctionnement de base de la série.
 C'est plus long que prévu, je parlerai donc des méthodes Dataframe et Series dans un prochain article.






Recommended Posts

Fonctionnement de base de Python Pandas Series et Dataframe (1)
[Python] Mémo d'opération de pandas DataFrame
[Python] Qu'est-ce que la série pandas et DataFrame?
Fonctionnement de base des pandas
Fonctionnement de base des Pandas
Grammaire de base de la série Python3 (liste, tapple)
[Python] Opération d'énumération
Résumé de la correspondance entre les opérations de tableau ruby et python
Liste des opérations de base de Python3 list, tapple, dictionnaire, set
Connaissance de base de Python
Application Python: Pandas # 3: Dataframe
Python Basic --Pandas, Numpy-
[Formation Python partie 3] Convertissez les pandas DataFrame, Series et Standard List entre eux
Résumé du tri Python (liste, type de dictionnaire, série, DataFrame)
Résumé des méthodes de prétraitement pour les débutants en Python (trame de données Pandas)
[Python] Résumé de la méthode de création de table utilisant DataFrame (pandas)
Installation de Python 3 sur Mac et vérification du fonctionnement de base Partie 1
Application Python: Pandas Partie 2: Série
Série Python 2 et série 3 (édition Anaconda)
Installation de Python et grammaire de base
Résumé de l'utilisation de base de Pandas
Utilisation basique de la f-string Python
Installation source et installation de Python
Installation de Python (Python 3.7.7) et grammaire de base
Le pouvoir des pandas: Python
[Calcul scientifique / technique par Python] Fonctionnement de base du tableau, numpy
Résumé de la prise en charge des opérations de hachage (dictionnaire) pour Ruby et Python
Graphique des données de séries chronologiques en Python à l'aide de pandas et matplotlib
[Python] Extraction / combinaison de données aléatoires à partir de DataFrame en utilisant random et pandas
Construction d'environnement de python et opencv
Jeu à la main Python (Pandas / DataFrame début)
L'histoire de Python et l'histoire de NaN
À propos de l'installation des séries Pwntools et Python2
Comparaison de la grammaire de base entre Java et Python
Installer SciPy et matplotlib (Python)
[Python] Comment utiliser la série Pandas
Diviser timedelta dans la série Python 2.7
[python] week1-3: Type de nombre et opération
Différence entre la série python2 et la série python3 dict.keys ()
Ceci et cela des propriétés python
1. Statistiques apprises avec Python 1-1. Statistiques de base (Pandas)
Grammaire de base du système Python3 (dictionnaire)
Coexistence de Python2 et 3 avec CircleCI (1.0)
Résumé des index et des tranches Python
Etude de base d'OpenCV avec Python
Réputation des livres Python et des livres de référence
[Python] Comment ajouter des lignes et des colonnes à une table (pandas DataFrame)
Pratique de l'analyse de données par Python et pandas (Tokyo COVID-19 data edition)
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] Modèle de base et utilisation de l'instruction if (opérateur de comparaison et opérateur booléen)
[Python] Résumé de l'utilisation des pandas
[Python] Visualisez la chaleur de Tokyo et de la préfecture ○○ (mémo d'utilisation de DataFrame)
Extraction de tweet.js (json.loads et eval) (Python)
Comparer la grammaire de base de Python et Go d'une manière facile à comprendre
Installation d'Elasticsearch et fonctionnement de base pour ubuntu
Connectez beaucoup de Python ou et et
Application de Python: Pandas Partie 4: Concaténation et combinaison de DataFrames