Recherche de site Web

Au-delà de SQL : transformer les données immobilières en informations exploitables avec Pandas


En matière d'analyse de données, SQL se présente comme un outil puissant, réputé pour ses solides capacités de gestion et d'interrogation de bases de données. La bibliothèque pandas en Python apporte des fonctionnalités de type SQL aux data scientists, permettant une manipulation et une analyse sophistiquées des données sans avoir besoin d'une base de données SQL traditionnelle. Dans ce qui suit, vous appliquerez des fonctions de type SQL en Python pour disséquer et comprendre les données.

Commençons.

Aperçu

Cet article est divisé en trois parties ; ils sont:

  • Explorer les données avec la méthode DataFrame.query() de Pandas
  • Agrégation et regroupement de données
  • Maîtriser la sélection de lignes et de colonnes dans Pandas
  • Exploiter le tableau croisé dynamique pour une analyse approfondie du marché du logement

Explorer les données avec la méthode DataFrame.query() de Pandas

La méthode DataFrame.query() dans pandas permet la sélection de lignes en fonction d'une condition spécifiée, semblable à l'instruction SQL SELECT. En commençant par les bases, vous filtrez les données en fonction de conditions uniques et multiples, jetant ainsi les bases d'interrogations de données plus complexes.

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Load the dataset
Ames = pd.read_csv('Ames.csv')

# Simple querying: Select houses priced above $600,000
high_value_houses = Ames.query('SalePrice > 600000')
print(high_value_houses)

Dans le code ci-dessus, vous utilisez la méthode DataFrame.query() de pandas pour filtrer les maisons dont le prix est supérieur à 600 000 $, en stockant le résultat dans un nouveau DataFrame appelé high_value_houses. Cette méthode permet une interrogation concise et lisible des données en fonction d'une condition spécifiée sous forme de chaîne. Dans ce cas, 'SalePrice > 600000'.

Le DataFrame résultant ci-dessous présente les propriétés de grande valeur sélectionnées. La requête restreint effectivement l'ensemble de données aux maisons dont le prix de vente dépasse 600 000 $, présentant seulement 5 propriétés qui répondent à ce critère. La vue filtrée fournit un aperçu ciblé de l'échelon supérieur du marché immobilier dans l'ensemble de données Ames, offrant un aperçu des caractéristiques et des emplacements des propriétés les plus valorisées.

            PID  GrLivArea  ...   Latitude  Longitude
65    528164060       2470  ...  42.058475 -93.656810
584   528150070       2364  ...  42.060462 -93.655516
1007  528351010       4316  ...  42.051982 -93.657450
1325  528320060       3627  ...  42.053228 -93.657649
1639  528110020       2674  ...  42.063049 -93.655918

[5 rows x 85 columns]

Dans l'exemple suivant ci-dessous, explorons plus en détail les capacités de la méthode DataFrame.query() pour filtrer l'ensemble de données Ames Housing en fonction de critères plus spécifiques. La requête sélectionne les maisons qui disposent de plus de 3 chambres (BedroomAbvGr > 3) et dont le prix est inférieur à 300 000 $(SalePrice < 300000). Cette combinaison de conditions est obtenue à l'aide de l'opérateur logique ET (&), vous permettant d'appliquer simultanément plusieurs filtres à l'ensemble de données.

# Advanced querying: Select houses with more than 3 bedrooms and priced below $300,000
specific_houses = Ames.query('BedroomAbvGr > 3 & SalePrice < 300000')
print(specific_houses)

Le résultat de cette requête est stocké dans un nouveau DataFrame appelé Specific_houses, qui contient toutes les propriétés qui satisfont aux deux conditions. En imprimant special_houses, vous pouvez examiner les détails de maisons à la fois relativement grandes (en termes de chambres) et abordables, en ciblant un segment spécifique du marché du logement qui pourrait intéresser les familles à la recherche d'options de vie spacieuses au sein de une certaine fourchette de budget.

            PID  GrLivArea  ...   Latitude  Longitude
5     908128060       1922  ...  42.018988 -93.671572
23    902326030       2640  ...  42.029358 -93.612289
33    903400180       1848  ...  42.029544 -93.627377
38    527327050       2030  ...  42.054506 -93.631560
40    528326110       2172  ...  42.055785 -93.651102
...         ...        ...  ...        ...        ...
2539  905101310       1768  ...  42.033393 -93.671295
2557  905107250       1440  ...  42.031349 -93.673578
2562  535101110       1584  ...  42.048256 -93.619860
2575  905402060       1733  ...  42.027669 -93.666138
2576  909275030       2002  ...        NaN        NaN

