Udostępnij za pośrednictwem


Samouczek: techniki EDA za pomocą notatników usługi Databricks

Ten samouczek przeprowadzi Cię przez podstawy przeprowadzania eksploracyjnej analizy danych przy użyciu języka Python w notesie usługi Azure Databricks, od ładowania danych do generowania szczegółowych informacji za pomocą wizualizacji danych.

Notatnik używany w tym samouczku został analizuje globalne dane dotyczące energii i emisji oraz demonstruje, jak ładować, czyścić i eksplorować dane.

Możesz skorzystać z przykładowego notesu lub utworzyć własny notes od podstaw.

Co to jest EDA?

Eksploracyjna analiza danych (EDA) to krytyczny początkowy krok w procesie nauki o danych, który obejmuje analizowanie i wizualizowanie danych do:

  • Odkryj swoje główne cechy.
  • Identyfikowanie wzorców i trendów.
  • Wykrywanie anomalii.
  • Omówienie relacji między zmiennymi.

Analiza EDA zapewnia wgląd w zestaw danych, ułatwiając świadome decyzje dotyczące dalszych analiz statystycznych lub modelowania.

Dzięki notesom usługi Azure Databricks analitycy danych mogą wykonywać analizy EDA przy użyciu znanych narzędzi. Na przykład w tym samouczku używane są niektóre typowe biblioteki języka Python do obsługi i kreślenia danych, w tym:

  • numpy: podstawowa biblioteka do obliczeń numerycznych, zapewniająca obsługę tablic, macierzy i szerokiego zakresu funkcji matematycznych do działania na tych strukturach danych.
  • pandas: zaawansowana biblioteka do manipulowania danymi i analizy oparta na bibliotece NumPy, która oferuje struktury danych, takie jak DataFrames, do efektywnej obsługi danych strukturalnych.
  • Plotly: interaktywna biblioteka grafów, która umożliwia tworzenie wysokiej jakości, interaktywnych wizualizacji na potrzeby analizy i prezentacji danych.
  • Matplotlib: kompleksowa biblioteka do tworzenia statycznych, animowanych i interaktywnych wizualizacji w języku Python.

Usługa Azure Databricks udostępnia również wbudowane funkcje ułatwiające eksplorowanie danych w danych wyjściowych notesu, takich jak filtrowanie i wyszukiwanie danych w tabelach oraz powiększanie wizualizacji. Możesz również użyć asystenta usługi Databricks, aby ułatwić pisanie kodu dla EDA.

Przed rozpoczęciem

Do ukończenia tego samouczka potrzebne są następujące elementy:

  • Musisz mieć uprawnienia do używania istniejącego zasobu obliczeniowego lub utworzenia nowego zasobu obliczeniowego. Zobacz Compute.
  • [Opcjonalnie] W tym samouczku opisano, jak używać asystenta, aby ułatwić generowanie kodu. Aby korzystać z asystenta, asystent musi być włączony na twoim koncie i w obszarze roboczym. Zobacz i skorzystaj z asystenta, aby uzyskać więcej informacji.

Pobieranie zestawu danych i importowanie pliku CSV

W tym samouczku przedstawiono techniki EDA, analizując globalne dane dotyczące energii i emisji. Aby to zrobić, pobierz zestaw danych Zużycie energii według Our World in Data z serwisu Kaggle. W tym samouczku jest używany plik owid-energy-data.csv.

Aby zaimportować zestaw danych do obszaru roboczego usługi Azure Databricks:

  1. Na pasku bocznym obszaru roboczego kliknij pozycję Obszar roboczy, aby przejść do przeglądarki obszaru roboczego.

  2. W prawym górnym rogu kliknij menu kebab, a następnie kliknij pozycję Importuj.

    Spowoduje to otwarcie import modalne. Zanotuj wymieniony tutaj folder docelowy . Jest on ustawiony na bieżący folder w przeglądarce obszaru roboczego i staje się miejscem docelowym zaimportowanych plików.

  3. Wybierz pozycję Importuj z: Plik.

  4. Przeciągnij i upuść plik CSV, owid-energy-data.csv, do okna. Alternatywnie możesz przeglądać i wybierać plik.

  5. Kliknij opcję Importuj. Plik powinien zostać wyświetlony w folderze docelowym w obszarze roboczym.

  6. Będziesz potrzebować ścieżki pliku, aby później zaimportować plik do swojego notatnika. Znajdź plik w przeglądarce obszaru roboczego. Aby skopiować ścieżkę pliku do schowka, kliknij prawym przyciskiem myszy nazwę pliku, a następnie wybierz pozycję Skopiuj adres URL/ścieżkę>Pełna ścieżka.

