Delen via


Zelfstudie: EDA-technieken met databricks-notebooks

In deze zelfstudie wordt u begeleid bij de basisbeginselen van het uitvoeren van verkennende gegevensanalyse (EDA) met behulp van Python in een Azure Databricks-notebook, van het laden van gegevens tot het genereren van inzichten via gegevensvisualisaties.

Het notebook dat in deze zelfstudie wordt gebruikt, onderzoekt wereldwijde energie- en emissiegegevens en laat zien hoe u gegevens laadt, opschoont en verkent.

U kunt het voorbeeldnotitieblok volgen of uw eigen notitieblok helemaal zelf maken.

Wat is EDA?

Experimentele gegevensanalyse (EDA) is een kritieke eerste stap in het data science-proces waarbij gegevens worden geanalyseerd en gevisualiseerd voor:

  • Ontdek de belangrijkste kenmerken.
  • Patronen en trends identificeren.
  • Afwijkingen detecteren.
  • Relaties tussen variabelen begrijpen.

EDA biedt inzicht in de gegevensset, waardoor weloverwogen beslissingen over verdere statistische analyses of modellering worden vergemakkelijkt.

Met Azure Databricks-notebooks kunnen gegevenswetenschappers EDA uitvoeren met behulp van vertrouwde hulpprogramma's. In deze zelfstudie worden bijvoorbeeld enkele algemene Python-bibliotheken gebruikt voor het verwerken en plotten van gegevens, waaronder:

  • Numpy-: een fundamentele bibliotheek voor numerieke computing, die ondersteuning biedt voor arrays, matrices en een breed scala aan wiskundige functies om te werken met deze gegevensstructuren.
  • pandas: een krachtige bibliotheek voor gegevensmanipulatie en analyse, gebouwd op NumPy, die gegevensstructuren zoals DataFrames biedt om gestructureerde gegevens efficiënt te verwerken.
  • Plotly: een interactieve grafiekbibliotheek waarmee u interactieve visualisaties van hoge kwaliteit kunt maken voor gegevensanalyse en -presentatie.
  • Matplotlib: een uitgebreide bibliotheek voor het maken van statische, geanimeerde en interactieve visualisaties in Python.

Azure Databricks biedt ook ingebouwde functies waarmee u uw gegevens in de uitvoer van het notebook kunt verkennen, zoals het filteren en doorzoeken van gegevens in tabellen en het inzoomen op visualisaties. U kunt Databricks Assistant ook gebruiken om u te helpen code te schrijven voor EDA.

Voordat u begint

U hebt het volgende nodig om deze zelfstudie te voltooien:

  • U moet gemachtigd zijn om een bestaande rekenresource te gebruiken of een nieuwe rekenresource te maken. Zie Compute.
  • [Optioneel] In deze zelfstudie wordt beschreven hoe u de assistent gebruikt om code te genereren. Zie Databricks Assistant gebruiken voor meer informatie.

De gegevensset downloaden en CSV-bestand importeren

In deze zelfstudie worden EDA-technieken gedemonstreerd door wereldwijde energie- en emissiegegevens te onderzoeken. Als u wilt volgen, downloadt u de Gegevensset energieverbruik van Our World in Data van Kaggle. In deze zelfstudie wordt het owid-energy-data.csv-bestand gebruikt.

De gegevensset importeren in uw Azure Databricks-werkruimte:

  1. Klik in de zijbalk van de werkruimte op Werkruimte om naar de werkruimtebrowser te navigeren.

  2. Sleep het CSV-bestand, owid-energy-data.csv, naar uw werkruimte en zet het neer.

    Hiermee opent u de importmodaal. Let op de doelmap zoals hier vermeld. Dit is ingesteld op uw huidige map in de werkruimtebrowser en wordt de bestemming van het geïmporteerde bestand.

  3. Klik op importeren. Het bestand moet in de doelmap in uw werkruimte verschijnen.

  4. U hebt het bestandspad nodig om het bestand later in uw notitieblok te laden. Zoek het bestand in uw werkruimtebrowser. Als u het bestandspad naar het klembord wilt kopiëren, klikt u met de rechtermuisknop op de bestandsnaam, en selecteert u URL/pad kopiëren>volledig pad.

