Talvez a biblioteca mais usada no mundo de dados seja a biblioteca Pandas (se contarmos a utilização por dependências, provavelmente seria a Numpy ou a Scipy). Esta biblioteca é um toolkit para análise e transformação de dados, muito utilizada por analistas, engenheiros e cientistas de dados. Com Pandas, podemos manipular os dados organizando-os em dataframes, e talvez este seja um bom ponto para começarmos o artigo de hoje.

Muitas pessoas ainda confundem o conceito de dataset com o de dataframe, mas a diferença é realmente muito sutil. Datasets são os conjuntos de dados armazenados, geralmente em formato CSV, mas podendo também estar em bancos de dados. Já os Dataframes consistem nestes mesmos conjuntos de dados, porém quando estes são lidos por algum toolkit e encontram-se em memória para serem manipulados.
Voltando agora para o tema central do artigo, a biblioteca Pandas sofreu um novo major release e isso significa que haverão mudanças significativas em suas funções e em seu comportamento. Para começar, todas as funções que estavam marcadas como deprecated serão removidas, o que significa que se você recebia um warning quando executava seu script, talvez seja bom revisar o seu código antes de fazer um upgrade para o pandas 3.0.

Como sabemos, Python é uma linguagem fracamente tipada, o que significa que você não precisa declarar qual será o tipo da variável ao criá-la. Esta é uma solução muito prática para a pessoa desenvolvedora, mas tem um custo grande na performance do script. Isto porque a linguagem Python transforma toda variável criada em um objeto, não possuindo tipos nativos. Já a biblioteca Pandas utiliza os dtypes, que são os tipos de dados armazenados em objetos otimizados utilizados pelo Pandas chamados Series. Com o release da versão 3.0, agora as strings possuem um dtype próprio (str), deixando de ser tratada com o dtype genérico object. Isto significa que a biblioteca terá uma performance ainda melhor no tratamento de dados do tipo string.
Outra novidade neste novo release é com relação a um comportamento ao realizar alterações condicionais no dataframe. Como a biblioteca Pandas segue o paradigma funcional, em seu comportamento padrão ele retorna um objeto com os dados alterados ao invés de alterar os dados no objeto em si. Contudo, ao realizar o código abaixo isto gerava uma ambiguidade onde o objeto às vezes retornava um objeto com os dados alterados e outras alterava os dados do objeto em si.
df["foo"][df["bar"] > 5] = 100
No entanto, com a nova atualização, a alteração dos dados passa a ser feita com a função loc e o comportamento passa a ser realizar as alterações no objeto em si (copy-on-write) ao invés de retornar um objeto alterado.
df.loc[df["bar"] > 5, "foo"] = 100
É importante destacar que, como esta alteração no valor não está sendo feita inteiramente por uma função, ela não fere o paradigma funcional.
Obviamente a manipulação de dados em um dataframe é uma das aplicações mais comuns para a biblioteca Pandas. Por isto, talvez a maior novidade deste release seja a função col (pandas.col). Esta função permite simplificar a sintaxe em operações entre colunas de um dataframe. Enquanto antes era necessário usar funções lambda (funções anônimas) para realizar operações entre as colunas, agora podemos utilizar a função col para simplificar o código, tornando-o muito mais legível.
# Sintaxe utilizando uma função lambdadf.assign(c = lambda df: df['a'] + df['b'])# Sintaxe utilizando a nova função colfrom pandas import coldf.assign(c = col('a') + col('b'))
Este novo release da biblioteca Pandas ainda possui outras novidades que valem ser mencionadas. Entre estas novidades está a função from_arrow que foi adicionada nos objetos DataFrame e Series para importar dataframes de outras bibliotecas, diversas melhorias nas funções to_excel, to_csv e to_json dos objetos DataFrame e Series, adicionada a função read_iceberg para leitura e a função DataFrame.to_iceberg para escrita de dataframes diretamente no Apache Iceberg, anti joins agora são aceitos nas funções join e merge do objeto DataFrame e, por fim, inúmeros bugfixes e melhorias de performance foram aplicados.
Pandas continua sendo uma das bibliotecas mais importantes para a área de dados e este novo release traz inovações que tornam esta ferramenta ainda mais poderosa. É importante lembrar que este projeto incrível é Open Source e sobrevive graças ao esforço de uma comunidade dedicada que vem evoluindo a biblioteca ano após ano. Você também pode contribuir, mas já aviso que é necessário possuir bastante dedicação, pois o seu funcionamento é bastante complexo e há pessoas do mundo inteiro tentando contribuir com o projeto. Porém, não digo isto para te desanimar, mas sim para avisar que será uma longa jornada. No entanto, toda jornada começa com um simples passo e talvez o seu nome esteja no próximo major release do Pandas, e pode ser que tudo tenha começado com a leitura desse simples artigo.
Caso você queira saber mais, pode acessar:
- O post de release da versão 3.0 no blog da biblioteca Pandas (https://pandas.pydata.org/community/blog/pandas-3.0.html).
- A nota do release no Github (https://github.com/pandas-dev/pandas/releases/tag/v3.0.0)
- A documentação detalhada do release (https://pandas.pydata.org/docs/whatsnew/v3.0.0.html)


Deixe um comentário