3
respostas

Separar dados de DF por mês/ano

Eu to trabalhando pra um site de vendas online que eu recebo duas planilhas baixadas do site e mais uma criada pela proprietária e eu tenho que 'cuspir' um único documento excel. O meu problema é que eu cheguei na etapa da montagem do meu DF, já limpei e organizei o que precisava, mas meu problema é o seguinte, nesse DF eu tenho o histórico de vendas dela dos últimos 18 meses, e eu preciso fazer as seguintes tasks:

  • Separar essas informações do DF por mês/ano e criar uma aba correspondente a cada um.
  • Pra análises futuras, quando virar o mês, criar uma aba mês/ano correspondente ao mês em questão.
  • Caso minha cliente rode o programa duas vezes no mês, eu preciso fazer uma checagem pra ver se o produto já não foi registrado no mês em questão pra previnir a presença de duplicatas em uma aba (eu consigo comparar pelo código do pedido, que é único).

Estou dando upload em um print do meu DF pra exemplicar esse problema. O que eu imagino que eu deva fazer é criar um function que me permita fazer essas duas primeiras tasks, mas eu sou muito n00b pra realizar esse tarefa agora. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

3 respostas

Esse script que fiz deve te ajudar a resolver suas duas primeiras tasks:

https://colab.research.google.com/drive/1DjkosZro213hBB47T6aC5_SaIwxQimnO?usp=sharing

Basta substituir a lista pelo seu dataFrame, ai você emplementa como preferir, atravês da função "dataframe_by_date" você consegue passar o ano e ele verificara todos os mêses, e retornara um dataframe para cada intervalo de mês.

Espero que ajude, adapte da melhor forma para você, qualquer duvida é só responder nesse post mesmo.

Boas Paulo e José! Tudo bem? Esper que sim.

Desculpem a demora em responder.

Vou deixar algumas considerações sobre essa questão.

Trabalhar com datas em qualquer linguagem de programação pode ser difícil, mas o python e em especial o pandas tem algumas ferramentas que nos ajudam a trabalhar com isso.

Para trabalhar com datas em dataframes, uma das formas mais simles é utilizar a função pd.to_datetime(),que faz automaticamente o parseamento da data e transforma em um objeto datetime.

Para demostrar como isso pode ser feito, eu criei o seguinte dataframe:

dados = pd.DataFrame()

pedido = [1,2,3,4]
data = ['01/02/2020', '01/05/2020', '01/07/2020', '01/09/2020']
cliente = ['Fulano', 'Beltrano', 'Ciclano', 'Deltrano']

dados['pedido'] = pedido
dados['data'] = data
dados['cliente'] = cliente

dados

Que retorna:

pedidodatacliente
0101/02/2020Fulano
1201/05/2020Beltrano
2301/07/2020Ciclano
3401/09/2020Deltrano

Agora, para fazer a tranformação das datas, basta usar a pd.to_datetime(), passando como parâmetro as datas e o formato no qual elas estão escritas:

dados.data = pd.to_datetime(dados.data, format='%d/%m/%Y')

Uma vez transformada em datetime, podemos facilmente acessar o ano e o mês como objetos a partir do objeto dt (datetime)

Vou fazer a criação dos novos campo já acessando os meses e anos através desse objeto:

dados['mes'] = dados.data.dt.month
dados['ano'] = dados.data.dt.year

Agora, nosso dataframe possui uma coluna para o ano e uma para o mês:

pedidodataclientemesano
012020-02-01 00:00:00Fulano22020
122020-05-01 00:00:00Beltrano52020
232020-07-01 00:00:00Ciclano72020
342020-09-01 00:00:00Deltrano92020

Mais informações sobre essa função você pode encontrar na documentação oficial, que infelizmente só está disponível em inglês, mas que pode ser traduzida usando ferramentas de tradução automáticas.

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

Boa noite.

Agradeço a colaboração dos dois, mas a solução que o José deu foi mais válida pra minha resolução (mesma que eu tenha que ter adaptado várias partes) que a do Pedro, contudo novamente agradeço pelo tempo dos dois.

Com a solução do José, eu consegui criar a lista com dataframes, onde cada um é um df de cada mês, o que é bem útil pra exportar cada um pra cada aba da planilha.

Mas ainda assim eu estou tendo dificuldade com a terceira task, de checar se o código do produto já está presente na planilha ou não. Eu consigo ver isso a partir do código do produto, e no caso deveria exportar um slice do dataframe, da linha 1 até o código do produto que já se encontra na planilha, para exportar somente os novos produtos.

Caso algum de vocês tenha uma ideia sobre isso, ficaria muito grato pela contribuição!