Een nieuw notitieblok maken

Als u een nieuw notitieblok wilt maken in uw gebruikersmap, klikt u op Nieuw pictogramNieuw in de zijbalk en selecteert u Notitieblok in het menu.

Selecteer bovenaan, naast de naam van het notitieblok, Python als de standaardtaal voor het notebook.

Zie Notitieblokken beherenvoor meer informatie over het maken en beheren van notitieblokken.

Voeg elk van de codevoorbeelden in dit artikel toe aan een nieuwe cel in uw notebook. U kunt ook het voorbeeldnotitieblok gebruiken om de tutorial te volgen.

CSV-bestand laden

Laad het CSV-bestand in een nieuwe notebookcel. Hiervoor importeert u numpy en pandas. Dit zijn nuttige Python-bibliotheken voor gegevenswetenschap en -analyse.

Maak een Pandas DataFrame op basis van de gegevensset voor eenvoudigere verwerking en visualisatie. Vervang het onderstaande bestandspad door het pad dat u eerder hebt gekopieerd.

import numpy as np
import pandas as pd # Data processing, CSV file I/O (e.g. pd.read_csv)
df=pd.read_csv('/Workspace/Users/demo@databricks.com/owid-energy-data.csv') # Replace the file path here with the workspace path you copied earlier

Voer de cel uit. De uitvoer moet het Pandas DataFrame retourneren, inclusief een lijst met elke kolom en het bijbehorende type.

Celuitvoer van het geïmporteerde DataFrame.

Inzicht in de gegevens

Inzicht in de basisprincipes van de gegevensset is van cruciaal belang voor elk data science-project. Hierbij moet u vertrouwd raken met de structuur, typen en kwaliteit van de gegevens die u bij de hand hebt.

In een Azure Databricks-notebook kunt u de opdracht display(df) gebruiken om de gegevensset weer te geven.

Celuitvoer die de dataset weergeeft in de vorm van een tabel.

Omdat de gegevensset meer dan 10.000 rijen heeft, retourneert deze opdracht een afgekapte gegevensset. Links van elke kolom ziet u het gegevenstype van de kolom. Zie Kolommen opmakenvoor meer informatie.

Pandas gebruiken voor gegevensinzichten

Gebruik de volgende pandas-opdrachten om uw gegevensset effectief te begrijpen:

  • De opdracht df.shape retourneert de dimensies van het DataFrame, zodat u een snel overzicht krijgt van het aantal rijen en kolommen.

    Celuitvoer die df.shape weergeeft.

  • De opdracht df.dtypes bevat de gegevenstypen van elke kolom, zodat u inzicht krijgt in het soort gegevens waarmee u te maken hebt. U kunt ook het gegevenstype voor elke kolom in de resultatentabel zien.

    Celuitvoer die df.dtypes weergeeft.

  • Met de opdracht df.describe() worden beschrijvende statistieken gegenereerd voor numerieke kolommen, zoals gemiddelde, standaarddeviatie en percentielen, waarmee u patronen kunt identificeren, afwijkingen kunt detecteren en de verdeling van uw gegevens kunt begrijpen. Gebruik deze functie met display() om overzichtsstatistieken in een interactieve tabelvorm te zien. Zie De gegevens verkennen met behulp van de uitvoertabel van het Databricks-notebook.

    Celuitvoer waarbij df.describe wordt weergegeven.

Een gegevensprofiel genereren

Opmerking

Beschikbaar in Databricks Runtime 9.1 LTS en hoger.

Azure Databricks-notebooks bevatten ingebouwde mogelijkheden voor gegevensprofilering. Wanneer u een DataFrame bekijkt met de weergavefunctie van Azure Databricks, kunt u een gegevensprofiel genereren op basis van de tabeluitvoer.

# Display the DataFrame, then click "+ > Data Profile" to generate a data profile
display(df)

Klik om een gegevensprofiel te genereren op basis van de tabeluitvoer.