[352 rows x 85 columns]

La requête avancée a réussi à identifier un total de 352 maisons à partir de l'ensemble de données Ames Housing qui répondent aux critères spécifiés : avoir plus de 3 chambres et un prix de vente inférieur à 300 000 $. Ce sous-ensemble de propriétés met en évidence une partie importante du marché qui offre des options de vie spacieuses sans casser le budget, s'adressant aux familles ou aux particuliers à la recherche d'un logement abordable mais spacieux. Pour explorer davantage la dynamique de ce sous-ensemble, visualisons la relation entre les prix de vente et les surfaces habitables au sol, avec une couche supplémentaire indiquant le nombre de chambres. Cette représentation graphique vous aidera à comprendre comment la surface habitable et le nombre de chambres influencent l'abordabilité et l'attrait de ces maisons selon les critères spécifiés.

# Visualizing the advanced query results
plt.figure(figsize=(10, 6))
sns.scatterplot(x='GrLivArea', y='SalePrice', hue='BedroomAbvGr', data=specific_houses, palette='viridis')
plt.title('Sales Price vs. Ground Living Area')
plt.xlabel('Ground Living Area (sqft)')
plt.ylabel('Sales Price ($)')
plt.legend(title='Bedrooms Above Ground')
plt.show()

Le nuage de points ci-dessus démontre de manière frappante l'interaction nuancée entre le prix de vente, la surface habitable et le nombre de chambres, soulignant les diverses options disponibles dans ce segment du marché immobilier d'Ames. Il souligne comment les espaces de vie plus grands et les chambres supplémentaires contribuent à la valeur de la propriété, offrant des informations précieuses aux acheteurs et investisseurs potentiels qui se concentrent sur des maisons spacieuses mais abordables. Cette analyse visuelle rend non seulement les données plus accessibles, mais soutient également l'utilité pratique de Pandas pour découvrir les principales tendances du marché.
Démarrez votre projet avec mon livre Le guide du débutant en science des données. Il fournit des tutoriels d'auto-apprentissage avec du code fonctionnel.

Agrégation et regroupement de données

L'agrégation et le regroupement sont essentiels à la synthèse des informations sur les données. En nous appuyant sur les techniques d’interrogation fondamentales explorées dans la première partie de votre exploration, approfondissons la puissance de l’agrégation et du regroupement de données en Python. Semblable à la clause GROUP BY de SQL, pandas propose une méthode groupby() robuste, vous permettant de segmenter vos données en sous-ensembles pour une analyse détaillée. Cette prochaine phase de votre parcours se concentre sur l’exploitation de ces capacités pour découvrir des modèles et des informations cachés dans l’ensemble de données Ames Housing. Plus précisément, vous examinerez les prix de vente moyens des maisons de plus de trois chambres, dont le prix est inférieur à 300 000 $, dans différents quartiers. En agrégeant ces données, vous visez à mettre en évidence la variabilité de l'accessibilité financière et de l'inventaire des logements à travers le canevas spatial d'Ames, Iowa.

# Advanced querying: Select houses with more than 3 bedrooms and priced below $300,000
specific_houses = Ames.query('BedroomAbvGr > 3 & SalePrice < 300000')

# Group by neighborhood, then calculate the average and total sale price, and count the houses
grouped_data = specific_houses.groupby('Neighborhood').agg({
    'SalePrice': ['mean', 'count']
})

# Renaming the columns for clarity
grouped_data.columns = ['Average Sales Price', 'House Count']

# Round the average sale price to 2 decimal places
grouped_data['Averages Sales Price'] = grouped_data['Average Sales Price'].round(2)

print(grouped_data)
             Average Sales Price  House Count
Neighborhood                                 
BrDale                 113700.00            1
BrkSide                154840.00           10
ClearCr                206756.31           13
CollgCr                233504.17           12
Crawfor                199946.68           19
Edwards                142372.41           29
Gilbert                222554.74           19
IDOTRR                 146953.85           13
MeadowV                135966.67            3
Mitchel                152030.77           13
NAmes                  158835.59           59
NPkVill                143000.00            1
NWAmes                 203846.28           39
NoRidge                272222.22           18
NridgHt                275000.00            3
OldTown                142586.72           43
SWISU                  147493.33           15
Sawyer                 148375.00           16
SawyerW                217952.06           16
Somerst                247333.33            3
StoneBr                270000.00            1
Timber                 247652.17            6

