In [22]:
import pandas as pd
In [23]:
#get todas empresas do brasil feitas até 2020 fonte brasio.io https://brasil.io/dataset/socios-brasil/empresas/
#ou seja empresas criadas depois de 2020 nao sao adiquiridas e cnpj pode mudar entao cnpj sera retirado ou dito que é o de 2020
empresas = pd.read_csv("empresas.csv")
In [24]:
#empresas com renuncia fiscal data definida no site
empresas_fiscal = pd.read_csv("renuncia-por-regime-agregado .xlsx - Empresas até ago2024 (1).csv")
empresas_fiscal = empresas_fiscal.rename(columns={"DIRBI - Por Empresas - Valores Totais e por Benefício (acumulado até agosto de 2024)": "razao_social"})
#remove headline
empresas_fiscal = empresas_fiscal[3:]
In [25]:
top_companies = pd.merge(empresas, empresas_fiscal, on='razao_social', how='inner')
top_companies["Unnamed: 1"] = top_companies["Unnamed: 1"].str.replace(".", "")
top_companies["Unnamed: 1"] = top_companies["Unnamed: 1"].str.replace(",", ".").astype(float)
In [29]:
import pandas as pd
import plotly.express as px
import pandas as pd
import plotly.express as px
def top_evasao_uf(top_companies, uf):
df_total = top_companies
df = top_companies[top_companies["uf"] == uf].drop_duplicates("razao_social").nlargest(1000, "Unnamed: 1")
df = df.sort_values(by="Unnamed: 1", ascending=False)
total_value = df_total["Unnamed: 1"].sum()
df["Porcentagem de renuncias Fiscais"] = (df["Unnamed: 1"] / total_value) * 100
# Create the treemap
fig = px.treemap(
df,
path=[ "razao_social"], # Hierarchy: Company Name
values="Unnamed: 1", # Size of each block
title=f"O verdadeiro custo Brasil {uf} - Renúncias Fiscais 2024 (Deixam de pagar impostos)",
color="Porcentagem de renuncias Fiscais", # Color by the percentage value
color_continuous_scale=px.colors.sequential.RdBu_r, # Continuous color scale
)
# Customize the appearance of the treemap
fig.update_traces(
textfont_size=18, # Increase text font size
texttemplate="%{label}<br><b>R$ %{value:,.2f}</b>",
hovertemplate=(
"<b>%{label}</b><br>"
"CNPJ de 20 de Setembro de 2020: %{customdata[0]}<br>"
"Valor: R$ %{value:,.2f}<br>"
"Porcentagem de renuncias Fiscais: %{color:.2f}%<br>" # Add percentage to the hover information
),
customdata=df[["cnpj"]].values # Pass the CNPJ data to hover
)
# Customize layout for better presentation
fig.update_layout(
title_font_size=24,
title_font_family="Arial",
title_x=0.5, # Center the title
margin=dict(t=40, b=40, l=40, r=40), # Adjust margins
font=dict(size=14, color="black", family="Verdana"), # Customize font
paper_bgcolor="white", # Background color
plot_bgcolor="white", # Plot background color
autosize=True,
hovermode='closest',
)
# Save the figure as HTML
fig.write_html(f""+uf.upper()+".html", full_html=True)
return fig
for uf in top_companies["uf"].unique():
top_evasao_uf(top_companies,uf)