Aan de slag: Gegevens verbeteren en opschonen
In dit aan de slag-artikel wordt u begeleid bij het gebruik van een Azure Databricks-notebook voor het opschonen en verbeteren van de babynaamgegevens van new York State die eerder in een tabel in Unity Catalog zijn geladen met behulp van Python, Scala en R. In dit artikel wijzigt u kolomnamen, wijzigt u hoofdlettergebruik en spelt u het geslacht van elke babynaam uit de onbewerkte gegevenstabel en slaat u het DataFrame vervolgens op in een zilveren tabel. Vervolgens filtert u de gegevens om alleen gegevens op te nemen voor 2021, groepeer de gegevens op statusniveau en sorteert u de gegevens vervolgens op aantal. Ten slotte slaat u dit DataFrame op in een gouden tabel en visualiseert u de gegevens in een staafdiagram. Zie de medaille-architectuur voor meer informatie over zilveren en gouden tafels.
Belangrijk
Dit aan de slag-artikel bouwt voort op Aan de slag: Aanvullende gegevens opnemen en invoegen. U moet de stappen in dat artikel uitvoeren om dit artikel te voltooien. Zie Aanvullende gegevensnotitieblokken opnemen voor het volledige notitieblok voor dat aan de slag-artikel.
Vereisten
Als u de taken in dit artikel wilt uitvoeren, moet u voldoen aan de volgende vereisten:
- Voor uw werkruimte moet Unity Catalog zijn ingeschakeld. Zie Unity Catalog instellen en beheren voor meer informatie over hoe u aan de slag gaat met Unity Catalog.
- U moet beschikken over de
WRITE VOLUME
bevoegdheid op een volume, deUSE SCHEMA
bevoegdheid voor het bovenliggende schema en deUSE CATALOG
bevoegdheid voor de bovenliggende catalogus. - U moet gemachtigd zijn om een bestaande rekenresource te gebruiken of een nieuwe rekenresource te maken. Zie Aan de slag met Azure Databricks of neem contact op met uw Databricks-beheerder.
Tip
Zie Gegevensnotitieblokken opschonen en verbeteren voor een voltooid notitieblok voor dit artikel.
Stap 1: Een nieuw notitieblok maken
Als u een notitieblok in uw werkruimte wilt maken, klikt u op Nieuw in de zijbalk en vervolgens op Notitieblok. Er wordt een leeg notitieblok geopend in de werkruimte.
Zie Notitieblokken beheren voor meer informatie over het maken en beheren van notitieblokken.
Stap 2: Variabelen definiƫren
In deze stap definieert u variabelen voor gebruik in het voorbeeldnotitieblok dat u in dit artikel maakt.
Kopieer en plak de volgende code in de nieuwe lege notebookcel. Vervang ,
<catalog-name>
en<schema-name>
door<volume-name>
de catalogus-, schema- en volumenamen voor een Unity Catalog-volume. Vervang eventueel detable_name
waarde door een tabelnaam van uw keuze. U slaat de gegevens van de babynaam verderop in dit artikel op in deze tabel.Druk
Shift+Enter
om de cel uit te voeren en een nieuwe lege cel te maken.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
Stap 3: De onbewerkte gegevens laden in een nieuw DataFrame
Met deze stap worden de onbewerkte gegevens die eerder zijn opgeslagen in een Delta-tabel in een nieuw DataFrame geladen ter voorbereiding op het opschonen en verbeteren van deze gegevens voor verdere analyse.
Kopieer en plak de volgende code in de nieuwe lege notebookcel.
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)
Druk
Shift+Enter
om de cel uit te voeren en naar de volgende cel te gaan.
Stap 4: Onbewerkte gegevens opschonen en verbeteren en opslaan
In deze stap wijzigt u de naam van de Year
kolom, wijzigt u de gegevens in de First_Name
kolom in de beginhoofdletters en werkt u de waarden voor de Sex
kolom bij om het geslacht te bepalen en slaat u het DataFrame vervolgens op in een nieuwe tabel.
Kopieer en plak de volgende code in een lege notebookcel.
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")
Druk
Shift+Enter
om de cel uit te voeren en naar de volgende cel te gaan.
Stap 5: Gegevens groeperen en visualiseren
In deze stap filtert u de gegevens alleen op jaar 2021, groepeer de gegevens op geslacht en naam, aggregeren op aantal en volgorde op aantal. Vervolgens slaat u het DataFrame op in een tabel en visualiseert u de gegevens in een staafdiagram.
Kopieer en plak de volgende code in een lege notebookcel.
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")
Druk
Ctrl+Enter
om de cel uit te voeren.-
- Klik naast het tabblad Tabel op + Visualisatie en klik vervolgens op Visualisatie.
Klik in de visualisatie-editor op Visualisatietype en controleer of de balk is geselecteerd.
Selecteer in de
First_Name
.Klik op Kolom toevoegen onder Y-kolommen en selecteer Total_Count.
Selecteer Sex in Groeperen op.
Klik op Opslaan.
Gegevensnotebooks opschonen en verbeteren
Gebruik een van de volgende notebooks om de stappen in dit artikel uit te voeren. Vervang , <catalog-name>
en <schema-name>
door <volume-name>
de catalogus-, schema- en volumenamen voor een Unity Catalog-volume. Vervang eventueel de table_name
waarde door een tabelnaam van uw keuze.