En utilisant Seaborn pour la visualisation, visons à créer une représentation intuitive et accessible de vos données agrégées. Vous procédez à la création d'un graphique à barres qui présente le prix de vente moyen par quartier, complété par des annotations du décompte des maisons pour illustrer à la fois le prix et le volume dans un graphique unique et cohérent.

# Ensure 'Neighborhood' is a column (reset index if it was the index)
grouped_data_reset = grouped_data.reset_index().sort_values(by='Average Sales Price')

# Set the aesthetic style of the plots
sns.set_theme(style="whitegrid")

# Create the bar plot
plt.figure(figsize=(12, 8))
barplot = sns.barplot(
    x='Neighborhood',
    y='Average Sales Price',
    data=grouped_data_reset,
    palette="coolwarm",
    hue='Neighborhood',
    legend=False,
    errorbar=None  # Removes the confidence interval bars
)

# Rotate the x-axis labels for better readability
plt.xticks(rotation=45)

# Annotate each bar with the house count, using enumerate to access the index for positioning
for index, value in enumerate(grouped_data_reset['Average Sales Price']):
    house_count = grouped_data_reset.loc[index, 'House Count']
    plt.text(index, value, f'{house_count}', ha='center', va='bottom')

plt.title('Average Sales Price by Neighborhood', fontsize=18)
plt.xlabel('Neighborhood')
plt.ylabel('Average Sales Price ($)')

plt.tight_layout()  # Adjust the layout
plt.show()

L'analyse et la visualisation ultérieure soulignent la variabilité significative de l'abordabilité et de la disponibilité des maisons répondant à des critères spécifiques (plus de trois chambres et un prix inférieur à 300 000 $) à Ames, dans l'Iowa. Cela démontre non seulement l'application pratique des fonctions de type SQL en Python pour l'analyse de données réelles, mais fournit également des informations précieuses sur la dynamique des marchés immobiliers locaux.

Maîtriser la sélection de lignes et de colonnes dans Pandas

La sélection de sous-ensembles spécifiques de données à partir de DataFrames est une nécessité fréquente. Deux méthodes puissantes à votre disposition sont DataFrame.loc[] et DataFrame.iloc[]. Les deux servent des objectifs similaires (sélectionner des données), mais ils diffèrent dans la manière dont ils référencent les lignes et les colonnes.

Comprendre la méthode DataFrame.loc[]

DataFrame.loc[] is a label-based data selection method, meaning you use the labels of rows and columns to select the data. It’s highly intuitive for selecting data based on column names and row indexes when you know the specific labels you’re interested in.

Syntax: DataFrame.loc[row_label, column_label]

Objectif : sélectionnons toutes les maisons de plus de trois chambres, dont le prix est inférieur à 300 000 $, dans des quartiers spécifiques connus pour leurs prix de vente moyens plus élevés (en fonction de vos conclusions précédentes), et affichons leur "Quartier", " SalePrice' et 'GrLivArea'.

# Assuming 'high_value_neighborhoods' is a list of neighborhoods with higher average sale prices
high_value_neighborhoods = ['NridgHt', 'NoRidge', 'StoneBr']

# Use df.loc[] to select houses based on your conditions and only in high-value neighborhoods
high_value_houses_specific = Ames.loc[(Ames['BedroomAbvGr'] > 3) &
                                      (Ames['SalePrice'] < 300000) &
                                      (Ames['Neighborhood'].isin(high_value_neighborhoods)),
                                      ['Neighborhood', 'SalePrice', 'GrLivArea']]

print(high_value_houses_specific.head())
    Neighborhood  SalePrice  GrLivArea
40       NoRidge     291000       2172
162      NoRidge     285000       2225
460      NridgHt     250000       2088
468      NoRidge     268000       2295
490      NoRidge     260000       2417

Comprendre la méthode DataFrame.iloc[]

En revanche, DataFrame.iloc[] est une méthode d'indexation basée sur un emplacement entier. Cela signifie que vous utilisez des nombres entiers pour spécifier les lignes et les colonnes que vous souhaitez sélectionner. Il est particulièrement utile d’accéder aux données par leur position dans le DataFrame.