Klik op +>Gegevensprofiel naast de Tabel in de uitvoer. Hiermee wordt een nieuwe opdracht uitgevoerd waarmee een profiel van de gegevens in het DataFrame wordt gegenereerd.

Het gegenereerde gegevensprofiel uit de tabeluitvoer.

Het gegevensprofiel bevat samenvattingsstatistieken voor numerieke, tekenreeks- en datumkolommen, evenals histogrammen van de waardedistributies voor elke kolom. U kunt ook programmatisch gegevensprofielen genereren; zie opdracht samenvatten (dbutils.data.summarize).

De gegevens opschonen

Het opschonen van gegevens is een essentiële stap in EDA om ervoor te zorgen dat de gegevensset nauwkeurig, consistent en gereed is voor zinvolle analyse. Dit proces omvat verschillende belangrijke taken om ervoor te zorgen dat de gegevens gereed zijn voor analyse, waaronder:

  • Dubbele gegevens identificeren en verwijderen.
  • Het verwerken van ontbrekende waarden, waarbij deze mogelijk moeten worden vervangen door een specifieke waarde of het verwijderen van de betrokken rijen.
  • Het standaardiseren van gegevenstypen (bijvoorbeeld het converteren van tekenreeksen naar datetime) via conversies en transformaties om consistentie te garanderen. U kunt ook gegevens converteren naar een indeling waarmee u gemakkelijker kunt werken.

Deze reinigingsfase is essentieel omdat het de kwaliteit en betrouwbaarheid van de gegevens verbetert, waardoor een nauwkeurigere en inzichtelijkere analyse mogelijk is.

Tip: Databricks Assistant gebruiken om te helpen bij het opschonen van gegevens

U kunt Databricks Assistant gebruiken om code te genereren. Maak een nieuwe code-cel en klik op de koppeling genereren of gebruik het assistentpictogram in de rechterbovenhoek om de assistent te openen. Voer een query in voor de assistent. De assistent kan Python- of SQL-code genereren of een tekstbeschrijving genereren. Klik voor verschillende resultaten op opnieuw genereren.

Probeer bijvoorbeeld de volgende aanwijzingen om de assistent te gebruiken om u te helpen bij het opschonen van de gegevens:

  • Controleer of df dubbele kolommen of rijen bevat. De duplicaten afdrukken. Verwijder vervolgens de duplicaten.
  • In welk formaat zijn de datumkolommen? Wijzig deze in 'YYYY-MM-DD'.
  • Ik ga de XXX kolom niet gebruiken. Verwijder het.

Zie Ontvang hulp bij coderen van de Databricks Assistant.

Dubbele gegevens verwijderen

Controleer of de gegevens dubbele rijen of kolommen bevatten. Zo ja, verwijder ze dan.

Aanbeveling

De assistent gebruiken om code voor u te genereren.

Voer de prompt in: “Controleer of df dubbele kolommen of rijen bevat." De duplicaten afdrukken. Verwijder vervolgens de duplicaten. De assistent kan code genereren zoals in het onderstaande voorbeeld.

# Check for duplicate rows
duplicate_rows = df.duplicated().sum()

# Check for duplicate columns
duplicate_columns = df.columns[df.columns.duplicated()].tolist()

# Print the duplicates
print("Duplicate rows count:", duplicate_rows)
print("Duplicate columns:", duplicate_columns)

# Drop duplicate rows
df = df.drop_duplicates()

# Drop duplicate columns
df = df.loc[:, ~df.columns.duplicated()]

In dit geval bevat de gegevensset geen dubbele gegevens.

Null- of ontbrekende waarden verwerken

Een veelgebruikte manier om NaN- of Null-waarden te behandelen, is door ze te vervangen door 0 voor eenvoudigere wiskundige verwerking.

df = df.fillna(0) # Replace all NaN (Not a Number) values with 0

Dit zorgt ervoor dat ontbrekende gegevens in het DataFrame worden vervangen door 0, wat nuttig kan zijn voor latere gegevensanalyse of verwerkingsstappen waarbij ontbrekende waarden problemen kunnen veroorzaken.

Datums opnieuw opmaken

Datums worden vaak op verschillende manieren opgemaakt in verschillende gegevenssets. Ze kunnen in datumformaat, tekenreeksen of gehele getallen zijn.

