Megosztás a következőn keresztül:


Oktatóanyag: EDA-technikák Databricks-jegyzetfüzetek használatával

Ez az oktatóanyag végigvezeti a feltáró adatelemzés (EDA) Azure Databricks-jegyzetfüzetben a Python használatával történő elvégzésének alapjaion, az adatok betöltésétől az adatvizualizációkon keresztüli elemzésekig.

Az oktatóanyagban használt jegyzetfüzet megvizsgálja a globális energia- és kibocsátási adatokat, és bemutatja, hogyan tölthet be, tisztíthat és vizsgálhat meg adatokat.

Követheti a példajegyzetfüzetet, vagy létrehozhat saját jegyzetfüzetet az alapoktól.

Mi az az EDA?

A felderítő adatelemzés (EDA) az adatelemzési folyamat kritikus kezdeti lépése, amely magában foglalja az adatok elemzését és vizualizációját a következő célokra:

  • Fedje fel a fő jellemzőit.
  • Minták és trendek azonosítása.
  • Anomáliák észlelése.
  • A változók közötti kapcsolatok ismertetése.

Az EDA betekintést nyújt az adathalmazba, és elősegíti a további statisztikai elemzésekkel vagy modellezésekkel kapcsolatos megalapozott döntéseket.

Az Azure Databricks-jegyzetfüzetekkel az adattudósok ismerős eszközökkel végezhetik el az EDA-t. Ez az oktatóanyag például néhány gyakori Python-kódtárat használ az adatok kezelésére és ábrázolására, például:

  • Numpy: a numerikus számítástechnika alapvető könyvtára, amely támogatja a tömböket, mátrixokat és számos matematikai függvényt ezen adatstruktúrákon való működéshez.
  • pandas: a NumPy-ra épülő hatékony adatkezelési és elemzési kódtár, amely olyan adatstruktúrákat kínál, mint a DataFrames a strukturált adatok hatékony kezeléséhez.
  • Plotly: interaktív gráftár, amely lehetővé teszi a kiváló minőségű, interaktív vizualizációk létrehozását az adatelemzéshez és a bemutatóhoz.
  • Matplotlib: a Pythonban statikus, animált és interaktív vizualizációk létrehozására szolgáló átfogó kódtár.

Az Azure Databricks beépített funkciókat is biztosít, amelyekkel a jegyzetfüzet kimenetén belül vizsgálhatja meg az adatokat, például szűrheti és keresheti az adatokat a táblákban, és nagyíthatja a vizualizációkat. A Databricks Assistant segítségével kódot is írhat az Exploratory Data Analysis (EDA) folyamathoz.

Mielőtt hozzákezdene

Az oktatóanyag elvégzéséhez a következőkre van szüksége:

  • Rendelkeznie kell engedéllyel egy meglévő számítási erőforrás használatához vagy egy új számítási erőforrás létrehozásához. Lásd: Compute.
  • [Nem kötelező] Ez az oktatóanyag bemutatja, hogyan használhatja az asszisztenst a kód létrehozásához. Az asszisztens használatához engedélyezni kell az asszisztenst a fiókjában és a munkaterületén. További információt A segéd használata című témakörben talál.

Az adathalmaz letöltése és CSV-fájl importálása

Ez az oktatóanyag az EDA-technikákat mutatja be a globális energia- és kibocsátási adatok vizsgálatával. Ennek követéséhez töltse le a Energiafogyasztás adatkészletét a Mi világunk adatkészlete a Kaggle-ból. Ez az oktatóanyag a owid-energy-data.csv fájlt használja.

Az adathalmaz importálása az Azure Databricks-munkaterületre:

  1. A munkaterület oldalsávjában kattintson Munkaterület elemre a munkaterület böngészőjéhez való navigáláshoz.

  2. A jobb felső sarokban kattintson a kebab menüre, majd a Importálásparancsra.

    Ekkor megnyílik a Importálás modális. Jegyezze meg az itt felsorolt Célmappa. Ez a munkaterület böngészőben az aktuális mappára van állítva, és az importált fájl célhelye lesz.

  3. Válassza Importálás innen: Fájl.

  4. Húzza és ejtse a CSV-fájlt owid-energy-data.csvaz ablakba. Esetleg tallózhat és kiválaszthatja a fájlt.

  5. Kattintson Importálásgombra. A fájlnak a munkaterület célmappájában kell megjelennie.

  6. A fájl későbbi importálásához szüksége van a fájl elérési útjára. Keresse meg a fájlt a munkaterület böngészőjében. Ha a fájl elérési útját a vágólapra szeretné másolni, kattintson a jobb gombbal a fájl nevére, majd válassza Az URL/elérési út másolása>Teljes elérési útlehetőséget.