Syntaxe : DataFrame.iloc[row_position, column_position]

Objectif : le prochain objectif est de découvrir des options de logements abordables dans l'ensemble de données Ames qui ne compromettent pas l'espace, en ciblant spécifiquement les maisons avec au moins 3 chambres au-dessus du niveau du sol et dont le prix est inférieur à 300 000 $en dehors des quartiers à forte valeur ajoutée. .

# Filter for houses not in the 'high_value_neighborhoods', 
# with at least 3 bedrooms above grade, and priced below $300,000
low_value_spacious_houses = Ames.loc[(~Ames['Neighborhood'].isin(high_value_neighborhoods)) & 
                                     (Ames['BedroomAbvGr'] >= 3) & 
                                     (Ames['SalePrice'] < 300000)]

# Sort these houses by 'SalePrice' to highlight the lower end explicitly
low_value_spacious_houses_sorted = low_value_spacious_houses.sort_values(by='SalePrice').reset_index(drop=True)

# Using df.iloc to select and print the first 5 observations of such low-value houses
low_value_spacious_first_5 = low_value_spacious_houses_sorted.iloc[:5, :]

# Print only relevant columns to match the earlier high-value example: 'Neighborhood', 'SalePrice', 'GrLivArea'
print(low_value_spacious_first_5[['Neighborhood', 'SalePrice', 'GrLivArea']])
  Neighborhood  SalePrice  GrLivArea
0       IDOTRR      40000       1317
1       IDOTRR      50000       1484
2       IDOTRR      55000       1092
3       Sawyer      62383        864
4      Edwards      63000       1112

Dans votre exploration de DataFrame.loc[] et DataFrame.iloc[], vous avez découvert les capacités de pandas pour la sélection de lignes et de colonnes, démontrant la flexibilité et la puissance de ces méthodes dans l’analyse des données. Grâce à des exemples pratiques tirés de l'ensemble de données Ames Housing, vous avez vu comment DataFrame.loc[] permet une sélection intuitive basée sur des étiquettes, idéale pour cibler des données spécifiques basées sur des étiquettes connues. À l'inverse, DataFrame.iloc[] fournit un moyen précis d'accéder aux données par leur emplacement entier, offrant un outil essentiel pour la sélection de position, particulièrement utile dans les scénarios nécessitant de se concentrer sur des segments de données ou des échantillons. Qu'il s'agisse de filtrer des propriétés de grande valeur dans des quartiers sélectionnés ou d'identifier des maisons d'entrée de gamme sur un marché plus large, la maîtrise de ces techniques de sélection enrichit votre boîte à outils de science des données, permettant une exploration des données plus ciblée et plus approfondie.

Exploiter les tableaux croisés dynamiques pour une analyse approfondie du marché du logement

Au fur et à mesure que vous vous aventurez plus loin dans les profondeurs de l'ensemble de données Ames Housing, votre parcours analytique vous présente les puissantes capacités des tableaux croisés dynamiques au sein des pandas. Les tableaux croisés dynamiques constituent un outil précieux pour résumer, analyser et présenter des données complexes dans un format facilement digestible. Cette technique vous permet de croiser et de segmenter les données pour découvrir des modèles et des informations qui autrement pourraient rester cachées. Dans cette section, vous utiliserez des tableaux croisés dynamiques pour disséquer le marché immobilier de manière plus complexe, en vous concentrant sur l'interaction entre les caractéristiques du quartier, le nombre de chambres et les prix de vente.

Pour préparer le terrain pour votre analyse de tableau croisé dynamique, vous filtrez l'ensemble de données pour les maisons dont le prix est inférieur à 300 000 $et avec au moins une chambre au-dessus du sol. Ce critère se concentre sur des options de logement plus abordables, garantissant que votre analyse reste pertinente pour un public plus large. Vous procédez ensuite à la construction d'un tableau croisé dynamique qui segmente le prix de vente moyen par quartier et par nombre de chambres, dans le but de découvrir les modèles qui dictent l'abordabilité et les préférences en matière de logement au sein d'Ames.

# Import an additional library
import numpy as np

# Filter for houses priced below $300,000 and with at least 1 bedroom above grade
affordable_houses = Ames.query('SalePrice < 300000 & BedroomAbvGr > 0')

