Tutoriel de trame de données pandas

Tutoriel de trame de données pandas

Pandas pour l'analyse numérique

Pandas a été développé par la nécessité d'un moyen efficace de gérer les données financières à Python. Pandas est une bibliothèque qui peut être importée dans Python pour aider à manipuler et à transformer des données numériques. Wes McKinney a commencé le projet en 2008. Pandas est maintenant géré par un groupe d'ingénieurs et soutenu par l'organisme à but non lucratif de Numfocus, qui assurera sa croissance et son développement futurs. Cela signifie que Pandas sera une bibliothèque stable pendant de nombreuses années et peut être incluse dans vos applications sans souci d'un petit projet.

Bien que Pandas ait été initialement développé pour modéliser les données financières, ses structures de données peuvent être utilisées pour manipuler une variété de données numériques. Pandas a un certain nombre de structures de données intégrées et peut être utilisée pour modéliser et manipuler facilement les données numériques. Ce tutoriel couvrira les pandas Trame de données Structure de données en profondeur.

Qu'est-ce qu'un Dataframe?

UN Trame de données est l'une des principales structures de données en pandas et représente une collection de données 2D. Il existe de nombreux objets analogues à ce type de structure de données 2D dont certains incluent la feuille de calcul Excel toujours populaire, une table de base de données ou un tableau 2D trouvé dans la plupart des langages de programmation. Ci-dessous est un exemple de Trame de données dans un format graphique. Il représente un groupe de séries chronologiques de clôture des actions par date.

Ce tutoriel vous guidera à travers de nombreuses méthodes du cadre de données et j'utiliserai un modèle financier réel pour démontrer ces fonctions.

Importation de données

Les classes Pandas ont des méthodes intégrées pour aider à l'importation de données dans une structure de données. Vous trouverez ci-dessous un exemple de la façon d'importer des données dans un panneau Pandas avec le Réalisateur de données classe. Il peut être utilisé pour importer des données à partir de plusieurs sources de données financières gratuites, notamment Quandl, Yahoo Finance et Google. Afin d'utiliser la bibliothèque Pandas, vous devez l'ajouter comme une importation dans votre code.

Importer des pandas en tant que PD

La méthode ci-dessous démarrera le programme en exécutant la méthode d'exécution du tutoriel.

Si __name__ == "__main__":
tutoriel_run ()

Le tutoriel_run La méthode est ci-dessous. C'est la prochaine méthode que j'ajouterai au code. La première ligne de cette méthode définit une liste de tickers de stock. Cette variable sera utilisée plus loin dans le code en tant que liste des actions que les données seront demandées afin de remplir le Trame de données. La deuxième ligne de code appelle le get_data méthode. Comme nous le verrons, le get_data La méthode prend trois paramètres comme entrée. Nous passerons la liste des tickers de stock, la date de début et la date de fin des données que nous demanderons.

def tutorial_run ():
#Stock Tickers pour s'approvisionner de Yahoo Finance
symboles = ['spy', 'aapl', 'goog']
#get data
df = get_data (Symbols, «2006-01-03», «2017-12-31»)

Ci-dessous, nous définirons le get_data méthode. Comme je l'ai mentionné ci-dessus, il faut trois paramètres une liste de symboles, une date de début et de fin.

La première ligne de code définit un panneau Pandas en instanciant un Réalisateur de données classe. L'appel au Réalisateur de données La classe se connectera au serveur de financement Yahoo et demandera les valeurs de clôture quotidiennes, basses, fermées et ajustées pour chacune des actions dans le symboles liste. Ces données sont chargées dans un objet de panneau par Pandas.

UN panneau est une matrice 3D et peut être considérée comme une «pile» de Dataframe. Chaque Trame de données dans la pile contient l'une des valeurs quotidiennes pour les actions et les plages de dattes demandées. Par exemple, ci-dessous Trame de données, Présenté plus tôt, est le prix de clôture Trame de données de la demande. Chaque type de prix (haut, bas, ferme et ajusté ferme) a son propre Trame de données dans le panneau résultant renvoyé de la demande.

La deuxième ligne de code coupe le panneau en un seul Trame de données et attribue les données résultantes à df. Ce sera ma variable pour le Trame de données que j'utilise pour le reste du tutoriel. Il contient des valeurs de fermeture quotidiennes pour les trois actions pour la plage de dates spécifiée. Le panneau est tranché en spécifiant lequel du panneau Dataframe tu voudrais revenir. Dans cet exemple de ligne de code ci-dessous, c'est la «fermeture».

Une fois que nous avons notre Trame de données En place, je couvrirai certaines des fonctions utiles de la bibliothèque Pandas qui nous permettra de manipuler les données dans le Trame de données objet.

def get_data (symboles, start_date, end_date):
panneau = données.DataReader (symboles, 'yahoo', start_date, end_date)
df = panneau ['close']
Imprimer (DF.tête (5))
Imprimer (DF.queue (5))
retourner df

Pile et face

La troisième et quatrième ligne de get_data Imprimez la tête de fonction et la queue du cadre de données. Je trouve cela le plus utile dans le débogage et la visualisation des données, mais il peut également être utilisé pour sélectionner le premier ou le dernier échantillon des données dans le Trame de données. La fonction de tête et de queue tire les premières et dernières rangées de données du Trame de données. Le paramètre entier entre les parenthèses définit le nombre de lignes à sélectionner par la méthode.

.localiser

Le Trame de données localiser Méthode tranche le Trame de données par index. La ligne de code ci-dessous tranche le df Trame de données par l'index 2017-12-12. J'ai fourni une capture d'écran des résultats ci-dessous.

