Classe DataFrame
Uma coleção distribuída de dados agrupados em colunas nomeadas.
Um DataFrame é equivalente a uma tabela relacional no Spark SQL e pode ser criado usando várias funções no SparkSession.
Um DataFrame não deve ser criado diretamente usando o construtor.
Compatível com Spark Connect
Propriedades
Propriedade | Descrição |
|---|---|
Retorna a SparkSession que criou este DataFrame. | |
Retorna o conteúdo como um RDD de linhas (somente no modo Clássico). | |
Retorna um DataFrameNaFunctions para lidar com valores ausentes. | |
Retorna um DataFrameStatFunctions para funções estatísticas. | |
Interface para salvar o conteúdo do DataFrame não transmissível em armazenamento externo. | |
Interface para salvar o conteúdo do DataFrame de transmissão em armazenamento externo. | |
Retorna o esquema deste DataFrame como um StructType. | |
Retorna todos os nomes de colunas e seus respectivos tipos de dados em uma lista. | |
Recupera os nomes de todas as colunas do DataFrame como uma lista. | |
Obtenha o nível de armazenamento atual do DataFrame. | |
Retorna True se este DataFrame contém uma ou mais fontes que retornam dados continuamente à medida que chegam. | |
Retorna um objeto ExecutionInfo após a execução da consulta. | |
Retorna um PySparkPlotAccessor para funções gráficas. |
Métodos
Visualização e inspeção de dados
Método | Descrição |
|---|---|
Converte um DataFrame em um RDD de strings ou DataFrame. | |
Imprime o esquema em formato de árvore. | |
Imprime os planos (lógicos e físicos) no console para fins de depuração. | |
Imprime as primeiras n linhas do DataFrame no console. | |
Retorna todos os registros no DataFrame como uma lista de linhas (Row). | |
Retorna um iterador que contém todas as linhas deste DataFrame. | |
Retorna as primeiras num linhas como uma lista de Row. | |
Retorna as últimas num linhas como uma lista de Row. | |
Retorna as primeiras n linhas. | |
Retorna a primeira linha como uma linha (Row). | |
Retorna o número de linhas neste DataFrame. | |
Verifica se o DataFrame está vazio e retorna um valor booleano. | |
Calcula estatísticas básicas para colunas numéricas e de texto. | |
Calcular estatísticas específicas para colunas numéricas e de texto. |
Vista temporária
Método | Descrição |
|---|---|
Cria uma view temporária local com este DataFrame. | |
Cria ou substitui uma view temporária local com este DataFrame. | |
Cria uma view temporária global com este DataFrame. | |
Cria ou substitui uma view temporária global usando o nome fornecido. |
Seleção e projeção
Método | Descrição |
|---|---|
Projeta um conjunto de expressões e retorna um novo DataFrame. | |
Projeta um conjunto de expressões SQL e retorna um novo DataFrame. | |
Filtra as linhas usando a condição fornecida. | |
Apelido para filtro. | |
Retorna um novo DataFrame sem as colunas especificadas. | |
Retorna um novo DataFrame com os novos nomes de coluna especificados. | |
Retorna um novo DataFrame adicionando uma coluna ou substituindo a coluna existente que possui o mesmo nome. | |
Retorna um novo DataFrame adicionando várias colunas ou substituindo as colunas existentes que possuem os mesmos nomes. | |
Retorna um novo DataFrame renomeando uma coluna existente. | |
Retorna um novo DataFrame renomeando várias colunas. | |
Retorna um novo DataFrame atualizando uma coluna existente com metadados. | |
Seleciona uma coluna de metadados com base em seu nome lógico e a retorna como uma coluna. | |
Seleciona a coluna com base no nome da coluna especificado como uma expressão regular e a retorna como uma coluna. |
Classificação e ordenação
Método | Descrição |
|---|---|
Retorna um novo DataFrame ordenado pelas colunas especificadas. | |
Sinônimo para ordenar. | |
Retorna um novo DataFrame com cada partição ordenada pela(s) coluna(s) especificada(s). |
Agregação e agrupamento
Método | Descrição |
|---|---|
Agrupa o DataFrame pelas colunas especificadas para que a agregação possa ser realizada nelas. | |
Crie um rollup multidimensional para o DataFrame atual usando as colunas especificadas. | |
Crie um cubo multidimensional para o DataFrame atual usando as colunas especificadas. | |
Crie uma agregação multidimensional para o DataFrame atual usando os conjuntos de agrupamento especificados. | |
Agregar todos os dados do DataFrame sem agrupamento (abreviação de df.groupBy().agg()). | |
Defina métricas (nomeadas) para observar no DataFrame. |
juntar
Método | Descrição |
|---|---|
Junte-se a outro DataFrame, usando a expressão join fornecida. | |
Retorna o produto cartesiano com outro DataFrame. | |
Junção lateral com outro DataFrame, usando a expressão join fornecida. |
Definir operações
Método | Descrição |
|---|---|
Retorna um novo DataFrame contendo a união das linhas deste DataFrame com as de outro DataFrame. | |
Retorna um novo DataFrame contendo a união das linhas deste DataFrame com as de outro DataFrame. | |
Retorna um novo DataFrame contendo apenas as linhas presentes neste DataFrame e em outro DataFrame. | |
Retorna um novo DataFrame contendo linhas tanto deste DataFrame quanto de outro DataFrame, preservando as duplicatas. | |
Retorna um novo DataFrame contendo as linhas presentes neste DataFrame, mas não em outro DataFrame. | |
Retorna um novo DataFrame contendo as linhas presentes neste DataFrame, mas não em outro DataFrame, preservando as duplicatas. |
Desduplicação
Método | Descrição |
|---|---|
Retorna um novo DataFrame contendo as linhas distintas deste DataFrame. | |
Retorna um novo DataFrame com as linhas duplicadas removidas, opcionalmente considerando apenas determinadas colunas. | |
Retorna um novo DataFrame com as linhas duplicadas removidas, opcionalmente considerando apenas determinadas colunas, dentro da marca d'água. |
Amostragem e divisão
Método | Descrição |
|---|---|
Retorna um subconjunto amostrado deste DataFrame. | |
Retorna uma amostra estratificada sem reposição com base na fração fornecida em cada estrato. | |
Divide aleatoriamente este DataFrame com os pesos fornecidos. |
Particionamento
Método | Descrição |
|---|---|
Retorna um novo DataFrame que possui exatamente numPartitions partições. | |
| Retorna um novo DataFrame particionado pelas expressões de particionamento fornecidas. |
Retorna um novo DataFrame particionado pelas expressões de particionamento fornecidas. | |
| Retorna um novo DataFrame particionado pela expressão de ID de partição fornecida. |
Remodelando
Método | Descrição |
|---|---|
Despivotar um DataFrame do formato amplo para o formato longo. | |
Sinônimo para despivotar. | |
Transpõe um DataFrame de forma que os valores na coluna de índice especificada se tornem as novas colunas. |
Tratamento de dados faltantes
Método | Descrição |
|---|---|
Retorna um novo DataFrame omitindo linhas com valores nulos ou NaN. | |
Retorna um novo DataFrame no qual os valores nulos são preenchidos com o novo valor. | |
Retorna um novo DataFrame substituindo um valor por outro. |
Funções estatísticas
Método | Descrição |
|---|---|
Calcula os quantis aproximados das colunas numéricas de um DataFrame. | |
Calcula a correlação entre duas colunas de um DataFrame como um valor do tipo double. | |
Calcule a covariância da amostra para as colunas fornecidas, especificadas por seus nomes. | |
Calcule uma tabela de frequência par a par das colunas fornecidas. | |
Identificação de itens frequentes em colunas, possivelmente com falsos positivos. |
Operações de esquema
Método | Descrição |
|---|---|
Retorna um novo DataFrame onde cada linha é reconciliada para corresponder ao esquema especificado. | |
Retorna um novo DataFrame com um alias definido. |
Iteração
Método | Descrição |
|---|---|
Aplica a função f a todas as linhas deste DataFrame. | |
Aplica a função f a cada partição deste DataFrame. |
Armazenamento em cache e persistência
Método | Descrição |
|---|---|
Mantém o DataFrame com o nível de armazenamento default (MEMORY_AND_DISK_DESER). | |
Define o nível de armazenamento para persistir o conteúdo do DataFrame entre as operações. | |
Marca o DataFrame como não persistente e remove todos os seus blocos da memória e do disco. |
Pontos de controle
Método | Descrição |
|---|---|
Retorna uma versão com ponto de verificação (checkpoint) deste DataFrame. | |
Retorna uma versão localmente salva deste DataFrame. |
mil operações
Método | Descrição |
|---|---|
Define uma marca d'água de tempo do evento para este DataFrame. |
Dicas de otimização
Método | Descrição |
|---|---|
Especifica alguma dica sobre o DataFrame atual. |
Limites e compensações
Método | Descrição |
|---|---|
Limita a contagem de resultados ao número especificado. | |
Retorna um novo DataFrame, ignorando as primeiras n linhas. |
transformações avançadas
Método | Descrição |
|---|---|
Retorna um novo DataFrame. Sintaxe concisa para encadear transformações personalizadas. |
Métodos de conversão
Método | Descrição |
|---|---|
Retorna o conteúdo deste DataFrame como um objeto Pandas pandas.DataFrame. | |
Retorna o conteúdo deste DataFrame como um objeto PyArrow do tipo pyarrow.Table. | |
Converte o DataFrame existente em um DataFrame do pandas-on-Spark. | |
Mapeia um iterador de lotes no DataFrame atual usando uma função nativa do Python. | |
Mapeia um iterador de lotes no DataFrame atual usando uma função nativa do Python que é executada em pyarrow.RecordBatch. |
Escrita de dados
Método | Descrição |
|---|---|
Criar um construtor de configuração de gravação para fontes v2. | |
Mesclar um conjunto de atualizações, inserções e exclusões de uma tabela de origem em uma tabela de destino. |
ComparaçãoDataFrame
Método | Descrição |
|---|---|
Retorna True quando os planos de consulta lógica dentro de ambos os DataFrames são iguais. | |
Retorna um código hash do plano de consulta lógica para este DataFrame. |
Metadados e informações de arquivo
Método | Descrição |
|---|---|
Retorna um instantâneo (Snapshot) dos arquivos que compõem este DataFrame, da melhor forma possível. |
Recurso SQL avançado
Método | Descrição |
|---|---|
Retorna True se os métodos collect e take puderem ser executados localmente. | |
Converte o DataFrame em um objeto TableArg, que pode ser usado como argumento de tabela em uma TVF. | |
Retorna um objeto Column para uma subconsulta SCALAR contendo exatamente uma linha e uma coluna. | |
Retorna um objeto Column para uma subconsulta EXISTS. |
Exemplos
Operações básicas DataFrame
# Create a DataFrame
people = spark.createDataFrame([
{"deptId": 1, "age": 40, "name": "Hyukjin Kwon", "gender": "M", "salary": 50},
{"deptId": 1, "age": 50, "name": "Takuya Ueshin", "gender": "M", "salary": 100},
{"deptId": 2, "age": 60, "name": "Xinrong Meng", "gender": "F", "salary": 150},
{"deptId": 3, "age": 20, "name": "Haejoon Lee", "gender": "M", "salary": 200}
])
# Select columns
people.select("name", "age").show()
# Filter rows
people.filter(people.age > 30).show()
# Add a new column
people.withColumn("age_plus_10", people.age + 10).show()
Agregação e agrupamento
# Group by and aggregate
people.groupBy("gender").agg({"salary": "avg", "age": "max"}).show()
# Multiple aggregations
from pyspark.sql import functions as F
people.groupBy("deptId").agg(
F.avg("salary").alias("avg_salary"),
F.max("age").alias("max_age")
).show()
juntar
# Create another DataFrame
department = spark.createDataFrame([
{"id": 1, "name": "PySpark"},
{"id": 2, "name": "ML"},
{"id": 3, "name": "Spark SQL"}
])
# Join DataFrames
people.join(department, people.deptId == department.id).show()
Transformações complexas
# Chained operations
result = people.filter(people.age > 30) \\
.join(department, people.deptId == department.id) \\
.groupBy(department.name, "gender") \\
.agg({"salary": "avg", "age": "max"}) \\
.sort("max(age)")
result.show()