<jupyter_start><jupyter_text>Estudos com o gráfico de Pareto<jupyter_code># by geanclm in 05/02/2022 at 22:48h
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import PercentFormatter
df = pd.DataFrame({'ocorrência':[75, 33, 126, 60, 572, 19, 32, 650]},
            index = ['Venda sem margem', 'Material divergente', 'Cancelamentos perdidos',
            'Compra errada', 'Atraso de entrega', 'Nfe difergente',
            'Valor errado', 'Material com defeito'])
df
df.ocorrência.sum()
df = df.sort_values(by='ocorrência', ascending=False)
df
# percentual em relação ao total de ocorrência
df["percentual"] = df["ocorrência"]/df["ocorrência"].sum()*100
df
# percentual acumulado
df["percentual acumulado"] = df["ocorrência"].cumsum()/df["ocorrência"].sum()*100
pd.options.display.float_format = "{:.2f}".format
650/1567
df
# indicadores em cada atributo do gráfico
# by geanclm in 15/02/2021 at 21:35h
fig, ax1 = plt.subplots(figsize=(16,8))
ax1.set_title('Gráfico de Pareto')
ax1.set_ylabel("OCORRÊNCIA", color="C0")
ax1.set_xlabel("DESAFIOS")
ax1.tick_params(axis="y", colors="C0")
ax1.bar(df.index, df["ocorrência"], color="orange", label='ocorrência')

ax1.set_ylim([0,800]) # ajuste da altura do plot para a posicionar legenda
plt.legend(fontsize=12, loc=2)

# indicadores em cada atributo [ocorrência]
# by geanclm in 15/02/2021 at 21:34h
for i, j in enumerate(df["ocorrência"]):
    plt.text(i, j+3, f'{j}', ha='center', fontsize=16)
# ---

for tick in ax1.get_xticklabels():
    tick.set_rotation(45)

ax2 = ax1.twinx()
ax2.plot(df.index, df["percentual acumulado"] , color="black", marker="o", ms=7, label='% acumulado')
ax2.yaxis.set_major_formatter(PercentFormatter())
ax2.tick_params(axis="y", colors="C1")

ax2.set_ylim([0,120]) # ajuste da altura do plot para a posicionar legenda
plt.legend(fontsize=12, loc=1)

# indicadores em cada atributo [percentual acumulado]
# by geanclm in 15/04/2022 at 16:48h
for i, j in enumerate(df["percentual acumulado"]):
    plt.text(i, j+3, f'{j:.2f}%', ha='center', fontsize=14)
# ---
plt.grid()
plt.show()
# salvar gráfico em imagem .png
# plt.savefig('pareto.png', dpi=300)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.16216216216216217, 'fraction_numerical': 0.05863490609253321, 'mean_word_length': 5.480712166172107, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '335275', 'license': 'MIT', 'n_tokens_mistral': 956, 'n_tokens_neox': 875, 'n_words': 200, 'path': 'pareto.ipynb', 'repo_name': 'geanclm/Python', 'size': '2183'}