Imprimer DF.loc ["2017-12-12"]

localiser peut également être utilisé comme tranche bidimensionnelle. Le premier paramètre est la ligne et le deuxième paramètre est la colonne. Le code ci-dessous renvoie une seule valeur égale au prix de clôture d'Apple le 12/12/2014.

Imprimer DF.loc ["2017-12-12", "AAPL"]

Le localiser La méthode peut être utilisée pour trancher toutes les lignes d'une colonne ou de toutes les colonnes dans la ligne. Le : l'opérateur est utilisé pour tous. La ligne de code ci-dessous sélectionne toutes les lignes de la colonne pour les prix de clôture de Google.

Imprimer DF.loc [:, "goog"]

.fillna

Il est courant, en particulier dans les ensembles de données financières, d'avoir des valeurs NAN dans votre Trame de données. Pandas fournit une fonction pour remplir ces valeurs avec une valeur numérique. Ceci est utile si vous souhaitez effectuer une sorte de calcul sur les données qui peuvent être biaisées ou échouer en raison des valeurs NAN.

Le .fillna La méthode remplacera la valeur spécifiée pour chaque valeur NAN dans votre ensemble de données. La ligne de code ci-dessous remplira tout le NAN dans notre Trame de données avec un 0. Cette valeur par défaut peut être modifiée pour une valeur qui répond au besoin de l'ensemble de données avec lequel vous travaillez en mettant à jour le paramètre transmis à la méthode.

df.Fillna (0)

Normaliser les données

Lorsque vous utilisez l'apprentissage automatique ou les algorithmes d'analyse financière, il est souvent utile de normaliser vos valeurs. La méthode ci-dessous est un calcul efficace pour normaliser les données dans un pandas Trame de données. Je vous encourage à utiliser cette méthode car ce code fonctionnera plus efficacement que les autres méthodes de normalisation et peut montrer de grandes augmentations de performances sur les grands ensembles de données.

.iloc est une méthode similaire à .localiser mais prend des paramètres basés sur la localisation plutôt que les paramètres basés sur les balises. Il prend un index basé sur Zeroth plutôt que le nom de la colonne du .localiser exemple. Le code de normalisation ci-dessous est un exemple de certains des calculs de matrice puissants qui peuvent être effectués. Je sauterai la leçon d'algèbre linéaire, mais essentiellement cette ligne de code divisera toute la matrice ou Trame de données par la première valeur de chaque série temporelle. Selon votre ensemble de données, vous voudrez peut-être une norme basée sur Min, Max ou Mean. Ces normes peuvent également être facilement calculées en utilisant le style basé sur la matrice ci-dessous.

Def Normalize_data (DF):
retourner df / df.Iloc [0 ,:]

Tracer des données

Lorsque vous travaillez avec des données, il est souvent nécessaire de le représenter graphiquement. La méthode du tracé vous permet de créer facilement un graphique à partir de vos ensembles de données.

La méthode ci-dessous prend notre Trame de données et le trace sur un graphique de ligne standard. La méthode prend un Trame de données et un titre comme paramètres. La première ligne de codes ensembles hache à une parcelle du Dataframe df. Il définit le titre et la taille de la police pour le texte. Les deux lignes suivantes définissent les étiquettes pour l'axe x et y. La dernière ligne de code appelle la méthode Show qui imprime le graphique à la console. J'ai fourni une capture d'écran des résultats de l'intrigue ci-dessous. Cela représente les prix de clôture normalisés pour chacune des actions sur la période sélectionnée.

DEF PLOT_DATA (DF,):
hache = df.Terrain (title = title, FonTSize = 2)
hache.set_xlabel ("date")
hache.set_ylabel ("prix")
parcelle.montrer()

Pandas est une bibliothèque de manipulation de données robuste. Il peut être utilisé pour différents types de données et présente un ensemble succinct et efficace de méthodes pour manipuler votre ensemble de données. Ci-dessous, j'ai fourni le code complet du tutoriel afin que vous puissiez revoir et changer pour répondre à vos besoins. Il existe quelques autres méthodes qui vous aident dans la manipulation des données et je vous encourage à revoir les documents Pandas publiés dans les pages de référence ci-dessous. Numpy et Matplotlib sont deux autres bibliothèques qui fonctionnent bien pour la science des données et peuvent être utilisées pour améliorer la puissance de la bibliothèque Pandas.

Code complet

Importer des pandas en tant que PD
DEF PLOT_SELECT (DF, Columns, start_index, end_index):
Plot_data (df.ix [start_index: end_index, colonnes])
def get_data (symboles, start_date, end_date):
panneau = données.DataReader (symboles, 'yahoo', start_date, end_date)
df = panneau ['close']
Imprimer (DF.tête (5))
Imprimer (DF.queue (5))
Imprimer DF.loc ["2017-12-12"]
Imprimer DF.loc ["2017-12-12", "AAPL"]
Imprimer DF.loc [:, "goog"]
df.Fillna (0)
retourner df
Def Normalize_data (DF):
retourner df / df.ix [0 ,:]
DEF PLOT_DATA (DF,):
hache = df.Terrain (title = title, FonTSize = 2)
hache.set_xlabel ("date")
hache.set_ylabel ("prix")
parcelle.montrer()
def tutorial_run ():
#Choose symboles
symboles = ['spy', 'aapl', 'goog']
#get data
df = get_data (Symbols, «2006-01-03», «2017-12-31»)
Plot_data (DF)
Si __name__ == "__main__":
tutoriel_run ()

Les références

Page d'accueil des pandas
Page pandas wikipedia
https: // en.Wikipédia.org / wiki / wes_mckinney
Page d'accueil de Numfocus