Python pour l'analyse des données Chapitre 4

NumPy Basics: Arrays and Vectorized Computation

ndarray Objet de tableau à n dimensions fourni par NumPy Creating dnarrays

#Créé à partir d'un tableau
data1 = [6, 7.5, 8, 9]
arr1 = np.array(data1)

#Peut également être créé dans des tableaux multidimensionnels
data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr2 = np.array(data2)

#fonction de plage python
np.arange(10)

#Zéro vecteur
np.zeros(10)

#Matrice zéro
np.zeros((3, 6))

#Générer sans initialisation
np.empty((2, 3, 2))

#Confirmation des dimensions
arr2.ndim

#Forme de tableau
arr2.shap

#Confirmation du type de données
arr1.dtype

#Générer en spécifiant le type de données
arr1 = np.array([1, 2, 3], dtype=np.float64)

#Généré à partir d'une chaîne
data3 = ["1.1", "2.2", "3.3"]
arr3 = np.array(data3, dtype=float64)

Operations between Arrays and Scalars

#Le calcul entre les tableaux est un calcul entre le même endroit
arr = np.array([[1, 2, 3], [4, 5, 6]])
"""
In [32]: arr
Out[32]: 
array([[1, 2, 3],
       [4, 5, 6]])
"""
arr * arr
"""
In [33]: arr * arr
Out[33]: 
array([[ 1,  4,  9],
       [16, 25, 36]])
"""

#Le calcul avec scalaire est calculé pour tous les éléments
arr - 1
"""
In [34]: arr - 1
Out[34]: 
array([[0, 1, 2],
       [3, 4, 5]])
"""
1 / arr
"""
In [35]: 1 / arr
Out[35]: 
array([[1, 0, 0],
       [0, 0, 0]])
"""

Basic Indexing and Slicing / Fancy Indexing

|0 1 2
0 0,0 0,1
1 1,0 1,1
2 2,0 2,1

La spécification de l'élément est la même que la matrice mathématique (ligne, colonne)

__Si vous voulez une copie d'une tranche de tableau, si vous ne la copiez pas, la tranche changera lorsque le tableau d'origine change __ arr[5:8].copy()

Boolean Indexing Vous pouvez masquer le tableau en utilisant le tableau booléen

name = np.array(["bob", "martin" ,"feed","max","rosetta","john"])
"""
In [63]: name == "bob"
Out[63]: array([ True, False, False, False, False, False], dtype=bool)
"""
arr = np.arange(6)
"""
In [68]: arr[name=="rosetta"]
Out[68]: array([4])
"""

Opérateur booléen & (and) | (or)

python


mask = (name=="rosetta") | (name=="martin")
"""
In [72]: mask
Out[72]: array([False,  True, False, False,  True, False], dtype=bool)
"""

Sélection par opérateur de comparaison

data = randn(10)
"""
In [78]: data
Out[78]: 
array([-0.43930899, -0.18084457,  0.50384496,  0.34177923,  0.4786331 ,
        0.0930973 ,  0.95264648,  1.29876589,  0.96616151,  0.69204729])
"""
data[data < 0] = 0
"""
In [80]: data
Out[80]: 
array([ 0.        ,  0.        ,  0.50384496,  0.34177923,  0.4786331 ,
        0.0930973 ,  0.95264648,  1.29876589,  0.96616151,  0.69204729])
"""

Transposing Arrays and Swapping Axes !! !! !! !! !! difficile! !! !! !! !! Je pense qu'il est plus facile de ne prendre que ce que vous voulez avec une part de fantaisie ...

arr = np.arange(15).reshape((3,5))

#Translocation
arr.T

#produit intérieur
np.dot(arr.T, arr)

arr = np.arange(45).reshape((3,5,3))

#Transformer en spécifiant l'axe
arr.transpose((1, 0, 2))

#Remplacement de l'arbre
arr.swapaxes(1, 2)

Universal Functions: Fast Element-wise Array Functions

1 fonction d'argument

