[PYTHON] Apprenez les pandas en 10 minutes

Dans la "documentation pandas 0.15.2" , " 10 minutes aux pandas ", donc quand je l'ai regardé, mon esprit était assez organisé. Si vous le faites sérieusement, cela ne sera pas terminé en 10 minutes, mais prenez simplement note de ce qui semble pratique.

Tout d'abord, importez Pandas et Numpy.

#import liblaries
import pandas as pd
import numpy as np

Créer un DataFrame

Il existe plusieurs façons de créer un DataFrame, alors organisez-les. Tout d'abord, créez une matrice de DataFrame avec numpy, puis collez l'index et l'étiquette.

Indexage.

#Create a index
dates = pd.date_range("20130101", periods=6)
dates

<class 'pandas.tseries.index.DatetimeIndex'>
[2013-01-01, ..., 2013-01-06]
Length: 6, Freq: D, Timezone: None

Créez un DataFrame et collez l'index.

#Create a DatFrame
df = pd.DataFrame(np.random.randn(6,4),index = dates, columns = list("ABCD"))
df

 	A 	B 	C 	D
2013-01-01 	0.705624 	-0.793903 	0.843425 	0.672602
2013-01-02 	-1.211129 	2.077101 	-1.795861 	0.028060
2013-01-03 	0.706086 	0.385631 	0.967568 	0.271894
2013-01-04 	2.152279 	-0.493576 	1.184289 	-1.193300
2013-01-05 	0.455767 	0.787551 	0.239406 	1.627586
2013-01-06 	-0.639162 	-0.052620 	0.288010 	-2.205777


Cette fois, créez un DataFrame avec une image qui crée une série pour chaque étiquette. Ici, vous pouvez avoir différents dtypes pour chaque étiquette

df2 = pd.DataFrame({ 'A' : 1.,
                     'B' : pd.Timestamp('20130102'),
                     'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
                     'D' : np.array([3] * 4,dtype='int32'),
                     'E' : pd.Categorical(["test","train","test","train"]),
                     'F' : 'foo' })
df2

 	A 	B 	C 	D 	E 	F
0 	1 	2013-01-02 	1 	3 	test 	foo
1 	1 	2013-01-02 	1 	3 	train 	foo
2 	1 	2013-01-02 	1 	3 	test 	foo
3 	1 	2013-01-02 	1 	3 	train 	foo


df2.dtypes

A           float64
B    datetime64[ns]
C           float32
D             int32
E          category
F            object
dtype: object


Référence DataFrame

Voici comment afficher les données sous la forme souhaitée.

Afficher uniquement les index, les colonnes et les données numpy.

df.index

<class 'pandas.tseries.index.DatetimeIndex'>
[2013-01-01, ..., 2013-01-06]
Length: 6, Freq: D, Timezone: None


df.columns

Index([u'A', u'B', u'C', u'D'], dtype='object')

df.values

array([[ 0.705624  , -0.79390348,  0.84342517,  0.67260162],
       [-1.21112884,  2.0771009 , -1.79586146,  0.02806019],
       [ 0.70608621,  0.38563092,  0.9675681 ,  0.27189394],
       [ 2.15227868, -0.49357565,  1.18428903, -1.19329976],
       [ 0.45576744,  0.78755094,  0.23940583,  1.62758649],
       [-0.63916155, -0.05261954,  0.28800958, -2.20577674]])

Un résumé des statistiques est affiché ensemble, ce qui est pratique.

df.describe()

 	A 	B 	C 	D
count 	6.000000 	6.000000 	6.000000 	6.000000
mean 	0.361578 	0.318364 	0.287806 	-0.133156
std 	1.177066 	1.034585 	1.087978 	1.368150
min 	-1.211129 	-0.793903 	-1.795861 	-2.205777
25% 	-0.365429 	-0.383337 	0.251557 	-0.887960
50% 	0.580696 	0.166506 	0.565717 	0.149977
75% 	0.705971 	0.687071 	0.936532 	0.572425
max 	2.152279 	2.077101 	1.184289 	1.627586

Inversez la matrice DataFrame.

df.T

2013-01-01 00:00:00 	2013-01-02 00:00:00 	2013-01-03 00:00:00 	2013-01-04 00:00:00 	2013-01-05 00:00:00 	2013-01-06 00:00:00
A 	0.705624 	-1.211129 	0.706086 	2.152279 	0.455767 	-0.639162
B 	-0.793903 	2.077101 	0.385631 	-0.493576 	0.787551 	-0.052620
C 	0.843425 	-1.795861 	0.967568 	1.184289 	0.239406 	0.288010
D 	0.672602 	0.028060 	0.271894 	-1.193300 	1.627586 	-2.205777

Trier par n'importe quel axe. Par exemple, triez les étiquettes par ordre décroissant.