Új jegyzetfüzet létrehozása

Ha új jegyzetfüzetet szeretne létrehozni a felhasználói kezdőlap mappájában, kattintson a Új ikonÚj elemre az oldalsávon, és válassza Jegyzetfüzet lehetőséget a menüből.

Felül, a jegyzetfüzet neve mellett válassza Python a jegyzetfüzet alapértelmezett nyelveként.

További információ a jegyzetfüzetek létrehozásáról és kezeléséről: Jegyzetfüzetek kezelése.

Adja hozzá a cikkben szereplő kódmintákat a jegyzetfüzet új cellájába. Vagy használja a példajegyzetfüzetet a oktatóanyag követéséhez.

CSV-fájl betöltése

Egy új jegyzetfüzetcellában töltse be a CSV-fájlt. Ehhez importáljon numpy és pandas. Ezek hasznos Python-könyvtárak adatkutatáshoz és adatelemzéshez.

Hozzon létre egy pandas DataFrame-et az adathalmazból a könnyebb feldolgozás és vizualizáció érdekében. Cserélje le az alábbi fájl elérési útját azzal az elérési úttal, amit korábban másolt.

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

Futtassa a cellát. A kimenetnek vissza kell adnia a pandas DataFrame-et, beleértve az egyes oszlopok listáját és típusát.

az importált DataFrame cella kimenete.

Az adatok ismertetése

Az adathalmaz alapjainak megértése elengedhetetlen minden adatelemzési projekthez. Ez magában foglalja az adatok szerkezetének, típusainak és minőségének megismerését.

Egy Azure Databricks-jegyzetfüzetben az display(df) paranccsal jelenítheti meg az adathalmazt.

Cellakimenet, amely táblázatként jeleníti meg az adathalmazt.

Mivel az adathalmaz több mint 10 000 sort tartalmaz, ez a parancs csonkolt adatkészletet ad vissza. Az egyes oszlopok bal oldalán látható az oszlop adattípusa. További információkért lásd a Oszlopok formázása.

Pandas használata adatelemzésekhez

Az adathalmaz hatékony megértéséhez használja a következő pandas-parancsokat:

  • A df.shape parancs visszaadja a DataFrame dimenzióit, így gyorsan áttekintheti a sorok és oszlopok számát.

    df.shape-t megjelenítő cellakimenet.

  • A df.dtypes parancs az egyes oszlopok adattípusait tartalmazza, segít megérteni, hogy milyen típusú adatokkal foglalkozik. Az eredménytáblában az egyes oszlopok adattípusa is látható.

    Cellakimenet, amely megjeleníti a df.dtypes értékeit.

  • A df.describe() parancs leíró statisztikákat hoz létre a numerikus oszlopokhoz, például középértékekhez, szórásokhoz és percentilisekhez, amelyek segítenek azonosítani a mintákat, észlelni a rendellenességeket, és megérteni az adatok eloszlását.

    Cellakimenet a df.describe megjelenítéséhez.

Adatprofil létrehozása

Az Azure Databricks-jegyzetfüzetek beépített adatprofilozási képességeket tartalmaznak. Amikor egy DataFrame-et az Azure Databricks megjelenítési függvényével tekint meg, adatprofilt hozhat létre a tábla kimenetéből.

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

Kattintással adatprofilt hozhat létre a tábla kimenetéből.

Kattintson a +>Adatprofil elemre a kimenetben lévő Táblázat mellett. Ez egy új parancsot futtat, amely létrehozza az adatok profilját a DataFrame-ben.

A létrehozott adatprofil a tábla kimenetéből.

Az adatprofil tartalmazza a numerikus, sztring- és dátumoszlopok összesített statisztikáit, valamint az egyes oszlopok értékeloszlásainak hisztogramjait.