Une fonction qui fonctionne sur une base élémentaire. Appliquez une fonction à chaque élément de x avec np.func (x).

Function Description
abs Valeur absolue
sqrt x ** 0.5
square x ** 2
exp exp(x)
log, log10, log2 Bas e, 10,Connectez-vous 2(x)
log1p log lorsque x est très petit(1+x)
sign Code(1,0,-1)rends le
ceil Arrondir après la virgule décimale
floor Tronquer après la virgule décimale
rint Arrondir les fractions en entiers récents
modf Décomposer une fraction en une partie de fraction et une partie entière
isnan, isinf, isfinite NaN,infini,Renvoie une valeur numérique ou booléenne
logical_not renvoie pas x valeur booléenne

Fonction à 2 arguments

Utilisé dans np.func (x1, x2).

Function Description
add, subtract, multiply, divide, power, mod x1 (+, -, *, /, **, %) x2
maximum, minimum Avec des éléments à la même position sur x1 et x2(grand,petit)Un
copysign x1 * (sign of x2)
greater, greater_equal, less, less_equal, equal, not_equal x1 (>, >=, <, <=, ==, !=) x2
logical_and, logical_or, logical_xor x1 (&,丨, ^) x2

Data Processing Using Arrays Visualisez des données bidimensionnelles. À titre d'exemple, affichez la grille qui a calculé sqrt (x ^ 2, y ^ 2).

#Créer 1000 points
points = np.arange(-5, 5, 0.01)
#Créer un maillage 2D
#x est un tableau à deux dimensions avec un tableau de x en lignes et y est un tableau de y en colonnes
xs, ys = np.meshgrid(points, points)
#Calcul
z = np.sqrt(xs ** 2 + ys ** 2)
#afficher
plt.imshow(z, cmap=plt.cm.gray); plt.colorbar()
plt.title("Image plot of $\sqrt{x^2 + y^2}$ for a grid of values")

Expressing Conditional Logic as Array Operations np.where est une fonction qui renvoie le deuxième ou le troisième argument selon la valeur du premier argument. Autrement dit, np.where (cond, xarr, yarr) = [(x if c else y) for x, y, c in zip (xarr, yarr, cond)]

arr = randn(5, 5)
"""
In [5]: arr
Out[5]: 
array([[-0.63774199, -0.76558645, -0.46003378,  0.61095653,  0.78277454],
       [ 0.25332127,  0.50226145, -1.45706102,  1.14315867,  0.28015   ],
       [-0.76326506,  0.33218657, -0.18509161, -0.3410194 , -0.29194451],
       [-0.32247669, -0.64285987, -0.61059921, -0.38261289,  0.41530912],
       [-1.7341384 ,  1.39960857,  0.78411537,  0.25922757, -0.22972615]])
"""
arrtf = np.where(arr > 0, True, False)
"""
In [6]: arrtf
Out[6]: 
array([[False, False, False,  True,  True],
       [ True,  True, False,  True,  True],
       [False,  True, False, False, False],
       [False, False, False, False,  True],
       [False,  True,  True,  True, False]], dtype=bool)
"""

En les combinant, il est possible de classer par plusieurs conditions.

cond1 = np.where(randn(10) > 0, True, False)
cond2 = np.where(randn(10) > 0, True, False)
"""
In [16]: cond1
Out[16]: array([False,  True, False, False,  True,  True,  True,  True,  True,  True], dtype=bool)

In [17]: cond2
Out[17]: array([False, False, False, False, False,  True, False,  True,  True,  True], dtype=bool)
"""
result = np.where(cond1 & cond2, 0, np.where(cond1, 1, np.where(cond2, 2, 3)))
"""
In [19]: result
Out[19]: array([3, 1, 3, 3, 1, 0, 1, 0, 0, 0])
"""

If et else peuvent être réécrits.

result = []
for i in range(n):
    if cond1[i] and cond2[i]:
        result.append(0)
    elif cond1[i]:
        result.append(1)
    elif cond2[i]:
        result.append(2)
    else:
        result.append(3)

