1
resposta

Estou com um erro no meu código envolvendo o Nome do Curso alguém pode me ajudar?

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

1 resposta

Olá, tudo bem?

Acredito que o erro que você mencionou foi nessa linha nome_curso = nome_curso.Nome do curso, certo?

Esse tipo de erro acontece porque não é possível chamarmos uma coluna de um dataframe que possui espaços ou caracteres especiais seguido de ponto e o nome da coluna. Para funcionar, você deve colocar o nome da coluna Nome do curso dentro dos colchetes com aspas duplas. Se a coluna tivesse o nome Nome_do_curso, por exemplo, seria possível utilizar essa forma nome_curso.Nome_do_curso.

Para corrigir podemos adotar a seguinte forma:

    nome_curso = nome_curso["Nome do curso"]
    nome_curso

Espero ter ajudado!

Forte abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!