Tworzenie nowego notesu

Aby utworzyć nowy notes w folderze głównym użytkownika, kliknij przycisk nowa ikonanowy na pasku bocznym i wybierz pozycję Notes z menu.

U góry obok nazwy notesu wybierz pozycję Python jako domyślny język notesu.

Aby dowiedzieć się więcej na temat tworzenia notesów i zarządzania nimi, zobacz Manage notebooks.

Dodaj każdy z przykładów kodu w tym artykule do nowej komórki w notesie. Możesz też użyć przykładowego notesu , aby podążać za samouczkiem.

Ładowanie pliku CSV

W nowej komórce notesu załaduj plik CSV. W tym celu zaimportuj numpy i pandas. Są to przydatne biblioteki języka Python do nauki o danych i analizy.

Utwórz DataFrame pandas na podstawie zestawu danych, aby ułatwić przetwarzanie i wizualizację. Zastąp ścieżkę pliku poniżej skopiowaną wcześniej ścieżką.

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

Uruchom komórkę. Dane wyjściowe powinny zwracać ramkę danych pandas, w tym listę każdej kolumny i jej typ.

dane wyjściowe komórki zaimportowanej ramki danych.

Omówienie danych

Zrozumienie podstaw zestawu danych ma kluczowe znaczenie dla każdego projektu nauki o danych. Obejmuje to zapoznanie się ze strukturą, typami i jakością danych.

W notesie usługi Azure Databricks możesz użyć polecenia display(df), aby wyświetlić zestaw danych.

dane wyjściowe komórki wyświetlające zestaw danych jako tabelę.

Ponieważ zestaw danych zawiera ponad 10 000 wierszy, to polecenie zwraca obcięty zestaw danych. Po lewej stronie każdej kolumny można zobaczyć typ danych kolumny. Aby dowiedzieć się więcej, zobacz Formatowanie kolumn.

Użyj pandas do uzyskiwania wglądu w dane

Aby efektywnie zrozumieć zestaw danych, użyj następujących poleceń biblioteki pandas:

  • Polecenie df.shape zwraca wymiary ramki danych, co umożliwia szybkie omówienie liczby wierszy i kolumn.

    dane wyjściowe komórki wyświetlające df.shape.

  • Polecenie df.dtypes udostępnia typy danych każdej kolumny, co ułatwia zrozumienie rodzaju danych, z którymi masz do czynienia. Typ danych można również wyświetlić dla każdej kolumny w tabeli wyników.

    Wynik w komórce wyświetlający df.dtypes.

  • Polecenie df.describe() generuje opisowe statystyki dla kolumn liczbowych, takich jak średnia, odchylenie standardowe i percentyle, które mogą ułatwić identyfikowanie wzorców, wykrywanie anomalii i zrozumienie rozkładu danych.

    Wyjście komórki wyświetlające wynik df.describe.

Generowanie profilu danych

Notesy usługi Azure Databricks obejmują wbudowane funkcje profilowania danych. Podczas wyświetlania ramki danych z funkcją wyświetlania usługi Azure Databricks można wygenerować profil danych z danych wyjściowych tabeli.

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

Kliknij, aby wygenerować profil danych na podstawie danych wyjściowych tabeli.

Kliknij +>Profil danych obok tabeli w wynikach. Spowoduje to uruchomienie nowego polecenia, które generuje profil danych w ramce danych.

Wygenerowany profil danych z danych wyjściowych tabeli.

Profil danych zawiera podsumowanie statystyk dla kolumn liczbowych, ciągów i dat, a także histogramy rozkładów wartości dla każdej kolumny.

