[PYTHON] Analyse des données financières par pandas et leur visualisation (1)

Application aux domaines financier et économique

pandas est un outil de données qui a commencé à être développé dans le domaine financier vers 2008. L'auteur Wes McKinney était membre du bien connu du secteur financier Quants Hedge Fund AQR Capital Management. .. Pour cette raison, il a un certain nombre de fonctions puissantes même lorsqu'il est considéré comme un outil d'analyse pratique pour les données financières et économiques.

Nous analyserons l'ensemble de données obtenu de Yahoo! Finance à l'aide de pandas. Cette fois, nous utiliserons certaines données boursières et des données de cours de clôture quotidiennes pour l'indice S & P 500 (l'identifiant de l'action est SPX).

Lire et écrire des ensembles de données

pandas a des fonctions d'entrée et de sortie telles que CSV et JSON.

une fonction La description
read_csv ','Lire des données délimitées
read_table languette('\t')Lire des données délimitées
read_json Lire les données au format JSON
read_msgpack Lire les données au format msgpack
read_pickle Lire des données binaires

La fonction to_XXX qui leur est associée est fournie dans le bloc de données et les données peuvent être sorties dans n'importe quel format. Il est très facile de ne pas avoir à appeler l'analyseur CSV ou JSON pour écrire le code.

import pandas as pd
stock = pd.read_csv('stock_px.csv', parse_dates=True, index_col=0)

De plus, un index est automatiquement créé pour les données lues à partir de CSV. Vous pouvez également recréer un nouvel objet avec un nouvel index plus adapté.

Une autre caractéristique des pandas est qu'il gère bien les valeurs manquantes. Il n'est pas toujours possible de traiter des données propres sans défauts dans l'analyse des données. Ainsi, toutes les statistiques d'objets pandas excluent les valeurs manquantes. Vous pouvez également définir un seuil pour le nombre de valeurs manquantes autorisées et remplir les espaces avec les valeurs spécifiées.

Gestion de l'ensemble de données

La recherche et l'agrégation de statistiques récapitulatives et le regroupement par niveau d'index sont très faciles.

stock.head(10) #Afficher uniquement les 10 premiers
# =>
#             AAPL   MSFT    XOM     SPX
# 2003-01-02  7.40  21.11  29.22  909.03
# 2003-01-03  7.45  21.14  29.24  908.59
# 2003-01-06  7.45  21.52  29.96  929.01
# 2003-01-07  7.43  21.93  28.95  922.93
# 2003-01-08  7.28  21.31  28.83  909.93
# 2003-01-09  7.34  21.93  29.44  927.57
# 2003-01-10  7.36  21.97  29.03  927.57
# 2003-01-13  7.32  22.16  28.91  926.26
# 2003-01-14  7.30  22.39  29.17  931.66
# 2003-01-15  7.22  22.11  28.77  918.22

stock['AAPL'].sum() #total
# => 277892.75

stock['AAPL'].mean() #Moyenne arithmétique
# => 125.51614724480578

stock['AAPL'].median() #Médian
# => 91.45500000000001

Calcul de la moyenne pondérée

Découvrons à quel point il existe une corrélation entre les bénéfices quotidiens et le SPX dans l'année.

rets = stock.pct_change().dropna()
spx_corr = lambda x: x.corrwith(x['SPX'])
stock_by_year = rets.groupby(lambda x: x.year)

result_1 = stock_by_year.apply(spx_corr) #Corrélation entre les bénéfices quotidiens et SPX
print( result_1 )
# =>          AAPL      MSFT       XOM  SPX
#   2003  0.541124  0.745174  0.661265    1
#   2004  0.374283  0.588531  0.557742    1
#   2005  0.467540  0.562374  0.631010    1
#   2006  0.428267  0.406126  0.518514    1
#   2007  0.508118  0.658770  0.786264    1
#   2008  0.681434  0.804626  0.828303    1
#   2009  0.707103  0.654902  0.797921    1
#   2010  0.710105  0.730118  0.839057    1
#   2011  0.691931  0.800996  0.859975    1

plt.figure() #Dessin sur la toile
result_1.plot() #Tracer avec matplotlib
plt.show()
plt.savefig("image.png ")

image.png

Trouvez la corrélation entre les colonnes.

result_2 = stock_by_year.apply(lambda g: g['AAPL'].corr(g['MSFT'])) #Corrélation entre Apple et Microsoft
print( result_2 )
# =>
# 2003    0.480868
# 2004    0.259024
# 2005    0.300093
# 2006    0.161735
# 2007    0.417738
# 2008    0.611901
# 2009    0.432738
# 2010    0.571946
# 2011    0.581987

plt.figure()
result_2.plot()
plt.show()
plt.savefig("image2.png ")

image2.png

Régression linéaire

Trouvez la régression linéaire des données par la méthode des moindres carrés.

def regression(data, yvar, xvars):
    Y = data[yvar]
    X = data[xvars]
    X['intercept'] = 1.
    result = sm.OLS(Y, X).fit()
    return result.params