df.sort_index(axis=1, ascending=False)

 	D 	C 	B 	A
2013-01-01 	0.672602 	0.843425 	-0.793903 	0.705624
2013-01-02 	0.028060 	-1.795861 	2.077101 	-1.211129
2013-01-03 	0.271894 	0.967568 	0.385631 	0.706086
2013-01-04 	-1.193300 	1.184289 	-0.493576 	2.152279
2013-01-05 	1.627586 	0.239406 	0.787551 	0.455767
2013-01-06 	-2.205777 	0.288010 	-0.052620 	-0.639162

Vient ensuite la valeur de l'étiquette «B» dans l'ordre croissant.


df.sort(columns='B')

A 	B 	C 	D
2013-01-01 	0.705624 	-0.793903 	0.843425 	0.672602
2013-01-04 	2.152279 	-0.493576 	1.184289 	-1.193300
2013-01-06 	-0.639162 	-0.052620 	0.288010 	-2.205777
2013-01-03 	0.706086 	0.385631 	0.967568 	0.271894
2013-01-05 	0.455767 	0.787551 	0.239406 	1.627586
2013-01-02 	-1.211129 	2.077101 	-1.795861 	0.028060

Choisissez des données

Les données peuvent être extraites de différents points de vue. Par exemple, seulement une partie de l'index.

Extrayez les données en spécifiant à la fois le libellé et l'index.

df.loc['20130102':'20130104',['A','B']]

 	A 	B
2013-01-02 	-1.211129 	2.077101
2013-01-03 	0.706086 	0.385631
2013-01-04 	2.152279 	-0.493576

Vous pouvez créer un groupe avec n'importe quelle étiquette. Les données peuvent être manipulées telles quelles.


#Creating a DataFrame
df = pd.DataFrame({"A" : ['foo', 'bar', 'foo', 'bar','foo', 'bar', 'foo', 'foo'],
                   "B" : ['one', 'one', 'two', 'three','two', 'two', 'one', 'three'],
                   "C" : np.random.randn(8),
                   "D" : np.random.randn(8)})

df

 	A 	B 	C 	D
0 	foo 	one 	1.130975 	1.235940
1 	bar 	one 	-0.140004 	-2.714958
2 	foo 	two 	1.526578 	-0.165415
3 	bar 	three 	-1.049092 	-0.037484
4 	foo 	two 	-1.182303 	0.288754
5 	bar 	two 	0.530652 	1.204125
6 	foo 	one 	0.678477 	-0.273343
7 	foo 	three 	0.929624 	0.169822

df.sort(columns='B')

A 	B 	C 	D
2013-01-01 	0.705624 	-0.793903 	0.843425 	0.672602
2013-01-04 	2.152279 	-0.493576 	1.184289 	-1.193300
2013-01-06 	-0.639162 	-0.052620 	0.288010 	-2.205777
2013-01-03 	0.706086 	0.385631 	0.967568 	0.271894
2013-01-05 	0.455767 	0.787551 	0.239406 	1.627586
2013-01-02 	-1.211129 	2.077101 	-1.795861 	0.028060

Choisissez des données

Les données peuvent être extraites de différents points de vue. Par exemple, seulement une partie de l'index.

Extrayez les données en spécifiant à la fois le libellé et l'index.

df.loc['20130102':'20130104',['A','B']]

 	A 	B
2013-01-02 	-1.211129 	2.077101
2013-01-03 	0.706086 	0.385631
2013-01-04 	2.152279 	-0.493576

Vous pouvez créer un groupe avec n'importe quelle étiquette. Les données peuvent être manipulées telles quelles.

#Creating a DataFrame
df = pd.DataFrame({"A" : ['foo', 'bar', 'foo', 'bar','foo', 'bar', 'foo', 'foo'],
                   "B" : ['one', 'one', 'two', 'three','two', 'two', 'one', 'three'],
                   "C" : np.random.randn(8),
                   "D" : np.random.randn(8)})
df

 	A 	B 	C 	D
0 	foo 	one 	1.130975 	1.235940
1 	bar 	one 	-0.140004 	-2.714958
2 	foo 	two 	1.526578 	-0.165415
3 	bar 	three 	-1.049092 	-0.037484
4 	foo 	two 	-1.182303 	0.288754
5 	bar 	two 	0.530652 	1.204125
6 	foo 	one 	0.678477 	-0.273343
7 	foo 	three 	0.929624 	0.169822

#Grouping and then calculate sum
df.groupby('A').sum()

 	C 	D
A 		
bar 	-0.658445 	-1.548317
foo 	3.083350 	1.255758


Créer un tableau croisé dynamique

Création d'un DataFrame pour en faire un tableau croisé dynamique.