C'est également possible avec des formules. (Notez que 0 et 3 sont interchangés avec les autres) result = 1*cond1 + 2*cond2

Mathematical and Statistical Methods Des fonctions statistiques sont également disponibles.

arr = randn(5, 4)
arr.mean()
#L'axe peut également être spécifié
arr.mean(0)
arr.mean(1)
"""
In [60]: arr.mean()
Out[60]: 0.51585861805229682

In [62]: arr.mean(0)
Out[62]: array([ 0.65067115, -0.03856606,  1.06405353,  0.38727585])

In [63]: arr.mean(1)
Out[63]: array([ 1.18400902,  0.84203136,  0.50352006,  0.07445734, -0.0247247 ])
"""

Methods for Boolean Arrays Étant donné que le type booléen True est compté pour 1 et False est compté pour 0, le comptage par la fonction de somme est souvent utilisé.

arr = randn(100)
sumnum = (arr > 0).sum()
"""
In [75]: sumnum
Out[75]: 43
"""

Autres fonctions booléennes

Sorting Vous pouvez également trier. arr.sort()

Unique and Other Set Logic Vous pouvez également utiliser quelque chose comme la véritable fonction set Python.

File Input and Output with Arrays Vous pouvez enregistrer l'objet de tableau NumPy dans un fichier externe. Bien sûr, vous pouvez également charger et restaurer le fichier enregistré.

arr = np.arange(10)

#Enregistrer au format binaire
np.save("array_name", arr)
#Charger un fichier au format binaire
arr = np.load("array_name.npy")
#Enregistrer plusieurs tableaux dans zip
np.savez("array_archive.npz", a=arr, b=arr)
#Charger plusieurs fichiers zip
arr_a = np.load("array_archive.npz")["a"]
arr_b = np.load("array_archive.npz")["b"]

#Enregistrer au format csv
np.savetxt("array_ex.txt", arr, delimiter=",")
#Lire le fichier au format csv
arr = np.loadtxt("array_ex.txt", delimiter=",")

Linear Algebra Vous pouvez également calculer l'algèbre linéaire.

Function Description
diag Extraire des éléments diagonaux
dot produit intérieur
trace Somme des éléments diagonaux
det Formule matricielle
eig Décomposition en valeurs propres et vecteurs propres
inv Translocation
pinv Moore-Matrice pseudo inverse de Penrose
qr Démontage QR
svd Décomposition SVD
solve Ax quand A est une matrice carrée=Trouver x en b
stsq Calculer la solution des moindres carrés

Random Number Generation Des valeurs aléatoires de diverses distributions peuvent être obtenues à grande vitesse.

Function Description
seed Génération aléatoire par valeur de départ
permutation Trier aléatoirement les éléments de la séquence
shuffle Trier aléatoirement les éléments de la séquence
rand Génère un tableau aléatoire du nombre de dimensions passées en argument
randint Génère un tableau d'entiers aléatoires du nombre de dimensions passées dans l'argument
binomial Échantillonnage aléatoire à partir de la distribution binomiale
normal Échantillonnage aléatoire à partir de la distribution normale
beta Échantillonnage aléatoire à partir de la distribution bêta
chisquare chi-Échantillonnage aléatoire à partir d'une distribution carrée
gamma Échantillonnage aléatoire à partir de la distribution gamma
uniform Échantillonnage aléatoire à partir d'une distribution normale dans une plage donnée

Example: Random Walks Exécutez ce qui suit dans ipython

nsteps = 1000
draws = np.random.randint(0, 2, size=nsteps)
steps = np.where(draws > 0, 1, -1)
walk = steps.cumsum()
plt.plot(walk)

Simulating Many Random Walks at Once

nwalks = 100
nsteps = 1000
draws = np.random.randint(0, 2, size=(nwalks, nsteps))
steps = np.where(draws > 0, 1, -1)
walks = steps.cumsum(1)
plt.plot(walks)

