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:
Na pasku bocznym obszaru roboczego kliknij pozycję Obszar roboczy, aby przejść do przeglądarki obszaru roboczego.
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.
Wybierz pozycję Importuj z: Plik.
Przeciągnij i upuść plik CSV,
owid-energy-data.csv
, do okna. Alternatywnie możesz przeglądać i wybierać plik.Kliknij opcję Importuj. Plik powinien zostać wyświetlony w folderze docelowym w obszarze roboczym.
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 nowy 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.
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.
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.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.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.
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 +>Profil danych obok tabeli w wynikach. Spowoduje to uruchomienie nowego polecenia, które generuje profil danych w ramce danych.
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ę.
Korzystając z tabeli wyjściowej, możesz eksplorować dane na kilka sposobów:
- Wyszukaj dane dla określonego ciągu lub wartości
- filtr pod kątem określonych warunków
- Tworzenie wizualizacji przy użyciu zestawu danych
Wyszukiwanie danych pod kątem określonego ciągu lub wartości
Kliknij ikonę wyszukiwania w prawym górnym rogu tabeli i wprowadź wyszukiwanie.
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.
Tworzenie wizualizacji przy użyciu zestawu danych
W górnej części tabeli wyjściowej kliknij pozycję +>Wizualizacja, aby otworzyć edytor wizualizacji.
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.
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
- Wykres trendów emisji dla najlepszych 10 emiterów (200-2022)
- Filtrowanie i wykresy emisji według regionu
- Obliczanie i wykres wzrostu udziału energii odnawialnej
- Wykres punktowy : Pokaż wpływ energii odnawialnej na największych emitentów
- Model przewidywał globalne zużycie energii
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 :
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.
Wykres trendów emisji dla najlepszych 10 emiterów (200-2022)
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 :
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
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:
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 :
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:
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.