Udostępnij za pośrednictwem


Wprowadzenie: ulepszanie i oczyszczanie danych

Ten artykuł z wprowadzeniem przeprowadzi Cię przez proces używania notesu usługi Azure Databricks w celu oczyszczenia i ulepszenia danych nazwy dziecka stanu Nowy Jork, które zostały wcześniej załadowane do tabeli w wykazie aparatu Unity przy użyciu języków Python, Scala i R. W tym artykule zmienisz nazwy kolumn, zmienisz wielkie litery i określisz płeć każdej nazwy dziecka z nieprzetworzonej tabeli danych, a następnie zapiszesz ramkę danych w srebrnej tabeli. Następnie przefiltrujesz dane, aby uwzględnić tylko dane dla roku 2021, pogrupujesz dane na poziomie stanu, a następnie posortujesz dane według liczby. Na koniec zapiszesz tę ramkę danych w złotej tabeli i zwizualizujesz dane na wykresie słupkowym. Aby uzyskać więcej informacji na temat srebrnych i złotych tabel, zobacz architektura medalonu.

Ważne

Ten artykuł z wprowadzeniem opiera się na artykule Wprowadzenie: pozyskiwanie i wstawianie dodatkowych danych. Aby ukończyć ten artykuł, należy wykonać kroki opisane w tym artykule. Aby zapoznać się z pełnym notesem dotyczącym tego artykułu wprowadzającego, zobacz Pozyskiwanie dodatkowych notesów danych.

Wymagania

Aby wykonać zadania opisane w tym artykule, musisz spełnić następujące wymagania:

  • Obszar roboczy musi mieć włączony katalog aparatu Unity. Aby uzyskać informacje na temat rozpoczynania pracy z wykazem aparatu Unity, zobacz Konfigurowanie wykazu aparatu Unity i zarządzanie nim.
  • Musisz mieć WRITE VOLUME uprawnienia do woluminu, USE SCHEMA uprawnienia w schemacie nadrzędnym i USE CATALOG uprawnienia w katalogu nadrzędnym.
  • Musisz mieć uprawnienia do używania istniejącego zasobu obliczeniowego lub utworzenia nowego zasobu obliczeniowego. Zobacz Wprowadzenie: Konfiguracja konta i obszaru roboczego lub zobacz administratora usługi Databricks.

Napiwek

Aby zapoznać się z ukończonym notesem dla tego artykułu, zobacz Oczyszczanie i ulepszanie notesów danych.

Krok 1. Tworzenie nowego notesu

Aby utworzyć notes w obszarze roboczym, kliknij pozycję Nowa ikona Nowy na pasku bocznym, a następnie kliknij przycisk Notes. W obszarze roboczym zostanie otwarty pusty notes.

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

Krok 2. Definiowanie zmiennych

W tym kroku zdefiniujesz zmienne do użycia w przykładowym notesie utworzonym w tym artykule.

  1. Skopiuj i wklej następujący kod do nowej pustej komórki notesu. Zastąp <catalog-name>wartości , <schema-name>i <volume-name> nazwami wykazu, schematu i woluminu dla woluminu wykazu aparatu Unity. Opcjonalnie zastąp table_name wartość wybraną nazwą tabeli. Dane nazwy dziecka zostaną zapisane w tej tabeli w dalszej części tego artykułu.

  2. Naciśnij Shift+Enter , aby uruchomić komórkę i utworzyć nową pustą komórkę.

    Python

    catalog = "<catalog_name>"
    schema = "<schema_name>"
    table_name = "baby_names"
    silver_table_name = "baby_names_prepared"
    gold_table_name = "top_baby_names_2021"
    path_table = catalog + "." + schema
    print(path_table) # Show the complete path
    

    Scala

    val catalog = "<catalog_name>"
    val schema = "<schema_name>"
    val tableName = "baby_names"
    val silverTableName = "baby_names_prepared"
    val goldTableName = "top_baby_names_2021"
    val pathTable = s"${catalog}.${schema}"
    print(pathTable) // Show the complete path
    

    R

    catalog <- "<catalog_name>"
    schema <- "<schema_name>"
    volume <- "<volume_name>"
    table_name <- "baby_names"
    silver_table_name <- "baby_names_prepared"
    gold_table_name <- "top_baby_names_2021"
    path_table <- paste(catalog, ".", schema, sep = "")
    print(path_table) # Show the complete path
    

