[PYTHON] Échantillonnage bootstrap avec Pandas

Un petit script pour l'échantillonnage Bootstrap dans Pandas

L'échantillonnage bootstrap est utilisé pour extraire de manière aléatoire des données d'un échantillon, ce qui permet la duplication, pour créer une population légèrement différente. Par exemple, répétez-le 1000 fois ou prenez des statistiques. J'ai pensé à quoi faire avec les Pandas, alors prenez-en note.

Essayez d'utiliser un échantillon d'iris

Obtenez des échantillons de pandas et d'iris, puis importez le module de nombres aléatoires utilisé pour l'échantillonnage aléatoire.

import pandas as pd
import random
from sklearn.datasets import load_iris

Ensuite, chargez les données et placez-les dans la trame de données pandas.

iris_dataset = load_iris()
df = pd.DataFrame(data=iris_dataset.data, columns=iris_dataset.feature_names)

Jetez un œil aux données avec df.describe ().

sepal length (cm)	sepal width (cm)	petal length (cm)	petal width (cm)
count	150.000000	150.000000	150.000000	150.000000
mean	5.843333	3.057333	3.758000	1.199333
std	0.828066	0.435866	1.765298	0.762238
min	4.300000	2.000000	1.000000	0.100000
25%	5.100000	2.800000	1.600000	0.300000
50%	5.800000	3.000000	4.350000	1.300000
75%	6.400000	3.300000	5.100000	1.800000
max	7.900000	4.400000	6.900000	2.500000

Définissez ensuite une fonction qui échantillonne les données de manière aléatoire. Tout d'abord, créez un bloc de données vide avec pd.DataFrame (columns = a_data_frame.columns) en utilisant le bloc de données d'origine colonnes, puis créez un nombre aléatoireselected_num = random.choice (range (a_data_frame.shape [0)) là. ])) Ajoutez le cadrea_data_frame [selected_num: selected_num + 1]de la ligne sélectionnée parwith append. Notez qu'il semble que vous deviez sélectionner une plage ([0: 1]) pour sélectionner une seule ligne (par exemple, [0] pour numpy) dans le bloc de données des pandas.

def btstrap(a_data_frame):
    btstr_data = pd.DataFrame(columns=a_data_frame.columns)
    for a_data in range(a_data_frame.shape[0]):
        selected_num = random.choice(range(a_data_frame.shape[0]))
        btstr_data = btstr_data.append(a_data_frame[selected_num : selected_num + 1])
    return btstr_data

Vérifiez les données après un échantillonnage aléatoire avec btstr_data.describe () en faisant btstr_data = btstrap (df).

sepal length (cm)	sepal width (cm)	petal length (cm)	petal width (cm)
count	150.000000	150.000000	150.000000	150.000000
mean	5.750000	3.040667	3.660667	1.176000
std	0.728034	0.410287	1.716634	0.766644
min	4.300000	2.000000	1.100000	0.100000
25%	5.100000	2.800000	1.500000	0.200000
50%	5.700000	3.000000	4.250000	1.300000
75%	6.300000	3.300000	5.000000	1.800000
max	7.700000	4.400000	6.700000	2.500000

Tournez-la 1000 fois ou en boucle pour obtenir le résultat de la sélection d'ajustement ou de variable.

[Voir ci-dessous] Il y avait un moyen plus simple

Si vous définissez replace = True, il semble que vous puissiez faire la même chose avec .sample, qui est la fonction d'origine des pandas. @nkay Merci d'avoir souligné.

df.sample(n=df.shape[0], replace=True)

Recommended Posts

Échantillonnage bootstrap avec Pandas
Traitement des ensembles de données avec des pandas (1)
Convertir 202003 en 2020-03 avec les pandas
Traitement des ensembles de données avec des pandas (2)
Fusionner les ensembles de données avec les pandas
Pandas apprenant avec la chimioinfomatique
Visualisation des données avec les pandas
Manipulation des données avec les Pandas!
Mélangez les données avec les pandas
Lire csv avec des pandas python
[Python] Changer de type avec les pandas
Standardisez par groupe avec les pandas
Empêchez les omissions avec l'impression de pandas
Conseils de traitement des données avec Pandas
Extraire la valeur maximale avec les pandas.
Pandas
Traçage de données polyvalent avec pandas + matplotlib
[Python] Joindre deux tables avec des pandas
Échantillonnage super carré latin avec OpenMDAO
Créez dynamiquement de nouvelles trames de données avec des pandas
Extraire plusieurs colonnes spécifiques avec des pandas
1. Statistiques apprises avec Python 1-1. Statistiques de base (Pandas)
Analyse pratique avec Pandas + notebook Jupyter
Dessinez un graphique avec des pandas + XlsxWriter
Manipuler des chaînes avec un groupe pandas par
Bulk Insert Pandas DataFrame avec psycopg2
Je veux faire ○○ avec les Pandas
Créez une tranche d'âge avec les pandas
[Python] Formater quand to_csv avec des pandas
Génération de fonctionnalités avec pandas group par
Gère divers formats de date avec des pandas
Tracez l'indice boursier moyen Nikkei avec des pandas
Chargez csv avec des colonnes en double dans pandas
Conseils pour tracer plusieurs lignes avec des pandas
Essayez de convertir en données ordonnées avec les pandas
Dessinez une étiquette d'axe hiérarchique avec matplotlib + pandas
Essayez rapidement de visualiser votre ensemble de données avec des pandas
Remplacez les noms / valeurs des colonnes par pandas dataframe
[Easy Python] Lecture de fichiers Excel avec des pandas
Chargez CSV avec des pandas et jouez avec Index
Gérez les structures de données 3D avec les pandas
Lisez CSV et analysez avec Pandas et Seaborn
Exemple de traitement efficace des données avec PANDAS
Meilleures pratiques pour manipuler les données avec les pandas
[Pandas 1.0.1 Memorial] Record de bataille féroce avec Cookbook