# Create a pivot table to analyze average sale price by neighborhood and number of bedrooms
pivot_table = affordable_houses.pivot_table(values='SalePrice',
                                            index='Neighborhood',
                                            columns='BedroomAbvGr',
                                            aggfunc='mean').round(2)

# Fill missing values with 0 for better readability and to indicate no data for that segment
pivot_table = pivot_table.fillna(0)

# Adjust pandas display options to ensure all columns are shown
pd.set_option('display.max_columns', None)

print(pivot_table)

Jetons un coup d'œil rapide au tableau croisé dynamique avant de discuter de quelques informations.

BedroomAbvGr          1          2          3          4          5          6
Neighborhood                                                                  
Blmngtn       178450.00  197931.19       0.00       0.00       0.00       0.00
Blueste       192500.00  128557.14  151000.00       0.00       0.00       0.00
BrDale             0.00   99700.00  111946.43  113700.00       0.00       0.00
BrkSide        77583.33  108007.89  140058.67  148211.11  214500.00       0.00
ClearCr       212250.00  220237.50  190136.36  209883.20  196333.33       0.00
CollgCr       154890.00  181650.00  196650.98  233504.17       0.00       0.00
Crawfor       289000.00  166345.00  193433.75  198763.94  210000.00       0.00
Edwards        59500.00  117286.27  134660.65  137332.00  191866.67  119900.00
Gilbert            0.00  172000.00  182178.30  223585.56  204000.00       0.00
Greens        193531.25       0.00       0.00       0.00       0.00       0.00
GrnHill            0.00  230000.00       0.00       0.00       0.00       0.00
IDOTRR         67378.00   93503.57  111681.13  144081.82  162750.00       0.00
Landmrk            0.00       0.00  137000.00       0.00       0.00       0.00
MeadowV        82128.57  105500.00   94382.00  128250.00  151400.00       0.00
Mitchel       176750.00  150366.67  168759.09  149581.82  165500.00       0.00
NAmes         139500.00  133098.93  146260.96  159065.22  180360.00  144062.50
NPkVill            0.00  134555.00  146163.64  143000.00       0.00       0.00
NWAmes             0.00  177765.00  183317.12  201165.00  253450.00       0.00
NoRidge            0.00  262000.00  259436.67  272222.22       0.00       0.00
NridgHt       211700.00  215458.55  264852.71  275000.00       0.00       0.00
OldTown        83333.33  105564.32  136843.57  136350.91  167050.00   97500.00
SWISU          60000.00  121044.44  132257.88  143444.44  158500.00  148633.33
Sawyer        185000.00  124694.23  138583.77  148884.62       0.00  146166.67
SawyerW       216000.00  156147.41  185192.14  211315.00       0.00  237863.25
Somerst       205216.67  191070.18  225570.39  247333.33       0.00       0.00
StoneBr       223966.67  211468.75  233750.00  270000.00       0.00       0.00
Timber             0.00  217263.64  200536.04  241202.60  279900.00       0.00
Veenker       247566.67  245150.00  214090.91       0.00       0.00       0.00

Le tableau croisé dynamique ci-dessus fournit un aperçu complet de la façon dont le prix de vente moyen varie selon les quartiers avec l'inclusion de différents nombres de chambres. Cette analyse révèle plusieurs informations clés :

  • Abordabilité par quartier : vous pouvez voir en un coup d'œil quels quartiers offrent les options les plus abordables pour les maisons avec un nombre de chambres spécifique, ce qui facilite les recherches de logements ciblées.
  • Impact des chambres sur le prix : le tableau met en évidence la manière dont le nombre de chambres influence les prix de vente dans chaque quartier, offrant ainsi une mesure de la prime accordée aux maisons plus grandes.
  • Glaces et opportunités du marché : les zones avec des valeurs nulles indiquent un manque de logements répondant à certains critères, signalant des lacunes potentielles du marché ou des opportunités pour les promoteurs et les investisseurs.

En tirant parti des tableaux croisés dynamiques pour cette analyse, vous avez réussi à distiller des relations complexes au sein du marché immobilier d’Ames dans un format à la fois accessible et informatif. Ce processus met non seulement en valeur la puissante synergie entre les pandas et les techniques d'analyse de type SQL, mais souligne également l'importance des outils sophistiqués de manipulation de données pour découvrir des informations exploitables sur les marchés immobiliers. Aussi instructifs que soient les tableaux croisés dynamiques, leur véritable potentiel est libéré lorsqu'ils sont combinés à une analyse visuelle.