Krok 3. Ładowanie danych pierwotnych do nowej ramki danych

Ten krok ładuje nieprzetworzone dane wcześniej zapisane w tabeli delty do nowej ramki danych w ramach przygotowań do czyszczenia i ulepszania tych danych w celu dalszej analizy.

  1. Skopiuj i wklej następujący kod do nowej pustej komórki notesu.

    Python

    df_raw = spark.read.table(f"{path_table}.{table_name}")
    display(df_raw)
    

    Scala

    val dfRaw = spark.read.table(s"${pathTable}.${tableName}")
    display(dfRaw)
    

    R

    # Load the SparkR package that is already preinstalled on the cluster.
    library(SparkR)
    df_raw = sql(paste0("SELECT * FROM ", path_table, ".", table_name))
    display(df_raw)
    
  2. Naciśnij , Shift+Enter aby uruchomić komórkę, a następnie przejdź do następnej komórki.

Krok 4. Oczyszczanie i ulepszanie danych pierwotnych i zapisywanie

W tym kroku zmienisz nazwę Year kolumny, zmienisz dane w First_Name kolumnie na początkowe litery i zaktualizujesz wartości Sex kolumny, aby wypisać płeć, a następnie zapisać ramkę danych w nowej tabeli.

  1. Skopiuj i wklej następujący kod do pustej komórki notesu.

    Python

    from pyspark.sql.functions import col, initcap, when
    
    # Rename "Year" column to "Year_Of_Birth"
    df_rename_year = df_raw.withColumnRenamed("Year", "Year_Of_Birth")
    
    # Change the case of "First_Name" column to initcap
    df_init_caps = df_rename_year.withColumn("First_Name", initcap(col("First_Name").cast("string")))
    
    # Update column values from "M" to "male" and "F" to "female"
    df_baby_names_sex = df_init_caps.withColumn(
    "Sex",
        when(col("Sex") == "M", "Male")
        .when(col("Sex") == "F", "Female")
    )
    
    # display
    display(df_baby_names_sex)
    
    # Save DataFrame to table
    df_baby_names_sex.write.mode("overwrite").saveAsTable(f"{path_table}.{silver_table_name}")
    

    Scala

    import org.apache.spark.sql.functions.{col, initcap, when}
    
    // Rename "Year" column to "Year_Of_Birth"
    val dfRenameYear = dfRaw.withColumnRenamed("Year", "Year_Of_Birth")
    
    // Change the case of "First_Name" data to initial caps
    val dfNameInitCaps = dfRenameYear.withColumn("First_Name", initcap(col("First_Name").cast("string")))
    
    // Update column values from "M" to "Male" and "F" to "Female"
    val dfBabyNamesSex = dfNameInitCaps.withColumn("Sex",
        when(col("Sex") equalTo "M", "Male")
        .when(col("Sex") equalTo "F", "Female"))
    
    // Display the data
    display(dfBabyNamesSex)
    
    // Save DataFrame to a table
    dfBabyNamesSex.write.mode("overwrite").saveAsTable(s"${pathTable}.${silverTableName}")
    

    R

    # Rename "Year" column to "Year_Of_Birth"
    df_rename_year <- withColumnRenamed(df_raw, "Year", "Year_Of_Birth")
    
    # Change the case of "First_Name" data to initial caps
    df_init_caps <- withColumn(df_rename_year, "First_Name", initcap(df_rename_year$First_Name))
    
    # Update column values from "M" to "Male" and "F" to "Female"
    df_baby_names_sex <- withColumn(df_init_caps, "Sex",
                                    ifelse(df_init_caps$Sex == "M", "Male",
                                          ifelse(df_init_caps$Sex == "F", "Female", df_init_caps$Sex)))
    # Display the data
    display(df_baby_names_sex)
    
    # Save DataFrame to a table
    saveAsTable(df_baby_names_sex, paste(path_table, ".", silver_table_name), mode = "overwrite")
    
  2. Naciśnij , Shift+Enter aby uruchomić komórkę, a następnie przejdź do następnej komórki.