#Create a DataFrame
df = pd.DataFrame({'A' : ['one', 'one', 'two', 'three'] * 3,
                   'B' : ['A', 'B', 'C'] * 4,
                   'C' : ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] *2,
                   'D' : np.random.randn(12),
                   'E' : np.random.randn(12)})
df
A 	B 	C 	D 	E
0 	one 	A 	foo 	0.575699 	-1.669032
1 	one 	B 	foo 	0.592889 	-2.526196
2 	two 	C 	foo 	-2.229949 	-0.703339
3 	three 	A 	bar 	0.801380 	-1.638983
4 	one 	B 	bar 	-0.135691 	-0.302586
5 	one 	C 	bar 	0.317401 	1.169608
6 	two 	A 	foo 	0.064460 	-0.109437
7 	three 	B 	foo 	-0.605017 	1.043246
8 	one 	C 	foo 	-0.365220 	0.850535
9 	one 	A 	bar 	1.033552 	0.226002
10 	two 	B 	bar 	-0.260542 	0.352249
11 	three 	C 	bar 	0.518531 	1.407827

Il peut être converti en tableau croisé dynamique relativement facilement.

pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'])

 	C 	bar 	foo
A 	B 		
one 	A 	1.033552 	0.575699
B 	-0.135691 	0.592889
C 	0.317401 	-0.365220
three 	A 	0.801380 	NaN
B 	NaN 	-0.605017
C 	0.518531 	NaN
two 	A 	NaN 	0.064460
B 	-0.260542 	NaN
C 	NaN 	-2.229949

Résumé

Si vous y jetez un coup d'œil rapide, il reviendra lorsque vous serez confronté au processus, ce qui est très apprécié.

référence

pandas 0.15.2 documentation http://pandas.pydata.org/pandas-docs/stable/index.html

10 Minutes to pandas http://pandas.pydata.org/pandas-docs/stable/10min.html

Recommended Posts

Apprenez les pandas en 10 minutes
[Python] pandas à bien comprendre en 10 minutes
Pandas apprenant avec la chimioinfomatique
UnicodeDecodeError dans pandas read_csv
Comprendre en 10 minutes le sélénium
Le sélénium fonctionne en 15 minutes
Permuter les colonnes dans les trames de données pandas
Commencez dans 5 minutes GIMP Python-Fu
Créer des variables factices avec des pandas (get_dummies)
Comment écrire sobrement avec des pandas
Caractéristiques de pd.NA dans Pandas 1.0.0 (RC0)
Pandas
Faisons l'expérience de BERT dans environ 30 minutes.
Gratter avec une belle soupe en 10 minutes
Résumé de la grammaire fréquemment utilisée dans les pandas
Rendre matplotlib compatible avec le japonais en 3 minutes
Déployez Django en 3 minutes à l'aide de docker-compose
Ignorer # ligne et lire avec les pandas
Grands Pandas Apprenons beaucoup
Commencez avec Python en 30 minutes! Créer un environnement de développement et apprendre la grammaire de base
Apprenez le modèle de conception "Prototype" avec Python
Apprenez le modèle de conception "Builder" avec Python
[Comprendre en 3 minutes] Le début de Linux
Résumé des méthodes fréquemment utilisées chez les pandas
Apprenez le modèle de conception "Flyweight" en Python
Apprenez le modèle de conception "Observer" en Python
Apprenez le modèle de conception "Memento" avec Python
Apprenez le modèle de conception "Proxy" en Python
Obtenez les nièmes valeurs les plus importantes dans Pandas
Apprenez le modèle de conception "Commande" en Python
Environnement CSS créé en 10 minutes avec Django
Apprenez le modèle de conception "Visiteur" avec Python
Précautions lors de l'utilisation de l'instruction for dans les pandas
Apprenez le modèle de conception "Bridge" avec Python
Apprenez le modèle de conception "Mediator" avec Python
Apprenez le modèle de conception "Décorateur" avec Python
Comment réattribuer un index dans pandas dataframe
Apprenez le modèle de conception "Iterator" avec Python
Tutoriel de clé externe de Django en 10 minutes
Apprenez le modèle de conception «Stratégie» avec Python
Les données RDS via la plate-forme pas à pas sont envoyées aux Pandas
Apprenez le modèle de conception "Composite" avec Python
Apprenez le modèle de conception "État" en Python
Apprenez APPELPY en 10 minutes - Bibliothèque d'économie métrique appliquée Python
Obtenez Cloud Logging disponible en Python en 10 minutes
Apprenez le modèle de conception "Adapter" avec Python
Traitement des mémos souvent utilisés dans les pandas (débutants)
Comment lire des fichiers CSV avec Pandas
Ajouter une série à la colonne dans les pandas python
Gérez les structures de données 3D avec les pandas
Y a-t-il NaN dans le DataFrame pandas?