Czyszczenie danych

Czyszczenie danych jest ważnym krokiem w EDA, aby upewnić się, że zestaw danych jest dokładny, spójny i gotowy do znaczącej analizy. Ten proces obejmuje kilka kluczowych zadań, aby upewnić się, że dane są gotowe do analizy, w tym:

  • Identyfikowanie i usuwanie zduplikowanych danych.
  • Obsługa brakujących wartości, które mogą obejmować zastąpienie ich określoną wartością lub usunięciem dotkniętych wierszy.
  • Standaryzacja typów danych (na przykład konwertowanie ciągów na datetime) za pomocą konwersji i przekształceń w celu zapewnienia spójności. Możesz również przekonwertować dane na format, z którym możesz pracować.

Ta faza czyszczenia jest niezbędna, ponieważ poprawia jakość i niezawodność danych, umożliwiając dokładniejszą i wnikliwą analizę.

Porada: Korzystanie z asystenta usługi Databricks w celu ułatwienia czyszczenia danych

Możesz użyć asystenta usługi Databricks, aby ułatwić generowanie kodu. Utwórz nową komórkę kodu i kliknij wygeneruj link lub użyj ikony asystenta w prawym górnym rogu, aby otworzyć asystenta. Wprowadź zapytanie dotyczące asystenta. Asystent może wygenerować kod Python lub SQL albo wygenerować opis tekstu. Aby uzyskać inne wyniki, kliknij Wygeneruj ponownie.

Na przykład użyj następujących poleceń, aby skorzystać z asystenta do czyszczenia danych.

  • Sprawdź, czy df zawiera zduplikowane kolumny lub wiersze. Wydrukuj duplikaty. Następnie usuń duplikaty.
  • W jakim formacie znajdują się kolumny dat? Zmień go na 'YYYY-MM-DD'.
  • Nie zamierzam używać kolumny XXX. Usuń go.

Zobacz Uzyskaj pomoc dotyczącą kodowania od asystenta Databricks.

Usuwanie zduplikowanych danych

Sprawdź, czy dane mają zduplikowane wiersze lub kolumny. Jeśli tak, usuń je.

Napiwek

Użyj asystenta, aby wygenerować kod.

Spróbuj wprowadzić monit: "Sprawdź, czy df zawiera zduplikowane kolumny lub wiersze. Wydrukuj duplikaty. Następnie usuń duplikaty". Asystent może wygenerować kod podobny do poniższego przykładu.

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

W takim przypadku zestaw danych nie ma żadnych zduplikowanych danych.

Obsługa wartości null lub brakujących

Typowym sposobem traktowania wartości NaN lub Null jest zastąpienie ich wartością 0 w celu łatwiejszego przetwarzania matematycznego.

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

Dzięki temu wszystkie brakujące dane w ramce danych zostaną zastąpione wartością 0, co może być przydatne w przypadku kolejnych kroków analizy danych lub przetwarzania, w których brakujące wartości mogą powodować problemy.

Sformatuj daty

Daty są często formatowane na różne sposoby w różnych zestawach danych. Mogą być w formacie daty, ciągach lub liczbach całkowitych.

W przypadku tej analizy należy traktować kolumnę year jako liczbę całkowitą. Poniższy kod jest jednym ze sposobów, aby to zrobić:

# 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

Gwarantuje to, że kolumna year zawiera tylko wartości całkowitoliczbowe reprezentujące lata, a wszelkie nieprawidłowe wpisy są konwertowane na NaT (Not a Time).

Eksploruj dane za pomocą tabeli wyjściowej notatnika Databricks

Usługa Azure Databricks udostępnia wbudowane funkcje ułatwiające eksplorowanie danych przy użyciu tabeli wyjściowej.

W nowej komórce użyj display(df), aby wyświetlić zestaw danych jako tabelę.

Wynik komórki wyświetlający zestaw danych jako tabelę.

Korzystając z tabeli wyjściowej, możesz eksplorować dane na kilka sposobów:

Wyszukiwanie danych pod kątem określonego ciągu lub wartości