Pour éclairer davantage vos résultats et les rendre plus intuitifs, vous passerez de l’analyse numérique à la représentation visuelle. Une carte thermique est un excellent outil à cette fin, en particulier lorsqu'il s'agit de données multidimensionnelles comme celle-ci. Cependant, pour améliorer la clarté de votre carte thermique et attirer l'attention sur des données exploitables, vous utiliserez une palette de couleurs personnalisée qui met clairement en évidence les combinaisons inexistantes de nombre de quartiers et de chambres.

# Import an additional library
import matplotlib.colors

# Create a custom color map
cmap = matplotlib.colors.LinearSegmentedColormap.from_list("", ["red", "yellow", "green"])

# Mask for "zero" values to be colored with a different shade
mask = pivot_table == 0

# Set the size of the plot
plt.figure(figsize=(14, 10))

# Create a heatmap with the mask
sns.heatmap(pivot_table,
            cmap=cmap,
            annot=True,
            fmt=".0f",
            linewidths=.5,
            mask=mask,
            cbar_kws={'label': 'Average Sales Price ($)'})

# Adding title and labels for clarity
plt.title('Average Sales Price by Neighborhood and Number of Bedrooms', fontsize=16)
plt.xlabel('Number of Bedrooms Above Grade', fontsize=12)
plt.ylabel('Neighborhood', fontsize=12)

# Display the heatmap
plt.show()

La carte thermique illustre de manière frappante la répartition des prix de vente moyens entre les quartiers, segmentés selon le nombre de chambres. Cette aide visuelle à code couleur montre immédiatement quels quartiers d'Ames offrent les options de logement les plus abordables pour les familles de différentes tailles. De plus, l’ombrage distinct des valeurs zéro – indiquant des combinaisons de quartiers et de nombres de chambres qui n’existent pas – est un outil essentiel pour l’analyse du marché. Il met en évidence les lacunes du marché où la demande peut exister, mais pas l'offre, offrant ainsi des informations précieuses aux promoteurs et aux investisseurs. Fait remarquable, votre analyse met également en évidence que les maisons de 6 chambres situées dans le quartier de la « Vieille Ville » sont cotées à moins de 100 000 $. Cette découverte indique une valeur exceptionnelle pour les familles nombreuses ou les investisseurs à la recherche de propriétés avec un grand nombre de chambres à des prix abordables.

Grâce à cette exploration visuelle, vous avez non seulement amélioré votre compréhension de la dynamique du marché immobilier, mais vous avez également démontré le rôle indispensable de la visualisation avancée des données dans l’analyse immobilière. Le tableau croisé dynamique, complété par la carte thermique, illustre comment des techniques sophistiquées de manipulation et de visualisation des données peuvent révéler des informations informatives sur le secteur du logement.

Lectures complémentaires

Cette section fournit plus de ressources sur le sujet si vous souhaitez approfondir.

Documentation Python

  • Méthode DataFrame.query() de Pandas
  • Méthode DataFrame.groupby() de Pandas
  • Méthode DataFrame.loc[] de Pandas
  • Méthode DataFrame.iloc[] de Pandas
  • Méthode DataFrame.pivot_table() de Pandas

Ressources

  • Ensemble de données Ames
  • Dictionnaire de données Ames

Résumé

Ce parcours complet à travers l'ensemble de données Ames Housing souligne la polyvalence et la force des pandas pour effectuer des analyses de données sophistiquées, atteignant ou dépassant souvent ce qui est possible avec SQL dans un environnement qui ne repose pas sur des bases de données traditionnelles. De l’identification des tendances détaillées du marché immobilier à l’identification d’opportunités d’investissement uniques, vous avez présenté une gamme de techniques qui dotent les analystes des outils nécessaires à une exploration approfondie des données. Plus précisément, vous avez appris à :

  • Tirez parti de DataFrame.query() pour la sélection de données, à l'instar de l'instruction SELECT de SQL.
  • Utilisez DataFrame.groupby() pour agréger et résumer les données, similaire au GROUP BY de SQL.
  • Appliquez des techniques avancées de manipulation de données telles que DataFrame.loc[], DataFrame.iloc[] et DataFrame.pivot_table() pour une analyse plus approfondie.

Avez-vous des questions? Veuillez poser vos questions dans les commentaires ci-dessous et je ferai de mon mieux pour y répondre.

Articles connexes