pip install openpyxl
Run to view results
Questão 1:
import pandas as pd
# Lê o arquivo Excel diretamente para um DataFrame
df = pd.read_excel('car_crashes.xlsx', sheet_name='car_crashes', header=0)
# Apresenta o DataFrame
print(df)
Run to view results
Questão 2:
import pandas as pd
# Lê o arquivo Excel
df = pd.read_excel('car_crashes.xlsx', sheet_name='car_crashes', header=0)
# Agrupa os dados por 'ins_type'
grouped = df.groupby('ins_type')
# 1. Média, valor máximo e valor mínimo de 'ins_premium'
premium_stats = grouped['ins_premium'].agg(['mean', 'max', 'min'])
# 2. Média, soma total, valor máximo e valor mínimo de 'ins_losses'
losses_stats = grouped['ins_losses'].agg(['mean', 'sum', 'max', 'min'])
print("Estatísticas de 'ins_premium' por 'ins_type':")
print(premium_stats)
print("\nEstatísticas de 'ins_losses' por 'ins_type':")
print(losses_stats)
Run to view results
Questão 3:
import pandas as pd
import sqlalchemy as sa
df = pd.read_excel('car_crashes.xlsx', sheet_name='car_crashes', header=0)
# Conexão com o banco de dados
engine = sa.create_engine('sqlite:///mpg.db')
# Obter o metadata do banco de dados
metadata = sa.MetaData() # Corrected line: No "bind" parameter
metadata.reflect(engine)
# Identificar as tabelas na base de dados
tables = metadata.tables.keys()
print(f"Número de tabelas: {len(tables)}")
# Criar um dataframe para cada tabela com nomes específicos
dataframes = {}
for table_name in tables:
table = metadata.tables[table_name]
dfs = pd.read_sql_table(table_name, engine)
dataframes[table_name] = dfs
# Criar variáveis com nomes específicos para cada dataframe
globals()[table_name.lower() + '_df'] = dfs # Ex: 'name_df', 'observation_df', etc.
# Exibir os dataframes com seus nomes específicos
for table_name in tables:
df_name = table_name.lower() + '_df'
print(f"DataFrame para a tabela '{table_name}':")
print(globals()[df_name]) # Acessa o dataframe pelo nome da variável
print()
Run to view results
Questão 4:
import pandas as pd
import sqlalchemy as sa
# Conexão com o banco de dados
engine = sa.create_engine('sqlite:///mpg.db')
# Cria a tabela Category (com tratamento de erro)
try:
metadata = sa.MetaData()
category_table = sa.Table(
'Category', metadata,
sa.Column('category_id', sa.Integer, primary_key=True),
sa.Column('category', sa.String)
)
metadata.create_all(engine) # Tenta criar a tabela
# Insere um registro na tabela Category
with engine.connect() as conn:
conn.execute(
category_table.insert(),
[{'category_id': 0, 'category': 'sedan'}]
)
except sa.exc.IntegrityError as e:
print(f"Erro ao criar a tabela 'Category' ou inserir dados: {e}")
print("Provavelmente a tabela já existe ou a categoria_id já está em uso. Tente um valor diferente.")
# Obter o metadata do banco de dados
metadata = sa.MetaData()
metadata.reflect(engine)
# Identificar as tabelas na base de dados
tables = metadata.tables.keys()
print(f"Número de tabelas: {len(tables)}")
# Criar um dataframe para cada tabela
dataframes = {}
for table_name in tables:
table = metadata.tables[table_name]
dfs = pd.read_sql_table(table_name, engine)
dataframes[table_name] = dfs
# Exibir os dataframes
for table_name, dfs in dataframes.items():
print(f"DataFrame para a tabela '{table_name}':")
print(dfs)
print()
Run to view results
Questão 5:
import pandas as pd
import sqlalchemy as sa
engine = sa.create_engine('sqlite:///mpg.db')
# Obter o metadata do banco de dados
metadata = sa.MetaData()
metadata.reflect(engine)
# Carregando os DataFrames
name_df = pd.read_sql_table('Name', engine)
observation_df = pd.read_sql_table('Observation', engine)
origin_df = pd.read_sql_table('Origin', engine)
# Agregando os DataFrames
unico_df = pd.merge(name_df, observation_df, how='left')
unico_df = pd.merge(unico_df, origin_df, on='origin_id', how='left')
print("DataFrame Único:")
print(unico_df)
Run to view results
Questão 6:
import pandas as pd
import sqlalchemy as sa
engine = sa.create_engine('sqlite:///mpg.db')
# Obter o metadata do banco de dados
metadata = sa.MetaData()
metadata.reflect(engine)
unico_df = unico_df.drop(['name_id', 'origin_id'], axis=1)
print("DataFrame Único:")
print(unico_df)
Run to view results
Questão 7:
import pandas as pd
import sqlalchemy as sa
# Calcula o consumo médio (mpg) por país de origem
consumo_medio_por_pais = unico_df.groupby('origin')['mpg'].mean()
# Imprime o consumo médio (mpg) por país de origem
print("Consumo médio (mpg) por país de origem:")
print(consumo_medio_por_pais)
# Encontra o país de origem dos carros que mais consomem combustível
pais_com_maior_consumo = consumo_medio_por_pais.idxmin()
print(f"\nO país de origem dos carros que mais consomem combustível é: {pais_com_maior_consumo}")
Run to view results
Questão 8:
import pandas as pd
import sqlalchemy as sa
# Calcula o peso médio (weight) dos carros, por país e por quantidade de cilindros
peso_medio_por_pais_cilindros = unico_df.groupby(['origin', 'cylinders'])['weight'].mean().unstack()
# Imprime o peso médio
print("Peso médio (weight) dos carros, por país e por quantidade de cilindros:")
print(peso_medio_por_pais_cilindros)
Run to view results
Questão 9:
import pandas as pd
import sqlalchemy as sa
# Calcula a mediana da potência (horsepower) dos carros, por ano de fabricação e por quantidade de cilindros
mediana_potencia_por_ano_cilindros = unico_df.groupby(['model_year', 'cylinders'])['horsepower'].median().unstack(fill_value=0)
# Imprime a mediana
print("Mediana da potência (horsepower) dos carros, por ano de fabricação e por quantidade de cilindros:")
print(mediana_potencia_por_ano_cilindros)
Run to view results
Questão 10:
import pandas as pd
import sqlalchemy as sa
# Calcula a média da potência, aceleração e peso por quantidade de cilindros e país de origem
media_por_cilindros_origem = unico_df.groupby(['cylinders', 'origin'])[['horsepower', 'acceleration', 'weight']].mean()
# Imprime os resultados
print("Média da potência (horsepower), aceleração (acceleration) e peso (weight) dos carros, por quantidade de cilindros e país de origem:")
print(media_por_cilindros_origem)
Run to view results