Voor deze analyse behandelt u de year kolom als een geheel getal. De volgende code is een manier om dit te doen:

# Ensure the 'year' column is converted to the correct data type (integer for year)
df['year'] = pd.to_datetime(df['year'], format='%Y', errors='coerce').dt.year

# Confirm the changes
df.year.dtype

Dit zorgt ervoor dat de kolom year alleen gehele jaartallen bevat, waarbij ongeldige vermeldingen worden geconverteerd naar NaT Geen tijd.

De gegevens verkennen met behulp van de uitvoertabel van het Databricks-notebook

Azure Databricks biedt ingebouwde functies om uw gegevens te verkennen met behulp van de uitvoertabel.

Gebruik in een nieuwe cel display(df) om de gegevensset weer te geven als een tabel.

Verken gegevens met behulp van de uitvoertabel van databricks-notebook.

Met behulp van de uitvoertabel kunt u uw gegevens op verschillende manieren verkennen:

Doorzoek de gegevens naar een specifieke tekenreeks of waarde

Klik op het zoekpictogram rechtsboven in de tabel en voer uw zoekopdracht in.

de tabeluitvoer naar een waarde doorzoeken.

Filteren op specifieke voorwaarden

U kunt ingebouwde tabelfilters gebruiken om uw kolommen te filteren op specifieke voorwaarden. Er zijn verschillende manieren om een filter te maken. Zie Filterresultaten.

Aanbeveling

Gebruik Databricks Assistant om filters te maken. Klik op het filterpictogram in de rechterbovenhoek van de tabel. Voer de filtervoorwaarde in. Databricks Assistant genereert automatisch een filter voor u.

De tabeluitvoer filteren met behulp van Assistent.

Visualisaties maken met behulp van de gegevensset

Klik boven aan de uitvoertabel op +>Visualisatie om de visualisatie-editor te openen.

Een visualisatie toevoegen met behulp van de tabeluitvoer.

Selecteer het visualisatietype en de kolommen die u wilt visualiseren. In de editor wordt een voorbeeld van de grafiek weergegeven op basis van uw configuratie. In de onderstaande afbeelding ziet u bijvoorbeeld hoe u meerdere lijndiagrammen toevoegt om het verbruik van verschillende hernieuwbare energiebronnen in de loop van de tijd weer te geven.

De visualisatie configureren met behulp van de visualisatie-editor.

Klik op opslaan om de visualisatie toe te voegen als een tabblad in de celuitvoer.

Zie Een nieuwe visualisatie maken.

De gegevens verkennen en visualiseren met behulp van Python-bibliotheken

Het verkennen van gegevens met behulp van visualisaties is een fundamenteel aspect van EDA. Visualisaties helpen bij het ontdekken van patronen, trends en relaties binnen de gegevens die mogelijk niet direct zichtbaar zijn via numerieke analyse. Gebruik bibliotheken zoals Plotly of Matplotlib voor algemene visualisatietechnieken, waaronder spreidingsdiagrammen, staafdiagrammen, lijndiagrammen en histogrammen. Met deze visuele hulpprogramma's kunnen gegevenswetenschappers afwijkingen identificeren, gegevensdistributies begrijpen en correlaties tussen variabelen observeren. Spreidingsdiagrammen kunnen bijvoorbeeld uitbijters markeren, terwijl tijdreeksgrafieken trends en seizoenspatronen kunnen onthullen.

Een matrix maken voor unieke landen

Bekijk de landen die zijn opgenomen in de gegevensset door een matrix te maken voor unieke landen. Als u een matrix maakt, ziet u de entiteiten die worden vermeld als country.

# Get the unique countries
unique_countries = df['country'].unique()
unique_countries

uitvoer:

Celuitvoer die de lijst van unieke landen weergeeft.

Inzicht:

De country kolom bevat verschillende entiteiten, waaronder wereld-, hoog-inkomenslanden, Azië en Verenigde Staten, die niet altijd rechtstreeks vergelijkbaar zijn. Het kan handiger zijn om de gegevens te filteren op regio.

