Introdução aos DataFrames do PySpark

Introdução ao PySpark

Benjamin Schmidt

Data Engineer

Sobre DataFrames

  • DataFrames: Formato tabular (linhas/colunas)
  • Suporta operações semelhantes ao SQL
  • Comparável a um DataFrame do Pandas ou uma Tabela SQL
  • Dados Estruturados

Dataframes

Introdução ao PySpark

Criando DataFrames a partir de arquivos

# Criar um DataFrame a partir de um CSV
census_df = spark.read.csv('path/to/census.csv', header=True, inferSchema=True)
Introdução ao PySpark

Imprimindo o DataFrame

# Mostrar as primeiras 5 linhas do DataFrame
census_df.show()


   age  education.num marital.status         occupation income
0   90              9        Widowed                  ?  <=50K
1   82              9        Widowed    Exec-managerial  <=50K
2   66             10        Widowed                  ?  <=50K
3   54              4       Divorced  Machine-op-inspct  <=50K
4   41             10      Separated     Prof-specialty  <=50K
Introdução ao PySpark

Imprimindo o Esquema do DataFrame

# Mostrar o esquema
census_df.printSchema()

Output: root |-- age: integer (nullable = true) |-- education.num: integer (nullable = true) |-- marital.status: string (nullable = true) |-- occupation: string (nullable = true) |-- income: string (nullable = true)
Introdução ao PySpark

Análises básicas em DataFrames do PySpark

# .count() retornará o total de linhas no DataFrame
row_count = census_df.count()
print(f'Número de linhas: {row_count}')
# groupby() permite usar agregações semelhantes ao SQL
census_df.groupBy('gender').agg({'salary_usd': 'avg'}).show()

Outras funções de agregação são:

  • sum()
  • min()
  • max()
Introdução ao PySpark

Funções chave para análises no PySpark

  • .select(): Seleciona colunas específicas do DataFrame
  • .filter(): Filtra linhas com base em condições específicas
  • .groupBy(): Agrupa linhas por uma ou mais colunas
  • .agg(): Aplica funções de agregação aos dados agrupados
Introdução ao PySpark

Funções Chave com Exemplo

# Usando filter e select, podemos refinar nosso DataFrame
filtered_census_df = census_df.filter(df['age'] > 50).select('age', 'occupation')
filtered_census_df.show()

Output +---+------------------+ |age| occupation | +---+------------------+ | 90| ?| | 82| Exec-managerial| | 66| ?| | 54| Machine-op-inspct| +---+------------------+
Introdução ao PySpark

Vamos praticar!

Introdução ao PySpark

Preparing Video For Download...