Expansion Cela ne semble pas être une valeur aléatoire de très haute qualité, mais elle devrait être de très haute qualité car elle utilise en fait Mercennu Twister.

Recommended Posts

Python pour l'analyse des données Chapitre 4
Python pour l'analyse des données Chapitre 2
Python pour l'analyse des données Chapitre 3
Analyse de données python
Modèle de prétraitement pour l'analyse des données (Python)
Analyse de données avec python 2
Outil de visualisation Python pour le travail d'analyse de données
Présentation de l'analyse de données python
Modèle d'analyse de données Python
Analyse de données avec Python
[CovsirPhy] Package Python COVID-19 pour l'analyse des données: chargement des données
[Python] Notes sur l'analyse des données
Notes d'apprentissage sur l'analyse des données Python
Analyse de données à l'aide de pandas python
Conseils et précautions lors de l'analyse des données
Analyse de données pour améliorer POG 1 ~ Web scraping avec Python ~
[Pour les débutants] Comment étudier le test d'analyse de données Python3
[CovsirPhy] Package Python COVID-19 pour l'analyse de données: modèle SIR-F
[CovsirPhy] Package Python COVID-19 pour l'analyse des données: analyse des tendances S-R
[CovsirPhy] Package Python COVID-19 pour l'analyse des données: modèle SIR
[CovsirPhy] Package Python COVID-19 pour l'analyse des données: estimation des paramètres
[Livre technique] Introduction à l'analyse de données avec Python -1 Chapitre Introduction-
Python: analyse des séries chronologiques: prétraitement des données des séries chronologiques
Cours Python pour la science des données - techniques utiles
Analyse de données pour améliorer POG 3 ~ Analyse de régression ~
Formatage des données pour les graphiques Python / couleur
Analyse de données à partir de python (visualisation de données 1)
Analyse de données à partir de python (visualisation de données 2)
[CovsirPhy] Package Python COVID-19 pour l'analyse de données: analyse de scénario (comparaison de paramètres)
[Comprendre au plus court] Principes de base de Python pour l'analyse des données
Lequel dois-je étudier, R ou Python, pour l'analyse des données?
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 7 Analyse de régression
<Python> Construisez un serveur dédié pour l'analyse des données Jupyter Notebook
30/10/2016 else pour Python3> pour:
[Python] Chapitre 04-06 Différentes structures de données (création de dictionnaire)
python [pour moi]
Analyse des données Titanic 2
[Introduction à Python3, jour 17] Chapitre 8 Destinations de données (8.1-8.2.5)
[Introduction à Python3, jour 17] Chapitre 8 Destinations de données (8.3-8.3.6.1)
[Python] Chapitre 04-03 Diverses structures de données (liste multidimensionnelle)
[Python] Chapitre 04-04 Diverses structures de données (voir liste)
[Introduction à Python3 Jour 19] Chapitre 8 Destinations de données (8.4-8.5)
Techniques Python détaillées requises pour la mise en forme des données (1)
[Introduction à Python3 Day 18] Chapitre 8 Destinations de données (8.3.6.2 à 8.3.6.3)
Analyse des données Titanic 1
[Python] Première analyse de données / apprentissage automatique (Kaggle)
[Python] Chapitre 04-02 Diverses structures de données (manipulation de liste)
[Python] Chapitre 04-07 Diverses structures de données (manipulation de dictionnaire)
Analyse de données à partir de python (pré-traitement des données-apprentissage automatique)
Analyse des données Titanic 3
Comment utiliser "deque" pour les données Python
Techniques Python détaillées requises pour la mise en forme des données (2)
J'ai suivi une formation à l'analyse de données Python à distance
Préparation à l'examen d'analyse de données certifié Python 3 Engineer
JupyterLab Basic Setting 2 pour l'analyse des données (pip)
Créer un Ubuntu de démarrage USB avec un environnement Python pour l'analyse des données
Configuration de base de JupyterLab pour l'analyse des données (pip)
[python] Lecture de données
Résumé du livre électronique Python utile pour l'analyse de données gratuite