Stel dat u uw onderzoek wilt richten op de 10 landen met de hoogste uitstoot van broeikasgassen in de jaren 2000. U kunt de gegevens filteren voor de jaren die u wilt bekijken en de top 10 landen met de meeste emissies en vervolgens plotly gebruiken om een lijndiagram te maken waarin de emissies in de loop van de tijd worden weergegeven.

import plotly.express as px

# Filter data to include only years from 2000 to 2022
filtered_data = df[(df['year'] >= 2000) & (df['year'] <= 2022)]

# Get the top 10 countries with the highest emissions in the filtered data
top_countries = filtered_data.groupby('country')['greenhouse_gas_emissions'].sum().nlargest(10).index

# Filter the data for those top countries
top_countries_data = filtered_data[filtered_data['country'].isin(top_countries)]

# Plot emissions trends over time for these countries
fig = px.line(top_countries_data, x='year', y='greenhouse_gas_emissions', color='country',
             title="Greenhouse Gas Emissions Trends for Top 10 Countries (2000 - 2022)")
fig.show()

uitvoer:

grafiek met de trends in de uitstoot van broeikasgassen voor top 10 emitters van 2000 tot 2022.

Inzicht:

De uitstoot van broeikasgassen nam toe vanaf 2000-2022, met uitzondering van een aantal landen waar de emissies relatief stabiel waren met een lichte daling gedurende die periode.

Emissies filteren en in kaart brengen per regio

Filter de gegevens op regio en bereken de totale emissies voor elke regio. Teken vervolgens de gegevens als staafdiagram:

# Filter out regional entities
regions = ['Africa', 'Asia', 'Europe', 'North America', 'South America', 'Oceania']

# Calculate total emissions for each region
regional_emissions = df[df['country'].isin(regions)].groupby('country')['greenhouse_gas_emissions'].sum()

# Plot the comparison
fig = px.bar(regional_emissions, title="Greenhouse Gas Emissions by Region")
fig.show()

uitvoer:

Grafiek met de uitstoot van broeikasgassen per regio.

Insight-:

Azië heeft de hoogste uitstoot van broeikasgassen. Oceanië, Zuid-Amerika en Afrika produceren de laagste uitstoot van broeikasgassen.

Groei van hernieuwbare energie delen berekenen en in een grafiek weergeven

Maak een nieuwe functie/kolom waarmee het aandeel hernieuwbare energie wordt berekend als een verhouding van het verbruik van hernieuwbare energie ten opzichte van het primaire energieverbruik. Rangschik vervolgens de landen op basis van hun gemiddelde aandeel van hernieuwbare energie. Plot voor de top 10 landen hun aandeel hernieuwbare energie in de loop van de tijd:

# Calculate the renewable energy share and save it as a new column called "renewable_share"
df['renewable_share'] = df['renewables_consumption'] / df['primary_energy_consumption']

# Rank countries by their average renewable energy share
renewable_ranking = df.groupby('country')['renewable_share'].mean().sort_values(ascending=False)

# Filter for countries leading in renewable energy share
leading_renewable_countries = renewable_ranking.head(10).index
leading_renewable_data = df[df['country'].isin(leading_renewable_countries)]
# filtered_data = df[(df['year'] >= 2000) & (df['year'] <= 2022)]
leading_renewable_data_filter=leading_renewable_data[(leading_renewable_data['year'] >= 2000) & (leading_renewable_data['year'] <= 2022)]
# Plot renewable share over time for top renewable countries
fig = px.line(leading_renewable_data_filter, x='year', y='renewable_share', color='country',
             title="Renewable Energy Share Growth Over Time for Leading Countries")
fig.show()

uitvoer:

grafiek met de groei van het aandeel voor hernieuwbare energie in de loop van de tijd voor de 10 landen die leiden tot hernieuwbare energie.

Inzicht:

Noorwegen en IJsland leiden de wereld in hernieuwbare energie, met meer dan de helft van hun verbruik afkomstig van hernieuwbare energie.