Krok 5. Grupowanie i wizualizowanie danych

W tym kroku przefiltrujesz dane tylko do roku 2021, pogrupujesz dane według płci i nazwy, agregujesz według liczby i porządkuj według liczby. Następnie zapisz ramkę danych w tabeli, a następnie zwizualizuj dane na wykresie słupkowym.

  1. Skopiuj i wklej następujący kod do pustej komórki notesu.

    Python

    from pyspark.sql.functions import expr, sum, desc
    from pyspark.sql import Window
    
    # Count of names for entire state of New York by sex
    df_baby_names_2021_grouped=(df_baby_names_sex
    .filter(expr("Year_Of_Birth == 2021"))
    .groupBy("Sex", "First_Name")
    .agg(sum("Count").alias("Total_Count"))
    .sort(desc("Total_Count")))
    
    # Display data
    display(df_baby_names_2021_grouped)
    
    # Save DataFrame to a table
    df_baby_names_2021_grouped.write.mode("overwrite").saveAsTable(f"{path_table}.{gold_table_name}")
    

    Scala

    import org.apache.spark.sql.functions.{expr, sum, desc}
    import org.apache.spark.sql.expressions.Window
    
    // Count of male and female names for entire state of New York by sex
    val dfBabyNames2021Grouped = dfBabyNamesSex
      .filter(expr("Year_Of_Birth == 2021"))
      .groupBy("Sex", "First_Name")
      .agg(sum("Count").alias("Total_Count"))
      .sort(desc("Total_Count"))
    
    // Display data
    display(dfBabyNames2021Grouped)
    
    // Save DataFrame to a table
    dfBabyNames2021Grouped.write.mode("overwrite").saveAsTable(s"${pathTable}.${goldTableName}")
    

    R

    # Filter to only 2021 data
    df_baby_names_2021 <- filter(df_baby_names_sex, df_baby_names_sex$Year_Of_Birth == 2021)
    
    # Count of names for entire state of New York by sex
    df_baby_names_grouped <- agg(
      groupBy(df_baby_names_2021, df_baby_names_2021$Sex, df_baby_names_2021$First_Name),
      Total_Count = sum(df_baby_names_2021$Count)
    )
    # Display data
    display(arrange(select(df_baby_names_grouped, df_baby_names_grouped$Sex, df_baby_names_grouped$First_Name, df_baby_names_grouped$Total_Count), desc(df_baby_names_grouped$Total_Count)))
    
    # Save DataFrame to a table
    saveAsTable(df_baby_names_2021_grouped, paste(path_table, ".", gold_table_name), mode = "overwrite")
    
  2. Naciśnij , Ctrl+Enter aby uruchomić komórkę.

    1. Obok karty Tabela kliknij+, a następnie kliknij pozycję Wizualizacja.
  3. W edytorze wizualizacji kliknij pozycję Typ wizualizacji i sprawdź, czy wybrano pasek .

  4. W kolumnie X wybierz pozycjęFirst_Name .

  5. Kliknij pozycję Dodaj kolumnę w obszarze Kolumny Y, a następnie wybierz pozycję Total_Count.

  6. W obszarze Grupuj według wybierz pozycję Seks.

    złoty stół

  7. Kliknij przycisk Zapisz.

Oczyszczanie i ulepszanie notesów danych

Aby wykonać kroki opisane w tym artykule, użyj jednego z poniższych notesów. Zastąp <catalog-name>wartości , <schema-name>i <volume-name> nazwami wykazu, schematu i woluminu dla woluminu wykazu aparatu Unity. Opcjonalnie zastąp table_name wartość wybraną nazwą tabeli.

Python

Oczyszczanie i ulepszanie danych przy użyciu języka Python

Pobierz notes

Scala

Oczyszczanie i ulepszanie danych przy użyciu języka Scala

Pobierz notes

R

Oczyszczanie i ulepszanie danych przy użyciu języka R

Pobierz notes

Dodatkowe zasoby