Kliknij ikonę wyszukiwania w prawym górnym rogu tabeli i wprowadź wyszukiwanie.

Wyszukaj dane wyjściowe tabeli dla wartości.

Filtrowanie pod kątem określonych warunków

Za pomocą wbudowanych filtrów tabel można filtrować kolumny pod kątem określonych warunków. Istnieje kilka sposobów tworzenia filtru. Zobacz Wyniki filtrowania.

Napiwek

Użyj asystenta usługi Databricks, aby utworzyć filtry. Kliknij ikonę filtru w prawym górnym rogu tabeli. Wprowadź warunek filtru. Asystent usługi Databricks automatycznie generuje filtr.

Filtruj dane wyjściowe tabeli przy użyciu Asystenta.

Tworzenie wizualizacji przy użyciu zestawu danych

W górnej części tabeli wyjściowej kliknij pozycję +>Wizualizacja, aby otworzyć edytor wizualizacji.

Dodaj wizualizację przy użyciu danych wyjściowych tabeli.

Wybierz typ wizualizacji i kolumny, które chcesz zwizualizować. W edytorze zostanie wyświetlony podgląd wykresu na podstawie konfiguracji. Na przykład na poniższym obrazie pokazano, jak dodać wiele wykresów liniowych w celu wyświetlenia zużycia różnych źródeł energii odnawialnej w czasie.

Skonfiguruj wizualizację przy użyciu edytora wizualizacji.

Kliknij przycisk Zapisz, aby dodać wizualizację jako kartę w danych wyjściowych komórki.

Zobacz Tworzenie nowej wizualizacji.

Eksplorowanie i wizualizowanie danych przy użyciu bibliotek języka Python

Eksplorowanie danych przy użyciu wizualizacji jest podstawowym aspektem EDA. Wizualizacje pomagają odkryć wzorce, trendy i relacje w danych, które mogą nie być natychmiast widoczne za pomocą samej analizy liczbowej. Użyj bibliotek, takich jak Plotly lub Matplotlib, na potrzeby typowych technik wizualizacji, w tym wykresów punktowych, wykresów słupkowych, wykresów liniowych i histogramów. Te narzędzia wizualne umożliwiają analitykom danych identyfikowanie anomalii, zrozumienie dystrybucji danych i obserwowanie korelacji między zmiennymi. Na przykład wykresy punktowe mogą wyróżniać wartości odstające, podczas gdy wykresy szeregów czasowych mogą ujawniać trendy i sezonowość.

Utwórz tablicę dla unikatowych krajów

Sprawdź kraje zawarte w zestawie danych, tworząc tablicę dla unikatowych krajów. Utworzenie tablicy pokazuje jednostki wymienione jako country.

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

Wynik :

Wyjście komórki pokazujące tablicę unikalnych krajów.

Wgląd:

Kolumna country zawiera różne jednostki, w tym kraje światowe, kraje o wysokich dochodach, Azja i Stany Zjednoczone, które nie zawsze są bezpośrednio porównywalne. Bardziej przydatne może być filtrowanie danych według regionów.

Załóżmy, że chcesz skupić się na badaniu w 10 krajach o najwyższych emisjach gazów cieplarnianych w 2000 roku. Możesz filtrować dane według lat, które chcesz przeanalizować, oraz wybrać 10 krajów z najwyższą emisją, a następnie użyć Plotly do stworzenia wykresu liniowego pokazującego ich emisje w czasie.

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

Wynik :

Wykres przedstawiający trendy emisji gazów cieplarnianych dla pierwszych 10 emiterów od 2000 do 2022 roku.

Wgląd:

Emisje gazów cieplarnianych utrzymywały się w górę od 2000 do 2022 r., z wyjątkiem kilku krajów, w których emisje były stosunkowo stabilne z niewielkim spadkiem w tym okresie.

Filtrowanie i wykres emisji według regionów

Odfiltruj dane według regionu i oblicz łączną emisję dla każdego regionu. Następnie wykreślij dane jako wykres słupkowy:

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

Wyjście:

wykres przedstawiający emisje gazów cieplarnianych według regionu

Insight:

Azja ma najwyższy poziom emisji gazów cieplarnianych. Oceania, Ameryka Południowa i Afryka produkują najniższą emisję gazów cieplarnianych.

Obliczanie i wykres wzrostu udziału energii odnawialnej

Utwórz nową funkcję/kolumnę, która oblicza udział energii odnawialnej jako stosunek zużycia energii odnawialnej do zużycia energii podstawowej. Następnie należy sklasyfikować kraje na podstawie ich średniego udziału w energii odnawialnej. Dla 10 czołowych krajów wykreśl ich udział w energii odnawialnej na przestrzeni czasu.

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

dane wyjściowe:

Wykres przedstawiający wzrost udziału energii odnawialnej w czasie dla 10 krajów prowadzących w dziedzinie energii odnawialnej.

Wgląd:

Norwegia i Islandia prowadzą świat w dziedzinie energii odnawialnej, a ponad połowa ich zużycia pochodzi z energii odnawialnej.

Islandia i Szwecja odnotowały największy wzrost udziału w energii odnawialnej. Wszystkie kraje odnotowały okazjonalne spadki i wzrosty, pokazując, jak wzrost udziału energii odnawialnej niekoniecznie jest liniowy. Co ciekawe, Afryka Środkowa odnotowała spadek na początku 2010 roku, ale odbiła się w 2020 roku.

Wykres punktowy: zobrazuj wpływ energii odnawialnej dla największych emiterów

Przefiltruj dane dla pierwszych 10 emiterów, a następnie użyj wykresu punktowego, aby przyjrzeć się udziałowi energii odnawialnej w porównaniu z emisjami gazów cieplarnianych w czasie.

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

dane wyjściowe :

Wykres pokazujący wpływ energii odnawialnej na emisje dla największych emiterów.

Wgląd:

Ponieważ kraj wykorzystuje więcej energii odnawialnej, ma również więcej emisji gazów cieplarnianych, co oznacza, że całkowite zużycie energii wzrasta szybciej niż zużycie energii odnawialnej. Ameryka Północna jest wyjątkiem, że emisje gazów cieplarnianych pozostawały stosunkowo stałe przez lata, ponieważ jej udział w odnawialnych źródłach nadal się zwiększał.

Prognozowane globalne zużycie energii przez model

Agregowanie globalnego zużycia energii podstawowej według roku, a następnie utworzenie modelu zintegrowanej średniej ruchomej (ARIMA) autoregresywnego w celu projekcji całkowitego globalnego zużycia energii w ciągu najbliższych kilku lat. Wykreślij historyczne i prognozowane zużycie energii przy użyciu biblioteki 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()

Wynik:

Wykres przedstawiający historyczne i przewidywane globalne zużycie energii.

Wgląd:

Ten model projektuje, że globalne zużycie energii będzie nadal rosnąć.

Przykładowy notatnik

Użyj poniższego notatnika, aby wykonać kroki opisane w tym artykule. Aby uzyskać instrukcje dotyczące importowania notesu do obszaru roboczego usługi Azure Databricks, zobacz Importowanie notesu.

Samouczek: analiza EDA z globalnymi danymi energetycznymi

Pobierz notesik

Następne kroki

Po wykonaniu początkowej eksploracyjnej analizy danych w zestawie danych spróbuj wykonać następujące następne kroki:

  • Zobacz załącznik w przykładowym notatniku , aby uzyskać dodatkowe przykłady wizualizacji EDA.
  • Jeśli podczas wykonywania tego samouczka wystąpiły jakiekolwiek błędy, spróbuj użyć wbudowanego debugera, aby przejść przez kod. Zobacz Debugowanie notesów.
  • Udostępnij notes zespołowi, aby mogli zrozumieć twoją analizę. W zależności od uprawnień, które im nadasz, mogą one pomóc w opracowaniu kodu w celu dalszego analizowania lub dodawania komentarzy i sugestii do dalszego badania.
  • Po zakończeniu analizy utwórz pulpit nawigacyjny notesu lub pulpit nawigacyjny AI/BI z kluczowymi wizualizacjami, które będą udostępniane uczestnikom projektu.