IJsland en Zweden zagen de grootste groei in hun aandeel in hernieuwbare energie. Alle landen zagen af en toe dalen en stijgen, wat laat zien hoe de groei van het hernieuwbare energie-aandeel niet noodzakelijkerwijs lineair is. Interessant is dat Midden-Afrika begin jaren 2010 een dip zag, maar in 2020 terug kwam.

Spreidingsplot: Impact van hernieuwbare energie voor top-emitters weergeven

Filter de gegevens voor de top 10 emitters en gebruik vervolgens een spreidingsplot om te kijken naar het aandeel van hernieuwbare energie versus de uitstoot van broeikasgassen in de loop van de tijd.

# Select top emitters and calculate renewable share vs. emissions
top_emitters = df.groupby('country')['greenhouse_gas_emissions'].sum().nlargest(10).index
top_emitters_data = df[df['country'].isin(top_emitters)]

# Plot renewable share vs. greenhouse gas emissions over time
fig = px.scatter(top_emitters_data, x='renewable_share', y='greenhouse_gas_emissions',
                color='country', title="Impact of Renewable Energy on Emissions for Top Emitters")
fig.show()

uitvoer:

grafiek met de impact van hernieuwbare energie op emissies voor de belangrijkste emitters.

Inzicht:

Omdat een land gebruikmaakt van meer hernieuwbare energie, heeft het ook meer uitstoot van broeikasgassen, wat betekent dat het totale energieverbruik sneller toeneemt dan het hernieuwbare verbruik. Noord-Amerika is een uitzondering omdat de uitstoot van broeikasgassen in de loop van de jaren relatief constant bleef, omdat het hernieuwbare aandeel bleef toenemen.

Modelgeprojecteerde wereldwijde energieconsumptie

Aggregeer het wereldwijde primaire energieverbruik per jaar en bouw vervolgens een ARIMA-model (Autoregressive Integrated Moving Average) om het wereldwijde energieverbruik voor de komende jaren te voorspellen. Plot het historische en geraamde energieverbruik met matplotlib.

import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
import matplotlib.pyplot as plt

# Aggregate global primary energy consumption by year
global_energy = df[df['country'] == 'World'].groupby('year')['primary_energy_consumption'].sum()

# Build an ARIMA model for projection
model = ARIMA(global_energy, order=(1, 1, 1))
model_fit = model.fit()
forecast = model_fit.forecast(steps=10)  # Projecting for 10 years

# Plot historical and forecasted energy consumption
plt.plot(global_energy, label='Historical')
plt.plot(range(global_energy.index[-1] + 1, global_energy.index[-1] + 11), forecast, label='Forecast')
plt.xlabel("Year")
plt.ylabel("Primary Energy Consumption")
plt.title("Projected Global Energy Consumption")
plt.legend()
plt.show()

uitvoer:

diagram met het historische en verwachte wereldwijde energieverbruik.

Inzicht:

Dit model projecteert dat het wereldwijde energieverbruik blijft stijgen.

Voorbeeldnotitieblok

Gebruik het volgende notebook om de stappen in dit artikel uit te voeren. Zie Een notebook importerenvoor instructies over het importeren van een notebook in een Azure Databricks-werkruimte.

Zelfstudie: EDA met wereldwijde energiegegevens

Notitieblok ophalen

Volgende stappen

Nu u een eerste verkennende gegevensanalyse voor uw gegevensset hebt uitgevoerd, voert u de volgende stappen uit:

  • Zie de bijlage in het voorbeeldnotitieblok voor aanvullende voorbeelden van EDA-visualisaties.
  • Als er fouten zijn opgetreden tijdens het doorlopen van deze zelfstudie, kunt u het ingebouwde foutopsporingsprogramma gebruiken om uw code te doorlopen. Zie Debug-notebooks.
  • uw notitieblok delen met uw team, zodat ze uw analyse kunnen begrijpen. Afhankelijk van de machtigingen die u hen geeft, kunnen ze helpen code te ontwikkelen om de analyse verder uit te voeren of opmerkingen en suggesties toe te voegen voor verder onderzoek.
  • Zodra u uw analyse hebt voltooid, maakt u een notebookdashboard of een AI/BI-dashboard met de belangrijkste visualisaties die u wilt delen met belanghebbenden.