Az adatok törlése

Az adatok tisztítása létfontosságú lépés az EDA-ban annak biztosítása érdekében, hogy az adathalmaz pontos, következetes és értelmes elemzésre kész legyen. Ez a folyamat több kulcsfontosságú feladatot is magában foglal annak biztosítása érdekében, hogy az adatok készen állnak az elemzésre, beleértve a következőket:

  • Azonosítsa és távolítsa el az ismétlődő adatokat.
  • Hiányzó értékek kezelése, amelyek magukban foglalhatják az adott értékre való lecserélését vagy az érintett sorok eltávolítását.
  • Az adattípusok szabványosítása (például sztringek átalakítása datetime) konverziókkal és átalakításokkal a konzisztencia biztosítása érdekében. Érdemes lehet az adatokat olyan formátummá alakítani, amellyel könnyebben dolgozhat.

Ez a tisztítási fázis elengedhetetlen, mivel javítja az adatok minőségét és megbízhatóságát, így pontosabb és éleslátóbb elemzést tesz lehetővé.

Tipp: A Databricks Assistant használata az adattisztítási feladatokhoz

A Databricks Assistant segítségével kódokat hozhat létre. Hozzon létre egy új kódcellát, és kattintson a hivatkozás létrehozására, vagy a jobb felső sarokban lévő asszisztens ikonnal nyissa meg az asszisztenst. Adjon meg egy lekérdezést az asszisztens számára. Az asszisztens létrehozhat Python- vagy SQL-kódot, vagy létrehozhat egy szöveges leírást. A különböző eredményekért kattintson a újragenerálása elemre.

Próbálkozzon például az alábbi kérésekkel az asszisztens használatával az adatok megtisztításához:

  • Ellenőrizze, hogy df tartalmaz-e ismétlődő oszlopokat vagy sorokat. Nyomtasd ki az ismétlődéseket. Ezután törölje az ismétlődéseket.
  • Milyen formátumúak a dátumoszlopok? Módosítsa azt 'YYYY-MM-DD'-ra.
  • Nem fogom használni a XXX oszlopot. Töröld.

Lásd: A Databricks Assistantkódolási súgójának lekérése.

Ismétlődő adatok eltávolítása

Ellenőrizze, hogy az adatokban vannak-e ismétlődő sorok vagy oszlopok. Ha igen, távolítsa el őket.

Borravaló

Az asszisztens használatával hozzon létre kódot.

Próbálja meg beírni a következő kérdést: "Ellenőrizze, hogy a df tartalmaz-e ismétlődő oszlopokat vagy sorokat. Nyomtasd ki a duplikátumokat. Ezután törölje az ismétlődéseket." Az asszisztens az alábbi mintához hasonló kódot hozhat létre.

# 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()]

Ebben az esetben az adathalmaz nem rendelkezik ismétlődő adatokkal.

Null vagy hiányzó értékek kezelése

A NaN- vagy Nullértékek kezelésére gyakran 0-ra cseréljük őket a könnyebb matematikai feldolgozás érdekében.

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

Ez biztosítja, hogy a DataFrame hiányzó adatai 0-ra legyenek cserélve, ami hasznos lehet a későbbi adatelemzési vagy feldolgozási lépésekhez, ahol a hiányzó értékek problémákat okozhatnak.

Dátumok újraformázása

A dátumokat gyakran különböző módokon formázza különböző adathalmazokban. Lehetnek dátumformátumban, sztringekben vagy egész számokban.

Ehhez az elemzéshez a year oszlopot egész számként kell kezelni. Ennek egyik módja a következő kód:

# 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

Ez biztosítja, hogy a year oszlop csak egész évértékeket tartalmaz, és az érvénytelen bejegyzések NaT (Nem idő) értékre vannak konvertálva.

Az adatok megismerése a Databricks notebook kimeneti táblázatával

Az Azure Databricks beépített funkciókkal segíti az adatok feltárásában a kimeneti tábla használatával.

Egy új cellában az display(df) használatával jelenítheti meg az adathalmazt táblázatként.

Cellakimenet, amely táblázatként jeleníti meg az adathalmazt.

A kimeneti tábla használatával többféleképpen is megismerheti az adatokat:

Adott sztring vagy érték keresése az adatokban

Kattintson a táblázat jobb felső részén található keresés ikonra, és írja be a keresést.

Keressen egy értéket a tábla kimenetében.

Adott feltételek szűrése

Beépített táblaszűrők használatával szűrheti az oszlopokat adott feltételekre. Többféleképpen is létrehozhat szűrőt. Lásd: Szűrőeredmények.

Borravaló

A Databricks Assistant használatával szűrőket hozhat létre. Kattintson a táblázat jobb felső sarkában található szűrőikonra. Adja meg a szűrőfeltételt. A Databricks Assistant automatikusan létrehoz önnek egy szűrőt.

A tábla kimenetének szűrése az Asszisztens használatával.

Vizualizációk létrehozása az adatkészlet használatával

A kimeneti tábla tetején kattintson +>Vizualizációs elemre a vizualizációszerkesztő megnyitásához.

Vizualizáció hozzáadása a táblázat kimenetének használatával.

Válassza ki a vizualizáció típusát és oszlopait. A szerkesztő a konfiguráció alapján megjeleníti a diagram előnézetét. Az alábbi ábra például azt mutatja be, hogyan adhat hozzá több vonaldiagramot a különböző megújuló energiaforrások időbeli felhasználásának megtekintéséhez.

A vizualizáció konfigurálása a vizualizációszerkesztővel.

Kattintson a Mentés gombra a vizualizáció lapként való hozzáadásához a cellakimenetben.

Lásd: Új vizualizáció létrehozása.

Az adatok megismerése és vizualizációja Python-kódtárak használatával

Az adatok vizualizációkkal való feltárása az EDA alapvető eleme. A vizualizációk segítenek olyan minták, trendek és kapcsolatok feltárásában az adatokban, amelyek nem feltétlenül jelennek meg azonnal numerikus elemzéssel. Az olyan könyvtárak használata, mint a Plotly és a Matplotlib, a gyakori vizualizációs technikákhoz, például pontdiagramokhoz, sávdiagramokhoz, vonaldiagramokhoz és hisztogramokhoz. Ezek a vizuális eszközök lehetővé teszik az adattudósoknak az anomáliák azonosítását, az adateloszlások megértését és a változók közötti korrelációk megfigyelését. A pontdiagramok például kiemelhetik a kiugró értékeket, míg az idősordiagramok trendeket és szezonalitást fedhetnek fel.

Tömb létrehozása egyedi országokhoz

Vizsgálja meg az adathalmazban szereplő országokat, és hozzon létre egy tömböt az egyedi országok számára. A tömb létrehozásakor a countryként felsorolt entitások láthatók.

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

kimenet:

Cellakimenet egyedi országtömböt jelenít meg.

rálátás:

A country oszlop különböző entitásokat tartalmaz, például a világ, a magas jövedelmű országok, Ázsia és az Egyesült Államok, amelyek nem mindig közvetlenül összehasonlíthatók. Hasznosabb lehet az adatok régiónkénti szűrése.

Tegyük fel, hogy a 2000-es év legnagyobb üvegházhatásúgáz-kibocsátású 10 országára szeretné összpontosítani a vizsgálatot. Szűrheti az adatokat azokra az évekre, amelyeket meg szeretne tekinteni, és a legtöbb károsanyag-kibocsátással rendelkező top 10 országot, majd a plotly eszközzel létrehozhat egy vonaldiagramot a kibocsátásukról az idő függvényében.

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()

kimenet:

2000 és 2022 között az első 10 kibocsátó üvegházhatásúgáz-kibocsátási trendjeit bemutató diagram.

Bepillantás:

Az üvegházhatást okozó gázok kibocsátása 2000 és 2022 között felfelé haladt, néhány olyan ország kivételével, ahol a kibocsátás viszonylag stabil volt, és ez idő alatt enyhe csökkenést mutatott.

Kibocsátás szűrése és diagramkészítés régiónként

Szűrje ki az adatokat régiónként, és számítsa ki az egyes régiók teljes kibocsátását. Ezután ábrázolja az adatokat sávdiagramként:

# 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()

kimenet:

ábra az üvegházhatást okozó gázok régiónkénti kibocsátásával

