<jupyter_start><jupyter_text>Autor: <NAME> Imports, como sempre<jupyter_code>import pandas as pd
import matplotlib.pyplot as plt<jupyter_output><empty_output><jupyter_text>Nome do arquivo, isolado pra ser fácil de enxergar e alterar<jupyter_code>fname='datasets/pokemon.csv'<jupyter_output><empty_output><jupyter_text>Agora utilizando a função default de pandas para ler csv e construir um dataframe, seguido de algumas funções de teste para mostrar como o dataframe ficou e como acessa-lo elegantemente<jupyter_code>df=pd.read_csv(fname)
print(df.columns.values)
print(df[['name','weight_kg']][0:10])
print(df.weight_kg[0:20])
bp=df.boxplot(column=['weight_kg'])
plt.show()<jupyter_output><empty_output><jupyter_text>Agora, para os exercícios de fato! Já que já carregamos os csv, o próximo seria plotar os pesos<jupyter_code>sp1=df.plot.scatter(x='pokedex_number',y='weight_kg')
sp1.set_xlabel('Número na Pokedex')
sp1.set_ylabel('Peso (kg)')
plt.show()<jupyter_output><empty_output><jupyter_text>Calcular a média e desvio padrão com pandas é bem trivial. Ambos os métodos tem o parametro `skipna` que por default é `True` fazendo com que os valores vazios no csv, interpretados como `NaN` no dataframe não contem no cálculo.<jupyter_code>avg=df.weight_kg.mean()
sd=df.weight_kg.std()
print("Média do peso dos pokemons:",avg,"kg com desvio padrão de ",sd,"kg")<jupyter_output>Média do peso dos pokemons: 61.37810499359791 kg com desvio padrão de  109.35476585346375 kg<jupyter_text>Como bonus, aqui o scatter plot com menos outliers<jupyter_code>nsd=1.2
lb=avg-sd*nsd
hb=avg+sd*nsd
q='weight_kg > {lower_bound} and weight_kg < {higher_bound}'.format(lower_bound=lb,higher_bound=hb)
print('query explicita:', q)
sp2=df.query(q).plot.scatter(x='pokedex_number',y='weight_kg')
sp2.set_xlabel('Número na Pokedex')
sp2.set_ylabel('Peso (kg)')
plt.show()<jupyter_output>query explicita: weight_kg > -69.84761403055859 and weight_kg < 192.6038240177544<jupyter_text>Por fim, o histograma com amostras aleatórias, que também é bem trivial<jupyter_code>sample_size=80
samples=[df.weight_kg.sample(sample_size).mean() for i in range(1000)]
hst=plt.hist(samples)
plt.xlabel("Peso (Kg)")
plt.ylabel("Frequencia")
plt.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1212661613909942, 'fraction_numerical': 0.03789567543468569, 'mean_word_length': 8.35, 'pattern_counts': {'":': 0, '<': 30, '<?xml version=': 0, '>': 30, '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': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '626292', 'license': 'MIT', 'n_tokens_mistral': 962, 'n_tokens_neox': 895, 'n_words': 193, 'path': '23-mar-pandas-csv.ipynb', 'repo_name': 'bhering/notebooks', 'size': '2252'}