result_3 = stock_by_year.apply(regression, 'AAPL', ['SPX'])
print(result_3)
# =>         SPX  intercept
# 2003  1.195406   0.000710
# 2004  1.363463   0.004201
# 2005  1.766415   0.003246
# 2006  1.645496   0.000080
# 2007  1.198761   0.003438
# 2008  0.968016  -0.001110
# 2009  0.879103   0.002954
# 2010  1.052608   0.001261
# 2011  0.806605   0.001514

plt.figure()
result_3.plot()
plt.show()
plt.savefig("image3.png ")

image3.png

référence

Introduction à l'analyse de données avec le traitement des données Python avec NumPy et pandas http://www.oreilly.co.jp/books/9784873116556/

Recommended Posts

Analyse des données financières par pandas et leur visualisation (2)
Analyse des données financières par pandas et leur visualisation (1)
Pratique de l'analyse de données par Python et pandas (Tokyo COVID-19 data edition)
Visualisation des données par préfecture
Comment visualiser les données par variable explicative et variable objective
Visualisation et analyse des informations de localisation des données Twitter Stava
Implémentez "Data Visualization Design # 3" avec pandas et matplotlib
Calcul des indicateurs techniques par TA-Lib et pandas
Analyse émotionnelle des données de tweet à grande échelle par NLTK
Visualisation des données avec les pandas
Vue d'ensemble et astuces de Seaborn avec visualisation de données statistiques
Histoire de l'analyse d'image du fichier PDF et de l'extraction de données
[Ingénierie de contrôle] Visualisation et analyse du contrôle PID et de la réponse par étapes
Analyse des données de mesure (2) -Hydrobacter et raccord, recommandation lmfit-
Vue d'ensemble du traitement du langage naturel et de son prétraitement des données
Mémo de visualisation par pandas, seaborn
Analyse de données à l'aide de pandas python
Jugement négatif / positif des phrases et visualisation des motifs par Transformer
Jugement négatif / positif des phrases par BERT et visualisation des motifs
Début de l'analyse de l'encyclopédie Nico Nico ~ Appuyez sur les données fournies par JSON
Première analyse de données satellitaires par Tellus
Livres et sources recommandés de programmation d'analyse de données (Python ou R)
Méthode de visualisation de données utilisant matplotlib (+ pandas) (5)
Acquisition automatique des données de niveau d'expression génique par python et R
Calcul scientifique / technique avec Python] Dessin et visualisation d'isoplans 3D et de leurs vues en coupe à l'aide de mayavi
Méthode de visualisation de données utilisant matplotlib (+ pandas) (3)
Impressions de toucher Dash, un outil de visualisation de données réalisé par python
10 sélections d'extraction de données par pandas.DataFrame.query
Animation des géodonnées par geopandas
Recommandation d'analyse des données à l'aide de MessagePack
Analyse des séries chronologiques 3 Prétraitement des données des séries chronologiques
Analyse de données à partir de python (visualisation de données 1)
Méthode de visualisation de données utilisant matplotlib (+ pandas) (4)
Analyse de données à partir de python (visualisation de données 2)
Agrégation et visualisation des nombres accumulés
Traitement des données 2 Analyse de divers formats de données
Représentez graphiquement le ratio de topcoder, Codeforces et TOEIC par note (Pandas + seaborn)
Prétraitement des fichiers de vidage Wikipedia et partage de grandes quantités de données avec MeCab
Visualisation des données de coordonnées de latitude / longitude (en supposant des données météorologiques) à l'aide de cartopy et matplotlib
[Didacticiel d'analyse Python dans la base de données avec SQL Server 2017] Étape 3: Exploration et visualisation des données
Résumé des distributions de probabilité qui apparaissent souvent dans les statistiques et l'analyse des données
Outil de visualisation Python pour le travail d'analyse de données
Un petit examen minutieux de Pandas 1.0 et Dask
Exemple d'analyse de squelette tridimensionnelle par Python
Modèle de régression utilisant scikit-learn et sa visualisation
Visualisation de corrélation entre la quantité de caractéristiques et la variable objective
Pandas du débutant, par le débutant, pour le débutant [Python]
Séparation de la conception et des données dans matplotlib
Recommandation d'Altair! Visualisation des données avec Python
Analyse d'image de microtomographie à rayons X par Python
Exemple de traitement efficace des données avec PANDAS
[Python] De l'analyse morphologique des données CSV à la sortie CSV et à l'affichage graphique [GiNZA]
Un beau dessin graphique avec Python -seaborn facilite l'analyse et la visualisation des données Partie 1
[Python] Comparaison de la théorie de l'analyse des composants principaux et de l'implémentation par Python (PCA, Kernel PCA, 2DPCA)
L'analyse d'image a été facile à l'aide des données et de l'API fournies par Microsoft COCO
Un beau dessin graphique avec Python -seaborn facilite l'analyse et la visualisation des données Partie 2
Prédire les travaux de courte durée de Weekly Shonen Jump par apprentissage automatique (Partie 1: Analyse des données)
La première étape de l'analyse du journal (comment formater et mettre les données du journal dans Pandas)
Pratique de création d'une plateforme d'analyse de données avec BigQuery et Cloud DataFlow (traitement de données)