Insight:

Ázsiában a legmagasabb az üvegházhatást okozó gázok kibocsátása. Óceánia, Dél-Amerika és Afrika a legalacsonyabb üvegházhatásúgáz-kibocsátást termeli.

Megújuló energia részarányának növekedésének kiszámítása és grafikonja

Hozzon létre egy új funkciót/oszlopot, amely kiszámítja a megújuló energia arányát a megújuló energiafelhasználás és az elsődleges energiafogyasztás arányában. Ezután rangsorolja az országokat az átlagos megújulóenergia-részesedésük alapján. Az első 10 ország számára ábrázolja a megújuló energia arányát az idő függvényében:

# 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()

kimenet:

a megújuló energiák arányának időbeli növekedését mutató diagram a megújuló energiában vezető 10 országban.

Észrevétel:

Norvégia és Izland élen jár a megújuló energiában, fogyasztásuk több mint fele megújuló energiából származik.

Izland és Svédország volt a legnagyobb növekedés a megújuló energia részarányában. Minden országban időnként visszaesések és emelkedések tapasztalhatók, ami azt mutatja, hogy a megújuló energiák arányának növekedése nem feltétlenül lineáris. Érdekes, hogy Közép-Afrika a 2010-es évek elején visszaesést látott, de 2020-ban visszapattant.

Pontdiagram: A megújuló energia hatásának bemutatása a legnagyobb kibocsátók esetében

Szűrje ki a 10 legfontosabb kibocsátó adatait, majd használjon pontdiagramot a megújuló energia arányának és az üvegházhatást okozó gázok kibocsátásának időbeli megtekintéséhez.

# 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()

kimenet:

diagram, amely a megújuló energia kibocsátásra gyakorolt hatását mutatja a legfontosabb kibocsátók számára.

Észrevétel:

Mivel egy ország több megújuló energiát használ, az üvegházhatást okozó gázok kibocsátása is nagyobb, ami azt jelenti, hogy teljes energiafogyasztása gyorsabban emelkedik, mint a megújuló fogyasztás. Észak-Amerika kivétel abban az esetben, ha az üvegházhatást okozó gázok kibocsátása viszonylag állandó maradt az évek során, mivel a megújuló részaránya folyamatosan növekedett.

A várható globális energiafogyasztás modellje

Összesíti a globális elsődleges energiafogyasztást év szerint, majd létrehoz egy autoregresszív integrált mozgóátlag -modellt (ARIMA) a következő néhány évre vonatkozó teljes globális energiafogyasztás előrejelzéséhez. Ábrázolja a múltbeli és az előrejelzett energiafogyasztás a Matplotlib használatával.

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()

kimenet:

korábbi és előre jelzett globális energiafogyasztás diagramja.

Bepillantás:

Ez a modell azt vetíti előre, hogy a globális energiafogyasztás továbbra is növekedni fog.

Példajegyzetfüzet

A cikk lépéseinek végrehajtásához használja az alábbi jegyzetfüzetet. A jegyzetfüzet Azure Databricks-munkaterületre való importálásával kapcsolatos utasításokért lásd: Jegyzetfüzet importálása.

Oktatóanyag: EDA globális energiaadatokkal

Jegyzetfüzet lekérése

Következő lépések

Most, hogy elvégezte az adathalmaz kezdeti feltáró adatelemzését, próbálkozzon az alábbi lépésekkel:

  • További EDA-vizualizációs példákért tekintse meg a példajegyzetfüzet függelékét.
  • Ha az oktatóanyag során hibákba ütközött, próbálja meg a beépített hibakeresővel végiglépkedni a kódon. Lásd: Jegyzetfüzetek hibakeresése.
  • Megoszthatja a jegyzetfüzetet a csapatával, hogy megérthesse az elemzést. Attól függően, hogy milyen engedélyeket ad nekik, ezek segíthetnek a kód fejlesztésében az elemzés továbbfejlesztéséhez, vagy megjegyzéseket és javaslatokat adhatnak a további vizsgálathoz.
  • Miután véglegesítette az elemzést, hozzon létre egy jegyzetfüzet-irányítópultot vagy egy AI/BI-irányítópultot az érdekelt felekkel megosztható főbb vizualizációkkal.