Como eu faria para organizar os nomes acima ? na aula o professor disse que para nós era uma tarefa facil, mas acabou não explicando
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Como eu faria para organizar os nomes acima ? na aula o professor disse que para nós era uma tarefa facil, mas acabou não explicando
Oi, acho que ele chegou a passar por cima só em alguma aula, mas o que você pode fazer é o seguinte. Se você quiser alteral todos os nome das colunas.
dados = pd.DataFrame({'A': [11, 21, 31],
'B': [12, 22, 32],
'C': [13, 23, 33]})
print(df)
# A B C
#0 1 4 7
#1 2 5 8
#2 3 6 9
dados.columns = ['Coluna1', 'Coluna2', 'Coluna3'] # assim para todas as colunas'
print(dados)
# Coluna1 Coluna2 Coluna3
#0 1 4 7
#1 2 5 8
#2 3 6 9Agora se você quiser trocar somente algumas em especifico tem que fazer da seguinte forma
dados.rename(columns = {'Coluna1': 'Nome novo', 'Coluna3': 'CCC'}, inplace = True)
print(dados)
# tipinho Coluna2 CCC
#0 1 4 7
#1 2 5 8
#2 3 6 9
Espero ter ajudado :)
Oi, Lúcio! Tudo bom?
Para complementar mais a resposta do João Vitor, vou te explicar como funciona o método rename com o tipo de rotulação do seu código.
Primeiramente, o que temos nas suas colunas é uma rotulação hierárquica, funciona da mesma forma dos rótulos para as colunas, mas dessa vez temos mais níveis de rotulação. Essa forma de rotulação também é conhecida por Multiindex e é um assunto mais avançado do pandas, além disso, ele é bem bacana pois permite que possamos trabalhar com dados de forma mais sofisticada :).
Para essa explicação vou utilizar o DataFrame da 1° tabela df_html[0], e você pode aplicar o mesmo exemplo nos demais DataFrames.
Utilizando df_html[0].info() podemos ver melhor a distribuição dos rótulos:
![resultado obtido pela linha de execução do método info() em df.html[0]. A imagem possui uma caixa retangular sem preenchimento com contorno em cor azul escuro, que destaca as tuplas que referenciam as sete colunas do DataFrame df.html[0]. Cada tupla é composta por 2 elementos, sendo o primeiro, o rótulo de 1° nível hierárquico e o segundo, o rótulo de 2° nível hierárquico](https://i.imgur.com/eHgKbt8.png)
Veja que para cada coluna existe o nome referente ao 1° e ao 2° nível hierárquico, todos organizados em tuplas.
Para a definição dos nomes de cada nível, criamos um dicionário especificando nas chaves os nomes das colunas que existem e seus respectivos valores serão os nomes que desejamos renomear. Como no exemplo:
# dicionário para o 1° nível de hierarquia
nomes0 = {'Date':'a',
'Reserve balances required':'b',
'Reserve balances maintained 4':'c'}
# dicionário para o 2° nível de hierarquia
nomes1 = {'Date':'0',
'Reserve balance requirements 1':'1',
'Top of penalty- free band 2':'2',
'Bottom of penalty- free band 3':'3',
'Total':'4',
'Balances maintained to satisfy reserve balance requirements 5':'5',
'Balances maintained that exceed the top of the penalty- free band 6':'6'}Tendo os nomes definidos, podemos utilizar do método rename para renomear nossos rótulos. Primeiramente, para alterar os rótulos de 1° nível, vamos passar como argumento columns = nomes0 com ele, definimos os novos nomes das colunas utilizando o dicionário nomes0. Em seguida, definimos o nível do rótulo que iremos renomear, como será no 1° nível dos rótulos, utilizaremos o parâmetro level=0 e por fim, inplace=True para substituir os rótulos no DataFrame. No final teremos o seguinte código:
df_html[0].rename(columns = nomes0,level=0,inplace=True)
df_html[0].head(2)A saída da última linha será:
| a | b | c | |||||
|---|---|---|---|---|---|---|---|
| Date | Reserve balance requirements 1 | Top of penalty- free band 2 | Bottom of penalty- free band 3 | Total | Balances maintained to satisfy reserve balance requirements 5 | Balances maintained that exceed the top of the penalty- free band 6 | |
| 0 | Month 7 | Month 7 | Month 7 | Month 7 | Month 7 | Month 7 | Month 7 |
| 1 | Aug. 2019 | 134639 | 148114 | 121167 | 1520876 | 147555 | 1373321 |
Para alterar os rótulos de 2° nível seguiremos a mesma estrutura utilizada no 1° nível com a diferença de que nos argumentos columns e level utilizaremos as referências do 2° nível de rótulos.
# renomeando o 1° nível:
df_html[0].rename(columns = nomes0,level=0,inplace=True)
# renomeando o 2° nível:
df_html[0].rename(columns = nomes1,level=1,inplace=True)
df_html[0].head(2)Com isso, a saída da última linha será:
| a | b | c | |||||
|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | |
| 0 | Month 7 | Month 7 | Month 7 | Month 7 | Month 7 | Month 7 | Month 7 |
| 1 | Aug. 2019 | 134639 | 148114 | 121167 | 1520876 | 147555 | 1373321 |
Se ficou interessado em conhecer mais sobre o método rename, aqui está a documentação
Eu espero ter te ajudado a entender melhor! Qualquer outra dúvida estarei disposta a sanar ;-)
Bons estudos ^u^