Estou com um erro no meu código envolvendo o Nome do Curso alguém pode me ajudar?
Criando nomes
import pandas as pd
nomes_f = pd.read_json('https://guilhermeonrails.github.io/nomes_ibge/nomes-f.json') nomes_m = pd.read_json('https://guilhermeonrails.github.io/nomes_ibge/nomes-m.json')
nomes_m
nomes_f.sample(5)
nomes_m.sample(5)
print('Quantidade de nomes:' + str(len(nomes_f) + len(nomes_m)))
#Conta necessária para converter a str e fazer a soma dos nomes
frames = [nomes_f, nomes_m]
nomes = pd.concat(frames)['nome'].to_frame() nomes.sample(5)
Incluindo ID dos alunos
import numpy as np np.random.seed(123)
total_alunos = len(nomes) total_alunos
nomes["id_aluno"] = np.random.permutation(total_alunos) + 1
nomes.sample(3)
nomes.sample(5)
dominios = ['@dominiodoemail.com.br', '@servicodoemail.com'] nomes['dominio'] = np.random.choice(dominios, total_alunos)
nomes
nomes.sample(5)
nomes['email'] = nomes.nome.str.cat(nomes.dominio).str.lower()
nomes.sample()
nomes.sample(5)
#Criando a Tabela Cursos
!pip3 install html5lib !pip3 install lxml
import html5lib
url = 'http://tabela-cursos.herokuapp.com/index.html' cursos = pd.read_html(url) cursos
type(cursos)
cursos[0]
type(cursos)
cursos = cursos[0]
type(cursos)
cursos.head()
nomes.sample(3)
Matriculando os alunos nos cursos
nomes.sample(5)
nomes['matriculas'] = np.ceil(np.random.exponential(size=total_alunos) * 1.5).astype(int)
nomes.sample(5)
nomes.matriculas.describe()
import seaborn as sns
sns.distplot(nomes.matriculas)
import matplotlib.pyplot as plt
nomes.matriculas.value_counts()
#Criando o banco sql
!pip install sqlalchemy
from sqlalchemy import create_engine, MetaData, Table
engine = create_engine('sqlite:///:memory:')
engine
type(engine)
#Matriculando os alunos nos cursos
nomes.sample(5)
nomes.matriculas.describe()
import seaborn as sns
sns.distplot(nomes.matriculas)
nomes.matriculas.value_counts()
nomes.sample(5)
#Selecionando Cursos
nomes.sample(3)
todas_matriculas = [] x = np.random.rand(20) prob = x / sum(x)
for index, row in nomes.iterrows(): id = row.id_aluno matriculas = row.matriculas for i in range(matriculas): mat = [id, np.random.choice(cursos.index, p = prob)] todas_matriculas.append(mat)
matriculas = pd.DataFrame(todas_matriculas, columns = ['id_aluno','id_curso'])
matriculas.head()
matriculas.groupby('id_curso').count().join(cursos['Nome do curso']).rename(columns={'id_aluno':'quantidade_de_alunos'})
nomes.sample(3)
cursos.head()
matriculas.head()
matriculas.groupby('id_curso').count().join(cursos['Nome do curso']).rename(columns={'id_aluno':'quantidade_de_alunos'})
matriculas_por_curso = matriculas.groupby('id_curso').count().join(cursos['Nome do curso']).rename(columns={'id_aluno':'quantidade_de_alunos'})
matriculas_por_curso
matriculas_por_curso.head(3)
matriculas_por_curso.to_csv('matriculas_por_curso.csv', index=False)
pd.read_csv('matriculas_por_curso.csv')
matriculas_json = matriculas_por_curso.to_json()
matriculas_json
matriculas_html = matriculas_por_curso.to_html()
matriculas_html
print(matriculas_html)
Criando o banco sql
!pip install sqlalchemy
from sqlalchemy import create_engine, MetaData, Table
engine = create_engine('sqlite:///:memory:')
engine
type(engine)
matriculas_por_curso.to_sql('matriculas', engine)
print(engine.table_names())
Buscando do banco sql
query = 'select * from matriculas where quantidade_de_alunos < 20'
pd.read_sql(query, engine)
pd.read_sql_table('matriculas', engine, columns=['Nome do curso', 'quantidade_de_alunos'])
muitas_matriculas = pd.read_sql_table('matriculas', engine, columns=['Nome do curso', 'quantidade_de_alunos'])
muitas_matriculas.query('quantidade_de_alunos > 60')
muitas_matriculas
muitas_matriculas.query('quantidade_de_alunos > 60')
muitas_matriculas.query('quantidade_de_alunos > 70')
muitas_matriculas = muitas_matriculas.query('quantidade_de_alunos > 40')
muitas_matriculas
Escrevendo no banco
muitas_matriculas.to_sql('muitas_matriculas', con=engine)
print(engine.table_names())
Nomes dos alunos e alunas da próxima turma
matriculas_por_curso.head(20)
matriculas
id_curso = 16 proxima_turma = matriculas.query("id_curso == {}".format(id_curso)) proxima_turma
nomes.sample(3)
proxima_turma.set_index('id_aluno').join(nomes.set_index('id_aluno'))
proxima_turma.set_index('id_aluno').join(nomes.set_index('id_aluno'))['nome']
proxima_turma.set_index('id_aluno').join(nomes.set_index('id_aluno'))['nome'].to_frame()
#Assim que se filtra mais ainda a nossa tabela
nome_curso = cursos.loc[id_curso] nome_curso
nome_curso
nome_curso = nome_curso.Nome do curso nome_curso