Transcrições
1. Introdução: Oi, pessoal. Você está cansado
do processamento lento de dados? Você tem dificuldades
com grandes conjuntos de dados que levam seu sistema
ao limite Se você trabalha com dados e precisa de velocidade, eficiência
e escalabilidade, este curso é exatamente
o que você precisa Vamos nos familiarizar com
a biblioteca do Pollard e compará-la com os sempre populares
Pandas Se você está cansado de esperar grandes quantidades de dados sejam
carregadas e processadas no Pandas, este tutorial é para você porque essa biblioteca está
configurada para substituir o Pandas, mas será que ela realmente
será capaz de fazer isso? Ao contrário do Pandas, o polars
foi projetado para lidar facilmente com grandes conjuntos de dados usando processamento paralelo
avançado
e avaliação lenta É isso que
exploraremos nesta sessão. Abordaremos os princípios
básicos
de como a polars opera, discutiremos suas vantagens
e desvantagens e compararemos com a Pandas em termos de desempenho
e Também examinaremos as principais funções para trabalhar com dados usando exemplos principais para ilustrar esses conceitos Você descobrirá como os polares
superam os pandas. Ao trabalhar com conjuntos de dados com
mais de 100 milhões de linhas, você aprenderá a
processar dados em partes, permitindo que você trabalhe com eficiência sem ficar sem memória Exploraremos a visualização de dados polares
e, o
mais importante, você entenderá o modo preguiçoso, o segredo por trás dos polares Ao final deste tutorial, você terá uma sólida
compreensão de como usar polares para
suas
necessidades de análise de dados e poderá decidir se é a ferramenta certa
para seu projeto ou não Então, prontos para levar suas habilidades para o próximo nível,
vamos mergulhar.
2. Introdução aos polares: as principais diferenças dos pandas e por que é mais rápido: Olá pessoal, vamos nos familiarizar
com a biblioteca polars e a compararemos com os sempre populares
Pandas Polars é uma biblioteca de quadros de dados rápida e
eficiente projetada para trabalhar
com grandes conjuntos Ele foi desenvolvido pensando no
desempenho, utilizando processamento
paralelo e multiencadeamento para lidar com manipulação de
dados rapidamente Polars é implementado no RST, o que permite
oferecer velocidade superior comparação com outras
bibliotecas de quadros de dados, como A biblioteca oferece suporte a
operações como filtragem, agregação e
transformação de dados, e é particularmente útil
para analistas e cientistas de
dados que precisam trabalhar com grandes volumes
de dados de Com uma API Pattern
e Rust, polars é acessível e poderoso para fluxos de trabalho modernos de
processamento de dados Como eu disse antes, essa biblioteca
fornece uma ampla variedade de funções para manipulação,
agregação e transformação de dados agregação e Mas, na minha opinião, sua principal
característica é a avaliação preguiçosa. O que é avaliação preguiçosa? A avaliação é uma
estratégia computacional que
atrasa a execução de uma operação até que seu resultado seja
realmente necessário No contexto das polares, isso significa que as operações de
manipulação de dados não são executadas imediatamente
quando são definidas Em vez disso, eles são registrados como uma série de etapas a
serem executadas posteriormente. Essa abordagem permite que os polares otimizem toda a
sequência de operações, reduzindo a
carga de trabalho computacional geral e melhorando desempenho executando apenas os cálculos
necessários Outro recurso importante é o
processamento multiencadeado. Uma das principais vantagens
do polars é
a capacidade de processar dados usando vários
segmentos ao mesmo tempo Isso significa que,
em vez de realizar tarefas uma após a
outra sequencialmente, os polares podem dividir
a carga de trabalho em partes
menores e executá-las simultaneamente em vários Eles
aceleram significativamente as operações de dados, especialmente ao trabalhar
com grandes conjuntos de dados. Polars alcança a eficiência porque é construída com rust, uma
linguagem de programação projetada para alto desempenho e gerenciamento
seguro Rust facilita o trabalho
com computação paralela, que
significa que os polares podem utilizar
totalmente a potência dos computadores modernos com processadores de
vários núcleos Outro recurso poderoso polares é sua capacidade de
mapear dados na memória Isso significa que, em vez de carregar um grande
conjunto de dados inteiro no Rum, que pode
deixar seu computador lento ou até mesmo causar falhas, os polares podem ler e processar apenas as partes
necessárias no momento Por exemplo, se você
estiver trabalhando com arquivo CSV ou Parki
massivo, polars não precisará carregar
o arquivo inteiro na memória Em vez disso, ele acessa os dados diretamente do
arquivo conforme necessário, tornando o processo muito mais rápido
e mais eficiente em termos de memória Esses recursos tornam os polares uma excelente opção para
trabalhar com big data Como ajuda analistas e pesquisadores a lidar com
grandes conjuntos rápida e eficaz sem necessidade de hardware de ponta, polars é construído com base no
apache arrow,
um formato de dados projetado para tornar armazenamento e a transferência de
dados
mais rápidos e eficientes Pense na seta como uma forma
altamente otimizada de organizar e estruturar
dados
para que
possam ser processados rapidamente por diferentes sistemas, porque a
seta é usada por polares, ela permite que os polares compartilhem
dados sem problemas com outras ferramentas e sistemas
que também Por exemplo, se você estiver trabalhando em polares e quiser
passar seus dados para sistema
diferente, como uma ferramenta de aprendizado de
máquina ou outra biblioteca de
análise de dados, AR faz com que a transferência de dados
ocorra de forma suave e eficiente, sem precisar
converter os dados em um formato
diferente, que pode ser lento Outro recurso que torna
os polares fáceis lagos como Pandas é uma das ferramentas
mais populares para análise de dados em Python , e muitos analistas
e cientistas de dados já estão familiarizados com seu funcionamento O Polars foi projetado para parecer
familiar aos usuários do Pandas. Então, se você já conhece o Pandas, pode começar a usar polares sem precisar aprender
tudo No entanto, embora a
API pareça familiar, as polares têm a vantagem adicional de
desempenho de serem mais rápidas e
eficientes, especialmente ao lidar
com grandes conjuntos Portanto, se você
vem do Pandas, pode se beneficiar da
mesma sintaxe fácil de usar, mas aproveite a velocidade e a eficiência de
memória dos Embora o polars tenha
muitos recursos excelentes, há algumas
limitações a serem consideradas É importante ter em
mente que, como qualquer ferramenta, ela pode não ser a melhor
opção para todas as situações. Entraremos em mais detalhes sobre essas desvantagens posteriormente Mas, por enquanto, vamos dar uma
olhada em alguns dos desafios. Uma desvantagem potencial
é que as polars são relativamente novas em comparação com
bibliotecas
mais estabelecidas, como a bibliotecas
mais estabelecidas, como Como ainda está crescendo, pode
haver menos recursos
disponíveis, como tutoriais, suporte
comunitário
ou documentação, que pode dificultar o início dos
iniciantes Além disso, como é novo, pode
haver menos
exemplos de como as empresas o
estão usando em projetos reais de
grande escala. Como o polars ainda não é
tão amplamente adotado, há
informações limitadas sobre quantas empresas o estão usando no
ambiente de produção, os sistemas do mundo real que as empresas administram
suas operações A maioria das empresas que
usam polares pode não compartilhar
publicamente detalhes sobre como elas se
encaixam em seus fluxos de trabalho Portanto, é mais difícil
saber o quão bem ele funciona em cargas de trabalho muito grandes
ou complexas No entanto, algumas
empresas estão começando a usar polares para suas tarefas de processamento de
dados, e você pode ver
exemplos disso no setor À medida que a biblioteca amadurece, sua adoção
provavelmente crescerá e mais empresas começarão a
compartilhar suas experiências Então, vamos começar.
3. Instalando polares, carregando DataFrames e acessando colunas de forma eficiente: Aqui está o comando para
instalar a biblioteca. Vamos começar. abrir meu terminal, pois estou
acostumado a trabalhar com ele. Primeiro, vou ativar
meu ambiente virtual. Se você não está familiarizado
com ambientes virtuais, recomendo fortemente
que confira meu vídeo sobre como
gerenciar ambientes virtuais e como eles podem facilitar
sua vida. Mas se você não sabe o que é
um ambiente virtual, pode executar o comando
diretamente no terminal. No momento,
saber trabalhar com ambiente
virtual não
é prioridade. Depois de ativar meu ambiente, posso executar meu
notebook Jupiter diretamente do terminal executando
o
comando Se você usa o Anaconda depois de
iniciar o Jupiter Notebook, você pode instalar essa
biblioteca diretamente dentro do Jupiter executando Como você pode ver, eu já
tenho a biblioteca instalada, então podemos começar a trabalhar. Primeiro, importarei todas as bibliotecas necessárias com
as quais trabalharemos. Estou importando a
biblioteca Numbi porque precisaremos dela. Para quem não está
familiarizado com isso, o Nampi é uma poderosa
biblioteca
Python usada para No meu perfil, você pode encontrar
um tutorial nesta biblioteca. Em seguida, vou verificar a
versão dos polares. Eu baixei um enorme conjunto de dados
com mais de 1 gigabyte de tamanho e agora vou
importá-lo usando a função Ler CSV Demora um pouco para carregar e, usando a função
shape, que você pode ter
ouvido do Pandas, podemos verificar
as dimensões do nosso conjunto de Se você não estiver familiarizado com isso, a função de forma e
os polares retornarão o dobro que representa o número de linhas e colunas
no quadro de dados Essa função é
útil para
entender rapidamente o
tamanho do seu conjunto de E aqui podemos ver que o conjunto de dados contém
mais de 130 milhões de linhas Outra função útil para entender
rapidamente
um quadro de dados sem carregar todos os
dados na função principal. Por padrão, ele exibe
as primeiras cinco linhas. Como podemos ver, a aparência do quadro
de dados em polares é um pouco diferente do que
observamos ao carregar
dados com o Pandas A primeira
diferença perceptível nas informações
do tipo de dados
exibidas para cada coluna. Usando as duas
funções Pandas em polares, podemos converter o quadro de dados Polars em
quadro de dados Isso é particularmente útil quando você precisa aproveitar a funcionalidade
específica do Panda
ou integrar-se bibliotecas que
suportam apenas os dataframes do Panda O método dos dois Pandas garante uma transição suave
entre polares e Pandas, permitindo que você
aproveite
as duas bibliotecas
no mesmo fluxo de as duas bibliotecas
no mesmo fluxo Se você não quiser baixar grandes conjuntos de dados em
seu computador, você pode usar conjuntos de dados
disponíveis publicamente no Github Para fazer isso, encontre um grande
conjunto de dados no GitHub. Vá até a banheira de fileira e
copie o link direto. Use as leituras conforme funcionamos
em polares para carregá-las. Como antes, leva um
pouco de tempo para ser processado. Mas, eventualmente,
podemos ver os dados. exemplo de hoje,
estamos trabalhando com o conjunto de
dados criminais de Chicago para 2022. Também podemos verificar
os tipos de coluna e ver que ela
contém 2.525.551 linhas,
bastante grandes, bastante grandes Para evitar confusão com o primeiro quadro de dados
que carregamos anteriormente, renomearei esse novo quadro de dados Ainda usarei o
primeiro quadro de dados posteriormente,
mas, por enquanto, trabalharemos
com esse segundo,
que foi carregado do Github Vou recarregar todas as células, assim como em Pandas Em polares, uma série é
uma estrutura
semelhante a uma matriz unidimensional que representa uma única coluna de um quadro de dados Ele pode conter tipos de dados
homogêneos, como números inteiros, flutuantes,
cadeias de caracteres e flutuantes As séries são os blocos
de construção de quadros de dados e polares. Eles nos permitem realizar várias operações de manipulação
e análise de dados, como filtragem,
transformação e Cada série tem um
nome e um tipo de dados associados, facilitando a referência
dentro do quadro de dados. Podemos extrair uma série de um quadro de dados
de várias maneiras. O primeiro usando
o nome da coluna. A forma mais simples é acessar a coluna pelo nome Para evitar o carregamento da
série inteira em grandes conjuntos de dados, usarei a função head para exibir somente as
primeiras quatro linhas O segundo usando a função de coluna
GAD. Essa abordagem tem vantagens de desempenho
e flexibilidade em relação ao acesso direto à coluna. Para mim, o principal motivo para usar a função
Get column é
o tratamento de erros. Se você tentar recuperar
uma coluna inexistente, extratores gerarão imediatamente um
erro. Isso fornece feedback instantâneo se houver um erro de digitação
no nome da coluna Por outro lado, acessar
uma coluna pelo nome pode retornar silenciosamente um
não ou gerar um erro de chave, que pode dificultar a depuração A terceira forma é
o método de seleção. Ele cria um novo quadro de dados contendo somente a coluna
especificada. No entanto, mesmo que
contenha apenas uma coluna, o resultado ainda é
um quadro de dados. Para trabalhar diretamente com uma série, precisamos convertê-la
usando a função de duas séries. O método select
em polars retorna um novo quadro de dados, mesmo se estivermos selecionando apenas
uma única coluna Isso significa que, se eu criar uma variável e atribuir
esse resultado a
ela, não será apenas uma única coluna, mas o quadro de dados polares
contendo uma coluna Então, se eu verificar o tipo
D de um, também removo o método de duas séries. Isso pode resultar em um erro. Como o tipo D, normalmente é um atributo de série,
não um quadro de dados. E aqui estamos,
temos um erro. Se eu usar novamente o método de duas
séries, já que uma não é mais
um quadro de dados, série polar
corporal e atributo do tipo
D
retornarão o tipo
de dados da coluna do distrito. Vamos imprimi-lo.
No primeiro caso, podemos ver essa impressão como uma, deslocando o valor da coluna do
distrito como uma série Aqui podemos ver a forma, o tipo de dados e os valores. O segundo caso
desloca a coluna do distrito dentro
do formato do quadro de dados, mostrando o
nome da coluna e seus dados
4. Manipulação de dados em polares: operações aritméticas, gerenciamento de colunas e técnicas de filtragem: Em polares, podemos realizar operações
aritméticas
em séries ou colunas usando operações padrão Por exemplo,
podemos usar adição. Se quisermos adicionar
dez a uma série, podemos ver que cada número
na série resultante
aumentou exatamente dez em comparação com o número
na série original. Aqui eu imprimo a série original e podemos ver o resultado. O valor da idade aumenta em dez. Multiplicação.
Multiplicar uma série por dois dobra cada valor. Aqui eu
comparo com a série original e podemos ver que
cada valor é dobrado Subtrair 20 diminui
cada valor em 20. Vamos continuar com os métodos de
agregação. Os polares fornecem
métodos integrados para agregações,
como O método de soma em polares é
usado para calcular a soma de todos os elementos em uma série ou coluna em
um quadro de dados Quando aplicado a uma coluna
contendo valores inteiros, ele retorna à
soma total desses valores O método médio em
polares calcula
a média de todos os elementos
em série ou coluna Em nosso exemplo, ele
calcula a média aritmética de todos os
valores inteiros Também podemos usar operadores de
comparação em polares para criar séries
booleanas Em polares,
os operadores de comparação permitem
comparar valores em uma
coluna com outros valores, e o resultado é
uma série booleana Uma série booleana é uma sequência
de valores verdadeiros ou falsos, que você pode usar para filtrar, analisar ou
manipular seus Veja como os separadores funcionam. Nesse caso, criamos uma nova série contendo valores
booleanos A operação compara
cada valor
na coluna com 20
e retorna uma série do mesmo tamanho
na coluna original que cada elemento é verdadeiro
ou falso Também em polares, podemos usar
o método maior que. Na primeira vez, ele
retornou apenas falso, então alterei o valor de
comparação para 30. Esse método é usado para comparar uma coluna com um valor específico, semelhante ao uso do operador maior
que que usamos anteriormente. O método greater than é uma função
embutida que executa, sim, a mesma operação, mas permite mais flexibilidade. Ela pode ser útil ao
trabalhar com métodos que exigem chamadas de função
em vez de operadores. Em alguns casos, pode
ser preferível usar o encadeamento de
métodos ou trabalhar com expressões personalizadas
em uma consulta Portanto, o primeiro caso que podemos usar ao verificar valores
em um quadro de dados. O método maior que
o usado no segundo caso, podemos usar quando precisamos de processamento baseado em
funções, como encadeamento de métodos ou compatibilidade com
determinadas estruturas de consulta Na maioria dos casos, as duas abordagens
alcançam o mesmo resultado. Isso é útil para
filtrar ou analisar dados que você deseja
se concentrar em valores que atendam a uma
condição específica, como encontrar registros com vendas maiores
do que uma determinada meta Eu, entre esse operador, verifica se um valor está dentro de um intervalo
específico de números. Por exemplo, usar is 20-30 retornará
true para todos os valores Na coluna que está
entre dez e TG, incluindo dez e TJ e quedas Para aqueles que estão
fora dessa faixa,
isso é particularmente útil quando você precisa filtrar dados ou criar condições que verifiquem se os valores estão dentro de
uma faixa específica, como 18 a 65 anos ou
preços de $10 Em polares, adicionar
uma nova coluna a um quadro de dados é feito usando o método
with columns É importante saber que quadro de dados
polares é imutável, o que
significa que o quadro de dados
original não muda quando
você adiciona uma Em vez disso, esse método cria e retorna um novo quadro de dados
com uma nova coluna adicionada, deixando o quadro de
dados original inalterado Então, usamos com o método de colunas. Ele diz aos polares que adicionem novas
colunas ao nosso quadro de dados. Para adicionar um
valor constante a uma nova coluna, usamos a função lead. Essa função cria um valor
literal ou fixo que será atribuído a
cada linha na nova coluna Por exemplo, se usarmos t um, significa que cada linha
na nova coluna
terá o valor um. Depois de criar uma nova coluna, você pode dar um nome a ela usando AS. No nosso caso, eu a
chamo de nova coluna. É assim que você especifica a nova coluna será
chamada no quadro de dados. Depois de executar essas etapas, criamos um novo
quadro de dados com base no quadro de dados dois com uma nova coluna
chamada nova coluna adicionada A nova coluna contém o
valor um para todas as linhas. E, como esperado, o quadro de dados
original permanece inalterado Se você quiser excluir uma
coluna de um quadro de dados, você pode usar esse método drop. Esse método permite
remover uma coluna fornecendo seu nome
como argumento. Você só precisa informar aos polares qual coluna você deseja
remover especificando
o nome da coluna É importante saber que quadros de dados
polares
são imutáveis, o que
significa que o método drop não modifica diretamente o quadro de
dados original Em vez disso, ele cria
um novo quadro de dados com a coluna removida. Isso é feito para garantir que os dados originais
permaneçam inalterados Como o
quadro de dados original não muda, se você quiser manter o quadro de dados
modificado, aquele sem a coluna
descartada, necessário reatribuir
o resultado à variável original ou
armazená-lo em uma nova variável Sem fazer isso, o quadro de dados
original permanecerá inalterado Agora vamos filtrar uma série polar com
base em determinadas condições Por exemplo, aqui estamos filtrando para manter somente
os números pares A condição verifica
os números pares, e o método de filtro mantém somente os elementos em que a condição é avaliada como verdadeira Isso é muito útil, pois você pode ajustar a condição e assinar o filtro para filtrar a série com base em critérios
diferentes. Por exemplo, filtrei
todos os valores maiores que 20. Se eu mudar para 30, a condição
fica mais clara. Deixe-me atualizar isso rapidamente e reiniciar a célula para
o próximo exemplo. Agora, vamos criar duas séries. Provavelmente, é melhor
usar apenas séries de nomes. Eu removi o operador de impressão porque o notebook Jupiter o
renderiza muito bem E a segunda série é um pouco
diferente da primeira. Agora vamos concatená-los. Ao trabalhar com extratores, a concatenação das séries
depende do tipo de Se você concatenar duas séries do
tipo string usando
o operador plus, a operação executará a
concatenação
elemento a elemento
das concatenação
elemento a elemento Isso significa que cada
elemento na primeira série está concatenado com
o
elemento correspondente na Como as duas séries
são do tipo string, o operador plus
concatena as strings No entanto, quando séries de tipos
diferentes estão envolvidas, polares automaticamente
custarão a série para um tipo de dados compatível antes de
realizar a operação Aqui, polars
converte automaticamente os números inteiros
em strings antes
de realizar a concatenação Se você concatenar duas séries do tipo
inteiro usando o operador de adição, a operação executará
a adição desses números inteiros por
elemento, operação executará
a adição desses números inteiros por
elemento não a
concatenação de Como resultado, a série
conterá números inteiros somados.
5. Dominando DataFrames em Polars: slicing, estatística descritiva e metodologia avançada de exploração de dados: Vamos analisar rapidamente como
acessar linhas e polares. Em polars, você pode acessar linhas usando indexação e fatiamento, mesma forma que funciona em
outras bibliotecas de manipulação
de dados, como outras bibliotecas de manipulação
de dados No entanto, existem algumas
diferenças importantes na forma como os polares lidam com as linhas devido à sua estrutura de dados
colunar Você pode acessar linhas
usando indexação, mas polars retorna
um novo quadro de dados em vez de um objeto de linha única Quando você acessa uma
linha específica usando um índice, polars a retorna como um
novo quadro de dados em
vez de uma única tupla ou objeto de linha
individual Isso é diferente do Pandas, em que acessar a linha retorna um objeto unidimensional em série Como os polares são otimizados para trabalhar com colunas
em vez de linhas, esse comportamento garante
que os dados permaneçam consistentes e eficientes
ao realizar operações Você também pode extrair várias
linhas usando a notação de fatias, que funciona de forma semelhante à forma como você divide listas ou
raios em Python Isso permite que você
recupere um intervalo de linhas de forma eficiente sem alterar
a estrutura do quadro de dados Ao contrário dos Pandas, os polars não
usam um índice de linha explícito. Em vez disso, as linhas são identificadas
por sua posição, tornando-as mais eficientes ao trabalhar com grandes conjuntos de dados. Essa abordagem colunar
ajuda os polares a realizar operações de
dados com muito
mais rapidez do que os métodos tradicionais de indexação
baseados em funções O
método descrito em polars é uma ferramenta poderosa usada para gerar
estatísticas descritivas para um quadro de dados A estatística descritiva ajuda você a resumir e entender os
principais recursos de seus dados, permitindo que você obtenha rapidamente uma visão geral de suas Aqui podemos ver o que o método
descrito fornece. A contagem mostra o número de valores não
nulos em cada coluna. Ele ajuda você a entender
quantos dados estão disponíveis para cada variável e se
há algum valor ausente. A média ou média de
cada coluna numérica dá uma ideia da tendência
central dos dados Qual valor é o mais
comum para essa coluna? O desvio padrão indica como os
dados estão distribuídos em torno da média Um pequeno desvio padrão significa que os valores estão
próximos da média, enquanto um grande desvio padrão significa que os valores estão
mais dispersos Dependendo dos dados, os pesquisadores também podem fornecer
outras estatísticas, o que fornece mais informações sobre a distribuição dos
valores em cada coluna O
método descrito é ótimo para obter
rapidamente informações
sobre seus dados. Ele ajuda você a identificar padrões e entender o
comportamento geral dos dados, detectar valores discrepantes ou valores que geralmente estão
longe da média, ter uma ideia de quanta
variação existe no conjunto de dados, o que pode ajudar na
tomada de decisões sobre como limpar ou
processar mais os O método de tamanho estimado
em polares é usado para
estimar a quantidade de memória um quadro de dados
usará em seu sistema Ele fornece um
tamanho aproximado do quadro de dados, para que você possa entender
quanto espaço ele está ocupando na sua memória Quando você chama o
tamanho estimado em um quadro de dados, ele calcula o uso
de memória do quadro de dados em megabytes Isso é útil quando
você trabalha com grandes conjuntos de dados e deseja garantir que seu sistema tenha memória
suficiente para
processá-los com eficiência. Em vez de carregar
todo o quadro de dados e ver quanto espaço
ele usa na memória, o que pode ser lento
ou ineficiente, você pode obter uma estimativa rápida O método duplicado em
polares é usado para identificar linhas
duplicadas em um
quadro de dados com base em Ele retorna tabela e série, indicando se cada linha é uma duplicata de uma linha anterior Para obter somente as linhas duplicadas, podemos filtrar os dados Isso removerá todas as linhas
não duplicadas, deixando somente as duplicatas
no quadro de dados resultante Como podemos ver, não há
duplicatas nesse caso. Esses métodos vazios
e polares são usados para verificar se um quadro de dados
contém dados ou não Essencialmente, ele ajuda a
determinar se o quadro de
dados está vazio, o que significa que ele não tem linhas
ou dados dentro dele. Por exemplo, você pode ter um quadro de dados com nomes de colunas, mas sem dados nas linhas. Isso seria considerado vazio. Quando você usa o método is empty, ele verifica se o
quadro de dados tem alguma linha. Se o quadro de dados não tiver linhas, ele retornará verdadeiro, indicando que o quadro de
dados está vazio. Se o quadro de dados tiver
uma ou mais linhas, ele retornará falso, o
que significa que o
quadro de dados não está vazio. Esse método é especialmente
útil em situações em que talvez você queira realizar algumas operações em um quadro de dados, mas somente se ele contiver dados. Por exemplo, antes de realizar um cálculo complexo
ou uma transformação de dados, talvez
você queira garantir que o quadro de dados realmente
tenha dados com os quais trabalhar. Isso pode evitar erros ou cálculos
desnecessários
em um conjunto de dados vazio Esse método exclusivo em
polares é usado para verificar se os valores em uma coluna
específica são exclusivos Quando você chama o método is unique em uma coluna em um quadro de dados
polars, ele verifica se todos os valores nessa coluna são exclusivos O método retornará
verdadeiro se cada valor
na coluna for exclusivo e cairá se algum valor
for repetido. Ele ajuda na limpeza
ou validação de
dados antes de realizar
tarefas como análise, mesclagem de conjuntos de dados ou
criação de índices Aqui, usei o filtro novamente para obter valores exclusivos em vez
de justos ou falsos. As portas também fornecem
um método exclusivo, que conta o número de valores
exclusivos em uma
série ou quadro de dados. Ele retorna um número inteiro representando a contagem
de valores exclusivos Quando aplicado a uma coluna, and unique retorna a
contagem total de
valores distintos dessa coluna. Se usado em um quadro de dados
, normalmente conta valores
exclusivos para cada coluna separadamente. E um método exclusivo é
útil ao analisar dados para entender sua
diversidade ou distribuição. Ele pode ser usado para detectar valores
duplicados. Por exemplo, verificar
quantos IDs de clientes, nomes de
produtos ou
e-mails de usuários diferentes existem em um conjunto de dados. Isso ajuda na validação de dados, garantindo que uma
coluna destinada a ter valores
exclusivos não contenha duplicatas
inesperadas O método de contagem nula e
os polares são usados para contar o número de valores ausentes em
uma coluna ou em um quadro de dados
inteiro Quando aplicado a uma coluna, ele retorna o número total de valores
nulos nessa coluna Se eu usá-lo em um quadro de dados, ele normalmente conta valores nulos para cada coluna separadamente. Valores ausentes podem causar
problemas nos cálculos. Portanto, saber quantos valores nulos existem ajuda a decidir
como lidar com eles. Se uma coluna que sempre deveria
ter dados tiver valores nulos, isso poderá indicar erros de entrada
de dados Muitos modelos de aprendizado de máquina não conseguem lidar diretamente com
dados perdidos. Portanto, contar valores nulos é a primeira etapa para decidir
como preenchê-los ou removê-los O método count em polars é
usado para contar o número de valores
não nulos em uma coluna
ou em um quadro de dados inteiro Ele ajuda você a determinar rapidamente quantos
valores reais não faltantes existem em seu conjunto de dados. Quando eu aplico esse
método à coluna, ele retorna o número total de valores não nulos
nessa coluna Se eu usá-lo em um quadro de dados, ele normalmente conta
os valores não nulos para cada coluna separadamente. Isso ajuda a determinar a
quantidade de dados
utilizáveis disponíveis em cada coluna Ao comparar valores nulos de contagem com um número total de linhas, você pode ver quantos valores
faltam. Muitas etapas de processamento de dados
exigem valores não nulos. Portanto, saber quantas entradas
válidas estão presentes ajuda na
limpeza e no processamento de dados. O método horizontal médio em
polares é usado para calcular os valores médios ou médios linhas
horizontais de um quadro de dados Ele calcula a média de
cada linha individualmente, tratando cada linha como uma sequência
separada de valores Esse método é útil para resumir dados e
obter informações sobre a distribuição e
as características dos
valores
em um conjunto Para encontrar os
valores mínimos ou máximos em um quadro de dados, você pode usar métodos
como média e A função média retorna com o valor mínimo em todas as colunas numéricas
no quadro de dados A função max obtém os valores máximos em
todas as colunas numéricas Essas funções funcionam não
apenas com dados numéricos, mas também com outros tipos de dados, como cadeias de caracteres ou datas. A função de produto em polares é usada para calcular
o produto de todos os valores em uma coluna ou série ou várias
colunas em um quadro de dados Isso significa que ele multiplica todos os valores
e retorna o resultado Quando aplicado a uma coluna, ele retorna um único número representando o produto de
todos os valores dessa coluna. Para o quadro de dados, ele calcula o produto para cada coluna
numérica separadamente É muito útil para cálculos
matemáticos, análises
financeiras
e validação de dados. Se você quiser estimar a
dispersão ou o desvio quadrado dos valores de sua média
em cada coluna numérica, você pode usar a Ele mede o quanto, em média, os valores em uma coluna
se desviam da média É comumente usado em análises
estatísticas para
entender a distribuição
e a variabilidade dos dados A função SDD
calcula o desvio padrão dos valores em cada coluna de um quadro
de dados Essa função retorna uma série contendo o
desvio padrão para cada coluna Um desvio padrão baixo significa que os valores estão
próximos da média, enquanto um
desvio padrão alto indica que os valores estão
espalhados por uma ampla faixa
6. Explorando os métodos de DataFrame do Polars: bandeiras, esquema, operações de colunas e técnicas de conversão de dados: A função flag
e polars retornam um dicionário de sinalizadores para cada
coluna no quadro de dados Cada sinalizador recebe
um valor booleano indicando se o sinalizador está definido para aquela coluna ou não Por exemplo, vejo sinalizadores
ordenados aqui, mas se eu quiser verificar
se uma coluna é exclusiva, posso usar essa função exclusiva Essa função exclusiva
retorna um valor booleano. Verdadeiro se todos os valores nas
colunas especificadas forem exclusivos, sem duplicatas e falso se houver valores
duplicados. E aqui eu verifico se a coluna distinta no meu quadro de dados contém
apenas valores exclusivos ou não. No primeiro caso, verifiquei
a presença de
valores exclusivos na coluna, se eles existem. E então descobrimos se a coluna consiste
inteiramente em valores exclusivos. E, como podemos ver, não
há valores exclusivos e a coluna não está marcada
com a bandeira exclusiva. Para recuperar a lista de
nomes de colunas no quadro de dados, você pode usar o método columns Ele retorna uma lista de strings em que cada string
é o nome da coluna Isso é útil para
verificar rapidamente a estrutura
do quadro de dados e entender
quais colunas estão disponíveis para análise
ou processamento. O esquema de um quadro de dados
se refere à sua estrutura, especificamente aos
nomes das colunas e seus tipos de dados No entendimento dos polares,
o esquema é importante porque ajuda você a saber que tipo de dados
você está trabalhando O esquema inclui os nomes de todas as colunas
no quadro de dados e isso ajuda você a
ver rapidamente quais dados estão disponíveis Cada coluna no
quadro de dados tem um tipo de dados, e conhecer os tipos de dados também
é importante porque algumas operações só funcionam
em tipos específicos de dados. Portanto, o esquema ajuda a verificar se os dados estão no formato
correto antes de realizar as operações Algumas operações podem falhar se os tipos de dados estiverem incorretos. Portanto, verificar o esquema
com antecedência pode evitar erros. O método de largura
em polares é usado para descobrir quantas colunas são
apresentadas em um quadro de dados Isso é útil ao trabalhar
com grandes conjuntos de dados. Onde a contagem manual de
colunas é impraticável. Isso ajuda a verificar rapidamente quantos
campos de dados diferentes existem no seu conjunto de dados. Também pode ajudar ao trabalhar
com conjuntos de dados dinâmicos. Saber o número de
colunas pode ajudar em tarefas como percorrer colunas
ou selecionar colunas específicas O método glimpse em polars é usado para visualizar um resumo
do seu quadro de dados, oferecendo uma visão rápida da estrutura
de É útil quando você
quer entender o layout geral dos seus dados sem precisar exibir
o conjunto de dados inteiro, especialmente ao trabalhar
com grandes conjuntos O método Glimse fornece uma visão geral
compacta do quadro de dados, incluindo nomes de colunas, tipos de
dados de cada coluna uma prévia dos primeiros
valores em cada Esse método não mostra
o conjunto de dados inteiro, mas oferece
um instantâneo rápido, para que você possa entender a estrutura de
dados Isso ajuda a verificar rapidamente
quais dados estão disponíveis, quais são as colunas
e os tipos de dados com os quais você está trabalhando
sem exibir tudo. Também ajuda a evitar a
sobrecarga com grandes quantidades de dados, mostrando apenas uma pequena parte
resumida Você também pode identificar
possíveis problemas como tipos de dados inesperados, valores
ausentes ou
inconsistências nos nomes das colunas durante
essa análise rápida O método N chunks em
polares é usado para descobrir quantos blocos um quadro
de dados Em polares, os dados podem ser
divididos em partes para um processamento mais
eficiente, especialmente ao trabalhar com grandes conjuntos de dados que não
cabem na memória Um pedaço é uma parte menor
de todo o quadro de dados. Polars geralmente divide
grandes conjuntos em partes para lidar com eles
com mais eficiência Cada bloco pode ser
processado separadamente, permitindo que os polares
trabalhem com conjuntos muito grandes para caber
inteiramente na memória Isso faz parte do
eficiente sistema de
gerenciamento de memória da Polar . Quando você usa o método
N chunks, ele retorna o número
de blocos em que nosso quadro de dados foi
dividido Isso pode ser útil para
entender como a polars está gerenciando a distribuição de memória
e dados para seu quadro de dados específico Em alguns casos, entender a fragmentação dos dados ajuda a
monitorar e depurar como polars está lidando com os
dados Se um quadro de dados tiver um
grande número de blocos, as operações podem
ser menos eficientes em comparação com quando os dados
são armazenados em um único bloco Compreender os fragmentos é fundamental ao trabalhar com
grandes A função de duas setas
e polares é usada para converter um quadro de dados polares
em uma tabela de setas Pache Isso é útil para interoperabilidade de
dados porque o apache arrow é formato
amplamente usado para troca
eficiente de dados entre diferentes sistemas de processamento de dados O Apache arrow é um formato de memória
colunar projetado para processamento rápido de
dados Ele permite que diferentes ferramentas de processamento de
dados como Pandas ou Spark compartilhem dados
com eficiência sem precisar copiá-los ou convertê-los várias
vezes Quando você usa a função de duas setas, Poller's transforma seu formato de dados
interno em uma tabela de setas de patch,
mantendo a estrutura colunar Ele ajuda no compartilhamento de
dados mais rápido, uso
eficiente da memória
e na melhor compatibilidade. Polars também fornece
a função de dois DigT, que converte um quadro de dados ou uma série em um dicionário Python Cada coluna no
quadro de dados se torna uma chave no dicionário com os valores
correspondentes, formando uma lista para essa chave. Também temos o método de dois dictos. Em polares, ele converte um quadro de dados em uma
lista de Muitas funções e
bibliotecas do Python funcionam bem com
listas de Por exemplo, se você precisar
converter seus dados
no formato JSON,
essa pode ser uma etapa
intermediária útil, pois lista de dicionários é
facilmente serializável Se, por algum motivo, você precisar uma representação
de string do quadro de dados, poderá usar o método de
representação de dois N. Isso é particularmente útil para depuração ou para cenários em
que você precisa gerar código que possa
reproduzir esse quadro de dados exatamente como está Também pode usar dois métodos Napi, que convertem o quadro de
dados polars Isso é útil quando
você precisa aproveitar as poderosas funções matemáticas
e de manipulação de
matrizes do
Napi matemáticas
e Como as matrizes Napi são
altamente eficientes para cálculos
numéricos,
esse método é benéfico
ao realizar
operações que são
melhor manipuladas pelo Nam Pi altamente eficientes para cálculos
numéricos, esse método é benéfico
ao realizar operações que são
melhor manipuladas O mesmo posso dizer sobre
o método dos dois Pandas. Ele converte o quadro de dados polars no
quadro de dados do Panda. Isso é útil quando
você deseja usar a funcionalidade específica do
Pandas ou ao trabalhar em um
ecossistema em que Pandas é a principal ferramenta de
manipulação de dados O método two torch converte quadro
de dados polar em
um tensor Pytorch Isso é ideal para preparar dados para
modelos de aprendizado profundo no PyTorch No entanto, como não tenho
essa biblioteca instalada, encontro um erro. Podemos instalar essa
biblioteca com esse comando, mas no momento não precisamos dela, então deixo como está.
7. Manipulação avançada de dados no Polars: agrupamento, agregação, classificação e transformação personalizada: Agora vamos continuar com
o método do grupo B. Se você já trabalhou
com Pandas antes, provavelmente
está familiarizado
com esse método Se não, aqui está uma explicação
rápida. O método do grupo B
em polares é usado para
agrupar um quadro de dados por
uma ou mais colunas No nosso caso, o agrupamento pela coluna
do ano significa que todas as linhas com o mesmo valor na coluna do ano
serão agrupadas Cada ano único
formará um grupo separado. No entanto, no nosso caso, temos apenas um ano de 2022. Em seguida, usamos a agregação. O método e os polares
são usados para realizar cálculos
agregados em grupos de dados em um quadro de dados Em seguida, especificamos a coluna, bit e aplicamos a função de
contagem. Isso significa que, para cada grupo, contamos o número de
ocorrências da coluna de bits Essencialmente, isso conta
o número de linhas em cada grupo, pois cada linha
representa um incidente. Em seguida, usamos a função Alias. Para renomear a coluna
resultante
da agregação para
contar Isso é feito para dar
à coluna agregada
um nome significativo Em teoria, podemos usar essa
função para resumir dados e entender a
frequência de incidentes por ano No entanto, como temos apenas
um ano em nosso conjunto de dados, vemos apenas a contagem
de incidentes de 2022 Agora, vamos considerar outro
exemplo quando eu agrupo por ano. Mas em vez de usar uma função
de agregação, eu uso o método L. O método OL retém todas as
linhas em cada grupo. A separação é
útil quando você precisa trabalhar com todos os
pontos de dados em cada grupo sem realizar
nenhuma agregação ou transformação que
reduza Em alguns casos, quando quiser obter uma visão geral rápida
de cada grupo, você pode usar o primeiro
método em vez de todos. Isso é útil quando
você deseja extrair pontos
de dados de
amostra de cada grupo ou reduzir o quadro de dados para uma linha por grupo para
análises ou relatórios adicionais. Não tenho o melhor
exemplo para isso, então vamos agrupar por tipo
primário. Isso deixa tudo mais claro. Aqui podemos ver a primeira
linha de cada grupo. No nosso caso, a coluna do tipo
primário. O último método funciona
quase da mesma forma , exceto que retorna somente a
última linha de cada grupo. Agora eu quero definir uma função personalizada para calcular
a porcentagem de prisão. Primeiro, obtenho o número total de casos calculando o
comprimento do quadro de dados Então eu obtenho o número de casos de prisão somando
a coluna de prisão Em seguida, calculo a porcentagem de
prisão
dividindo o número de prisões pelo
número total de casos Finalmente, eu devolvo o
quadro de dados com o resultado. Esse código agrupa os
dados por tipo primário e calcula a porcentagem de
prisão para cada tipo de crime A partir do resultado,
podemos ver quais tipos de crimes têm taxas de prisão maiores ou
menores. Agora que criamos essa função, é
hora de usá-la. Um método muito útil
para isso são os grupos nab. Esse método usa os dados
agrupados como entrada, aplica a
função personalizada a cada grupo e retorna
um novo quadro de dados com o resultado
dessa operação Nesse caso, agrupamos
o quadro de dados pela coluna de tipo primário e, em seguida,
aplicamos nossa
função personalizada de porcentagem de prisão a cada grupo. Essa função
processa cada grupo de forma independente e pode executar
qualquer lógica personalizada necessária. O resultado é um novo
quadro de dados em que cada linha contém o resultado da aplicação
da função de porcentagem de prisão a cada grupo. Há também uma função de aplicação, que aplica uma função personalizada
ou definida pelo usuário em um grupo por contexto, mas ela foi descontinuada
e renomeada Portanto, se você ver a função
apply em código
antigo, não se confunda. É apenas uma versão desatualizada. Você provavelmente está familiarizado
com a função head, que permite ver as primeiras
linhas de um quadro de dados. No entanto, vamos considerar
outra função útil, a cauda. Digamos que eu queira ver somente
as últimas linhas de cada grupo. Usar o método tail em
um grupo nos permite focar nas
entradas mais recentes ou nas últimas de cada categoria. Isso pode ser útil para examinar
os casos mais recentes
em nosso conjunto Nesse caso, gramas, mas em outros casos,
pode ser qualquer tipo de dado. Você também pode usar
a função de classificação depois de aplicar essas operações. Ele permite que você classifique as entradas extraídas
por uma coluna específica, por exemplo, área da comunidade para melhor legibilidade
ou análise posterior Então, o que fizemos aqui? Nós agrupamos por tipo primário. Selecionamos a última
linha para cada grupo e classificamos os dados
por área da comunidade A sequência de operações
ajuda a analisar entradas mais recentes e,
ao mesmo tempo, melhora a legibilidade
8. Operações avançadas de dados no Polars: write_csv, tabelas dinâmicas e estratégias de junção: Para o próximo exemplo,
preciso de dois quadros de dados. Unir quadros de dados é uma operação comum na manipulação de
dados em que linhas de dois ou
mais quadros de dados são combinadas com
base em colunas comuns Polars fornece vários
tipos de junções,
semelhantes às junções no estilo SQL Vamos imprimir os dois quadros de dados e começar com a junção interna. Eu pego meu primeiro quadro de dados
e uso a função de junção. Em seguida, especifico o
segundo quadro de dados que desejo unir
ao primeiro. Em seguida, defino a
coluna a ser unida. Isso pode ser um nome de coluna única ou uma lista de nomes de colunas. No meu caso, é nome. Por fim, especifico
o tipo de junção, que no nosso caso
é uma junção interna. Desculpe pelo erro de digitação. Isso
significa que somente as linhas com chaves correspondentes nos dois quadros de dados
aparecerão no resultado. Vemos que Bob e Charlie estão presentes
nos dois quadros de dados, então os vemos em nosso resultado. Agora vamos tentar uma junção à esquerda. Isso significa que todas as linhas
do quadro de dados esquerdo e somente as linhas correspondentes
do quadro de dados direito
estarão no resultado. E podemos ver que todos os nomes
e todas as informações
do quadro de dados esquerdo apareceram em nosso resultado e
do quadro de dados direito, no nosso caso, o
segundo quadro de dados. Podemos ver apenas dois nomes, Bob e Charlie, que estão
presentes nos dois quadros de dados. Para um desenho completo, todas as linhas dos dois
quadros de dados aparecerão no resultado sem valores
onde não haja correspondências. E aqui podemos ver os
nulos no resultado. Também temos junção cruzada. Ele retorna todas as
combinações possíveis de
linhas de ambos os quadros de dados,
um produto cartesiano Cada linha da esquerda é combinada com cada
linha da direita. E para mostrar todos os
tipos de junções, quero explicar que
você também é semi Ele retorna somente as linhas
do quadro de dados esquerdo que têm chaves
correspondentes no quadro de dados
direito. Você pode me perguntar
qual a diferença entre junção interna e semijunção Temos quase o mesmo. Tanto a junção interna quanto semijunção retornam linhas em há uma correspondência
entre duas tabelas, mas elas têm uma diferença fundamental junção interna retorna todas
as linhas correspondentes de ambas as tabelas, incluindo as colunas de ambas. Semijoin retorna
somente as linhas
da tabela esquerda que têm
correspondência na tabela direita, mas não inclui colunas
da tabela direita Portanto, embora possam retornar
o mesmo número de linhas, a junção interna inclui colunas
adicionais
da tabela direita, enquanto a semijunção mantém somente as colunas originais
da tabela esquerda E temos antídova. É um tipo de
operação de junção em as linhas do
quadro de dados esquerdo são incluídas no resultado somente se
não houver uma chave correspondente
no quadro de dados direito. Essencialmente, ele filtra todas as linhas do
conjunto de dados esquerdo que tenham uma correspondência correspondente
no conjunto de dados direito com base na chave ou
coluna especificada Se você notou, eu
costumo usar o Tap para evitar digitar
manualmente
as variáveis existentes repetidamente Pressione a tecla superior e o notebook
Dutra
sugerirá a variável para seleção em vez
da entrada manual Vamos continuar
com as tabelas dinâmicas. Para isso, vou
alterar um pouco meu quadro de dados. Se você já trabalhou
com Pandas antes, provavelmente
sabe o que é Caso contrário, as operações dinâmicas
permitem
remodelar seus dados
resumindo-os de maneiras diferentes,
com base em uma Aqui, mostrarei como
remodelar meu quadro de dados
criado recentemente Eu especifico os
valores a serem dinâmicos
e, no meu caso,
será a coluna de pontuação Em seguida, especifico que as linhas
da nova tabela dinâmica serão
indexadas pela Também usarei a coluna Cidade, que
servirá base para a nova
coluna da tabela dinâmica. Para a
função de agregação, usarei primeiro. Isso significa que, se
houver vários valores para uma combinação específica
de nome e cidade, somente o primeiro
valor será usado. O quadro de dados resultante
terá valores de nome exclusivos como as linhas do índice e valores exclusivos
da cidade nas colunas. Valores nulos na tabela dinâmica
indicam que
não havia combinações correspondentes
de nome e
cidade no
quadro de dados original para Apesar de
termos dois bobs, só
obtemos o primeiro com
uma pontuação de 90 Em seguida, alterarei a função de
agregação para soma. E agora obtemos a soma das
pontuações dos dois bobs, dois Charli's e assim por diante Eu adiciono uma linha abaixo nosso quadro de dados para mostrar
os resultados atualizados. E, claro, a soma é 160. Podemos ver que o primeiro
bob tem uma pontuação de 90. O segundo bob tem
uma pontuação de 70. O mesmo se aplica a Frank
e aos outros nomes. A função média mostra o valor médio quadrado para cada combinação de nome e cidade. A função max mostra
o valor máximo da pontuação. Também podemos calcular os valores
médios ou medianos da pontuação. Nesse caso, não
vemos diferença entre a mediana e a média porque nosso quadro de dados
não é o melhor exemplo, mas eles representam
aspectos diferentes da distribuição de dados A média representa
o valor médio do conjunto
de dados e é adequada para dados
distribuídos simetricamente sem A mediana, por outro lado, é o valor médio de um conjunto de quando ele é ordenado do
menor para o maior A mediana é mais adequada para dados distorcidos ou não
distribuídos normalmente Para o próximo exemplo, preciso de
dois quadros de dados diferentes. Vou copiar o primeiro
e fazer algumas alterações. Em extratores, podemos comparar dois quadros de dados para verificar
se eles são iguais Podemos verificar se os dois
quadros de dados correspondem exatamente. Se os dois quadros de dados
tiverem o mesmo esquema, que significa os mesmos
nomes de coluna e tipos de dados, bem
como os mesmos dados em cada
coluna correspondente na linha, a comparação retornará
bull e value true, que indica que
os dois quadros de dados são idênticos em termos de
esquema e Ou falso se houver
alguma diferença no esquema ou nos dados entre
esses dois quadros de dados No primeiro exemplo, comparo dois
quadros de dados diferentes e obtive false. Em seguida, comparo dois quadros de dados
idênticos, os mesmos quadros de dados,
e obtive
o resultado, o que faz sentido,
pois são exatamente iguais. Se eu desfizer as alterações que fiz
no segundo quadro de dados, ficaremos com dois quadros de dados
idênticos novamente, tanto em termos de
esquema quanto de dados,
e a função retornará verdadeira O uso da função equals
permite verificar
se dois quadros de dados
são completamente idênticos, que é útil para fins de
validação e teste de dados Você pode salvar um quadro de dados em um arquivo CSV usando o método CSV Por exemplo, se eu quiser salvar nosso quadro de dados em um
arquivo chamado CSV de dados, posso fazer isso com
um único comando Depois de executar o comando LS, podemos ver que o arquivo
foi criado com sucesso. Salvar o quadro de dados em
um arquivo CSV é muito útil quando você precisa
armazenar dados para uso posterior, facilitando o
compartilhamento ou o recarregamento Os arquivos CSV são amplamente suportados e podem ser abertos por
muitos programas de software
9. Entendendo a execução ávida e preguiçosa em Polars: comparação de velocidade com o Pandas para o Big DataFrame: Polars oferece dois modelos de
execução para operações
de data frame: modo
Iger e modo lento Entender a
diferença entre esses dois modelos é crucial
para otimizar o desempenho Bem, vamos começar
com o modo Iger. As operações em um quadro de dados
são executadas imediatamente. Os resultados são calculados e retornados assim que uma
operação é chamada Isso significa que
cada passo que você dá é executado imediatamente
e sequencialmente Esse modo é mais
fácil de depurar porque você pode ver o resultado de
cada operação imediatamente. modo Eager geralmente é preferido em
ambientes interativos como notebook
Jupra porque permite que você veja o resultado das
operações imediatamente É mais adequado para análise
interativa de dados e conjuntos de dados menores, onde é necessário feedback
imediato Vamos continuar com o Modo Preguiçoso. Em vez de executar
as operações imediatamente, polars primeiro cria e otimiza um plano de consulta Essa abordagem permite que os polares otimizem o plano de execução, reduzindo o número
de operações e a quantidade de
dados processados Polares fundidos preguiçosos se referem
a uma forma de realizar operações de dados em
que os cálculos são Em vez disso, as operações
são atrasadas e executadas
somente quando você solicita
explicitamente o resultado Essa abordagem permite que
os polares otimizem a sequência de operações antes de realmente executá-las, melhorando o desempenho,
especialmente com grandes conjuntos Modo Lento geralmente é
mais adequado para grandes conjuntos de dados ou fluxos de trabalho
que envolvem várias etapas A otimização
aplicada pode levar a melhorias
significativas no desempenho em relação à execução rápida Acho que a função
chega à Vans Kansas, somos bastante autoexplicativos Mas vou explicar brevemente A. A função read A
em polares é usada para ler dados de um arquivo A
em um quadro de dados polars Park é um formato de arquivo
de armazenamento em colunas, otimizado para uso com estruturas de
processamento de dados Ao contrário dos
formatos baseados em linhas, como CSV, Park armazena dados por
colunas em vez de linhas, o que o torna altamente eficiente tanto
para armazenamento quanto para processamento O formato colunar é
particularmente útil quando você precisa ler somente colunas
específicas de grandes conjuntos de dados, pois permite evitar carregamento de
dados desnecessários na memória Se você precisar apenas de algumas
colunas de um conjunto de dados, Park permite carregar somente os
dados relevantes na memória, melhorando a velocidade e
reduzindo o uso da memória Aplicativos de big data. O Park é uma ótima opção para aplicativos de
big data, especialmente quando você usa
estruturas que o suportam,
como Apache Park, dusk Agora vamos comparar o
desempenho da leitura de arquivos
CSV usando Pandas
versus Se você se lembra, temos um grande conjunto de dados com
mais de 100 milhões de linhas Então, eu vou usá-lo. Primeiro, eu importo Pandas e
uso a função de leitura de CSV. Para medir o tempo de execução, eu uso o
comando Time it magic no caderno Jupiter Esse comando nos permite
medir o tempo de execução e calcular
os resultados médios em várias execuções. Então, levará
algum tempo para carregar. Isso realmente leva muito tempo. Deixe-me lembrá-lo de
que o quadro de dados tem mais de 100 milhões de linhas. Portanto, executar operações
nele leva um tempo
considerável. Depois de executar o
código sete vezes,
obtemos um
tempo médio de execução de 32 segundos por loop. Agora vamos repetir os mesmos
passos que fizemos com os Pandas. Mas desta vez usando polares, usaremos o tempo novamente para ver quanto tempo leva
para carregar o quadro de dados A diferença no tempo de execução é imediatamente perceptível. A Polar carrega o quadro de dados
significativamente mais rápido. Eu atribuí a expressão
anterior
à variável TF para que
possamos continuar trabalhando
com o quadro de dados carregado Então, acabamos de ler mais de 100 milhões de linhas
usando Pandas e polares Se observarmos o quadro de dados, podemos ver que algumas das
colunas não têm sentido Para
facilitar o trabalho com nossos dados, vou renomeá-los. Primeiro, preparo uma lista de
novos nomes de colunas e depois uso a função renomear para
renomear as colunas
no quadro de dados polars Agora podemos ver que
renomeamos os nomes das colunas. Temos um conjunto de dados
estruturado adequadamente e continuarei agrupando o conjunto de dados pelas colunas de unidade
e nível Após o agrupamento, realizarei
uma operação de agregação na coluna numérica
calculando a
soma de Primeiro, seleciono a coluna chamada número
no quadro de dados. Em seguida, uso uma
função de agregação que soma todos os valores
nessa coluna Em vez de manter
o nome padrão, atribuo um
nome mais significativo à coluna de saída. Para isso, eu uso um alias. Para uma folga, estou
calculando a média. Para salário, estou calculando
a função máxima. Por fim, selecionarei as colunas necessárias
do quadro de dados agregado O método de seleção e
os polares são usados para escolher colunas
específicas e aplicar
transformação a elas. Ele cria um novo quadro de dados somente
com as colunas selecionadas, deixando o quadro de
dados original inalterado Desculpe pelo erro de digitação. Eu uso a função de impressão para exibir
o resultado junto com o título em um editor de código
comum. Isso é necessário
para ver a saída. No entanto, no caderno Gebr, você não precisa imprimir Você pode simplesmente digitar o nome da
variável, o resultado do polo, e ele
exibirá automaticamente o resultado de
forma interativa. E aqui estamos. Agora, vou usar o
comando time it para executar o
código várias vezes. No final, veremos quanto tempo é necessário para
realizar a operação. Vemos o código
sendo executado várias vezes. E no final, descobrimos
que foram necessárias três esquivas, 83 segundos por loop, ou posso dizer, por operação Vamos repetir o mesmo
processo com os pandas. Demora mais tempo
do que com polares. Analisamos o mesmo quadro
de dados e precisamos
renomear as colunas.
Então, vamos fazer isso. O comando é quase
o mesmo dos polares, exceto que definimos as colunas primeiro e depois passamos
os novos nomes das colunas Agora podemos prosseguir com o mesmo agrupamento e
agregação que fizemos acima Podemos ver aqui que o Pandas usa um dicionário dentro da função de
agregação para especificar os
nomes e operações das colunas Em polares, a agregação
foi aplicada às colunas
selecionando-as primeiro e depois usando funções como
soma média e caixa Em polars, você não pode usar
um dicionário diretamente dentro da função
de agregação da mesma forma que em Polars exige que você especifique cada operação de agregação
explicitamente para cada coluna, e essa é O Pandas fornece uma
sintaxe mais curta para agregação. Ambas as expressões nos
darão o mesmo resultado, mas a sintaxe é um pouco diferente entre
Pandas e Eu recomendo fortemente que você mesmo
experimente. Pause o vídeo e repita
esse código sozinho. Essa é a aparência da
mesa final. Agora vou usar o tempo
novamente para executar o
código várias vezes. E foi executado sete vezes. Depois de executá-lo, vemos que
demorou 7,34 segundos por loop. Podemos ver claramente
a diferença. Mas também precisamos
considerar os casos em que
realizamos essas operações
junto com a leitura dos dados. Vou reescrever o
código um pouco. Então, vamos ler o
arquivo CSV e renomear as colunas. Execute o grupo por
operação, agregação
e, em seguida, selecione colunas
específicas em uma cadeia usando a sintaxe de encadeamento do
método polars Isso leva mais tempo. E
agora demorou 11,8 segundos. Aqui, eu reescrevi o código para os Pandas
fazerem a mesma coisa Eu combinei todas as etapas em uma única linha, assim como
fizemos no código polars acima Mesmo sem tempo, eu o executo e meu sistema fica
sem memória. Oh, sim, meu sistema está morto. Mas podemos gerenciar isso
mesmo com Pandas. Se começarmos a ler o arquivo
CSV em partes,
deixe-me mostrar como podemos
lidar com A leitura do arquivo em partes
ajuda a gerenciar o uso da memória. Primeiro, defino o número
de linhas a serem lidas na memória ao mesmo tempo,
definindo o tamanho do bloco Em seguida, inicializo
um quadro de dados vazio que armazenará os resultados finais da agregação
de cada bloco Eu li o arquivo CSV em
partes usando o loop de quatro,
renomeio as colunas e
realizo o mesmo agrupamento
e realizo o mesmo agrupamento No final, posso coatenar os resultados agregados de
cada bloco até o quadro de dados final Além disso, usei o índice Ignore. Verdadeiro. Isso significa que ao realizar operações
como concatenação, os valores do índice original
serão ignorados e o novo índice inteiro padrão será atribuído ao resultado Isso ajuda a evitar valores de índice duplicados ou
não sequenciais ao modificar quadros Aqui não podemos quebrar
a linha assim. Então eu mudei para
melhor legibilidade. Demora algum tempo, mas
finalmente obtemos o resultado. Para evitar a falta de memória, podemos usar o MMIT, um comando mágico do pacote de perfil de memória Ele mede e imprime o uso de memória da execução
atual do código Isso ajuda a monitorar o
uso da memória para cada bloco. Nesta versão, o MMIT está dentro do loop for
antes da operação prnt Ele será executado em cada
iteração do loop. Isso é útil para analisar e otimizar o trabalho
com arquivos grandes, mas pode
retardar a execução do código devido a medidas adicionais Você pode instalá-lo usando o PIP. Obviamente, você deve usar esse comando para
habilitá-lo em um ambiente de
notebook Jupiter Você usa esse comando somente uma vez, não antes de cada uso do MMD. Depois disso, você pode usar o MMIT para verificar o
pico de uso da memória Aqui usamos esse comando para o consumo
total de memória do resultado
do Pandas Depois de todos os pedaços,
fomos processados. Portanto, se o objetivo é verificar
o uso final da memória, a segunda variante é melhor. Se o objetivo é monitorar o consumo de
memória ao longo do tempo, a primeira variante é
mais informativa No entanto, podemos evitar esse problema completamente usando polares
em vez de Pandas Vamos voltar para a biblioteca
polars. No exemplo anterior,
usamos a leitura de CSV a partir de polares. Essa função lê o arquivo CSV inteiro na
memória imediatamente, carregando todos os dados
em um quadro de dados Assim, podemos realizar
operações diretamente nele. No entanto, se o arquivo
CSV for grande, essa abordagem pode
consumir muita memória, assim como vimos com o Pandas Mas, como mencionei anteriormente, polars também tem um modo lento Se verificarmos o tipo
de resultado dos polares agora, veremos que é um quadro lento em vez de um quadro
de dados normal Com avaliação lenta
ou modo lento, usamos scNCSV em vez de readCSV O ScnCsv não lê os dados
na memória imediatamente. Em vez disso, ele cria um quadro
lento que registra as transformações
e só
as executa quando Isso permite a otimização da consulta e uma execução mais eficiente. Copiei o código anterior e simplesmente substituí o ReadCSV pelo
ScanCSV . Se verificarmos o
tipo de resultado dos polares agora, obteremos um Como os quadros preguiçosos usam execução
adiada, podemos realmente visualizar o plano de execução usando
o método show graph Esse método gera uma representação gráfica do plano
de consulta, ajudando-nos a entender e depurar o pipeline de
processamento de dados Ele fornece informações
sobre as etapas e otimizações envolvidas
na execução da consulta Para usar Mostrar gráfico, você precisa
ter o graph com instalado
em seu sistema. No macOS, você pode
instalá-lo usando gráfico de instalação do
Brew
no Windows ou Linux. Você pode verificar a documentação
oficial para obter o comando
de instalação apropriado. Aqui você pode escolher o comando para seu sistema
operacional. Observando o plano de consulta, podemos ver que apenas cinco das oito colunas
estão sendo selecionadas. Isso significa que
os polars carregam apenas as colunas necessárias em vez de ler todo o
conjunto de dados na memória Em seguida, chamo o HAD
no Polar'sRULT
e, em vez de obter
os dados reais, vemos Isso acontece porque os quadros preguiçosos não são executados imediatamente Eles apenas constroem o plano de
execução. Para realmente executar a consulta, precisamos chamar o collect. O método collect
aciona a execução, processa todas as
operações e retorna o quadro de dados normal
em vez de um quadro lento Como nosso conjunto de dados contém
mais de 1 milhão de linhas, execução leva algum tempo No final, obtemos o resultado. Se verificarmos o tipo
do nosso quadro de dados agora, veremos que é um quadro de dados de
pulso. Não é mais uma moldura a laser. Agora eu copio o código
anterior usando o Scan CSV e o
executo com collect Em seguida, meça o
tempo de execução com o tempo. O código é executado várias vezes
e, no final,
obtemos o resultado. Vamos comparar isso com
a execução anterior. Usando o CSV lido, a execução
levou dez pontos e 7 segundos. Não há grande diferença,
mas veja isso. Se habilitarmos a execução de streaming definindo streaming
equals true,
no método collect, processaremos os dados de forma incremental em vez de
carregar tudo
na memória de carregar tudo
na memória A execução de streaming é excelente para grandes conjuntos de dados porque reduz o uso de memória ao processar partes em vez
de conjuntos de dados inteiros,
e pode potencialmente aproveitar o processamento
paralelo, em que partes
diferentes são
processadas simultaneamente em um curso de CPO para grandes conjuntos de dados porque
reduz o uso de memória ao
processar partes em vez
de conjuntos de dados inteiros,
e pode potencialmente aproveitar o processamento
paralelo, em que partes
diferentes são
processadas simultaneamente em um curso de CPO separado. execução de streaming geralmente
melhora o desempenho de grandes conjuntos de dados, reduzindo o uso de
memória e permitindo o processamento
paralelo No entanto, para conjuntos de dados pequenos, a diferença pode
ser insignificante Com os polares, os usuários
não precisam
dividir manualmente seus dados em menores, como
fizemos com o Pandas A Polars lida com isso automaticamente. Agora, podemos ver uma
diferença significativa no desempenho.
10. Visualização de dados em polares. Vantagens, limitações e uma análise comparativa: Quando se trata de
visualização de dados e polares, geralmente é
recomendável
converter seu quadro de dados em
um quadro de dados Pandas Como mencionei anteriormente, podemos usar o método dos dois
Pandas para isso Usar o Pandas para plotagem
fornece mais flexibilidade. Mas você também pode
usar o Matplotlip ou Seaborne, ambas bibliotecas amplamente
usadas para o
Seaborne, ambas bibliotecas amplamente
usadas para visualização de dados. Você pode encontrar vídeos sobre essas bibliotecas no meu
perfil. Você pode conferir. salto de plotagem MD fornece
mais flexibilidade e permite um
controle preciso sobre os Já o Seaborn
facilita a criação gráficos estatísticos
complexos com
uma sintaxe mais simples No entanto, essas não são
as únicas opções. Você também pode usar o gráfico HV, uma
biblioteca de plotagem de alto nível que funciona nativamente com o quadro de dados da
Polar Ele oferece uma interface poderosa
e flexível para criar
visualizações interativas. Se você quiser saber
mais sobre o HVPlot, confira
a documentação Obviamente, você precisará
instalá-lo primeiro
antes de usá-lo. Em polares, você também pode usar o
método de plotagem embutida para criar uma visualização
básica
sem converter em visualização
básica
sem converter pandas ou usar
o O método de plotagem compreende
a estrutura dos quadros de dados
polares e pode gerar gráficos usando o
back-end básico do gráfico MD Você pode especificar
o tipo de gráficos,
como Scutter, linha Você também define
nomes de colunas para os eixos X e Y junto com parâmetros
adicionais de plotagem,
como o título. Esses tipos de gráficos são adequados para criar uma visualização
simples No entanto, lembre-se que a funcionalidade de
plotagem integrada em
polares é limitada em comparação com bibliotecas como HV plot
ou Mod plot Leap, que Para obter vantagens adicionais, talvez seja necessário usar
outras bibliotecas. Então, abordamos muita coisa hoje. Embora os polares
ofereçam muitas vantagens
, eles também têm algumas limitações e desvantagens. Vamos
ver o que é. Primeiro, a polars é uma biblioteca
relativamente nova
em comparação com a Pandas e pode não ter um suporte tão amplo da comunidade ou tantas
extensões de terceiros disponíveis Pandas tem um ecossistema maior e mais
estabelecido, com muitas
bibliotecas e ferramentas de terceiros projetadas para funcionar perfeitamente
com os quadros de dados do Pandas Sendo uma biblioteca mais recente, as polars podem não ter
o mesmo nível de compatibilidade com as bibliotecas e ferramentas de
análise de dados existentes bibliotecas e ferramentas de
análise Você deve considerar isso antes de mudar da
biblioteca Pandas para polars Outra limitação
é que os polares não têm o mesmo nível de flexibilidade de indexação que os Pandas Embora ofereça suporte à indexação baseada em
linhas, ele não possui os recursos robustos de indexação
hierárquica e
multinível que o Pandas Por exemplo, em polares, você só pode definir uma única
coluna como índice de linha,
enquanto o Pandas permite estruturas de indexação
mais complexas Se você já usou a indexação de vários níveis em
seu projeto antes, isso pode ser algo a
considerar ao mudar para Além disso, os
recursos de visualização em polares são atualmente
limitados em comparação com No Pandas, é relativamente
simples
visualizar dados diretamente do quadro de dados usando métodos
de plotagem
integrados ou por meio da integração perfeita por meio da integração perfeita com bibliotecas de visualização externas. Portanto, se a visualização é uma parte
crucial do seu
fluxo de trabalho e você não precisa dos benefícios de
desempenho dos polares para seus casos de uso
específicos, Pandas pode ser a opção mais
conveniente Mudar de
Pandas para polars pode potencialmente levar a falhas
inesperadas de comportamento ou funcionalidade devido
às diferenças
nos conjuntos de recursos e capacidades
das duas Como mencionei anteriormente, o
Pandas já existe há mais tempo e tem um conjunto de recursos mais maduro e
abrangente Embora o polars forneça muitas funções essenciais de manipulação
e análise de dados, ele pode não ter alguns dos recursos
mais avançados ou boas funcionalidades
disponíveis no Então, pessoal, parabéns
por concluir esse curso. Você fez um bom trabalho.
Continue aprendendo, continue programando. Nos vemos nos
próximos cursos. Tchau.