Hub documentation
Transformando seu conjunto de dados
Transformando seu conjunto de dados
Nesta pΓ‘gina, guiaremos vocΓͺ por algumas das operaΓ§Γ΅es mais comuns usadas ao realizar anΓ‘lise de dados. Isso Γ© apenas um pequeno subconjunto do que Γ© possΓvel no Polars. Para mais informaΓ§Γ΅es, visite a DocumentaΓ§Γ£o.
Para o exemplo, usaremos o conjunto de dados Common Crawl statistics. Essas estatΓsticas incluem: nΓΊmero de pΓ‘ginas, distribuiΓ§Γ£o de domΓnios de nΓvel superior, sobreposiΓ§Γ΅es de rastreamento, etc. Para informaΓ§Γ΅es e grΓ‘ficos mais detalhados, visite a pΓ‘gina oficial de estatΓsticas.
Leitura
import polars as pl
df = pl.read_csv(
"hf://datasets/commoncrawl/statistics/tlds.csv",
try_parse_dates=True,
)
df.head(3)βββββββ¬βββββββββ¬ββββββββββββββββββββ¬βββββββββββββ¬ββββ¬ββββββββ¬βββββββ¬ββββββββ¬ββββββββββ
β β suffix β crawl β date β β¦ β pages β urls β hosts β domains β
β --- β --- β --- β --- β β --- β --- β --- β --- β
β i64 β str β str β date β β i64 β i64 β f64 β f64 β
βββββββͺβββββββββͺββββββββββββββββββββͺβββββββββββββͺββββͺββββββββͺβββββββͺββββββββͺββββββββββ‘
β 0 β a.se β CC-MAIN-2008-2009 β 2009-01-12 β β¦ β 18 β 18 β 1.0 β 1.0 β
β 1 β a.se β CC-MAIN-2009-2010 β 2010-09-25 β β¦ β 3462 β 3259 β 166.0 β 151.0 β
β 2 β a.se β CC-MAIN-2012 β 2012-11-02 β β¦ β 6957 β 6794 β 172.0 β 150.0 β
βββββββ΄βββββββββ΄ββββββββββββββββββββ΄βββββββββββββ΄ββββ΄ββββββββ΄βββββββ΄ββββββββ΄ββββββββββSelecionando colunas
O conjunto de dados contΓ©m algumas colunas que nΓ£o precisamos. Para removΓͺ-las, usaremos o mΓ©todo select:
df = df.select("suffix", "date", "tld", "pages", "domains")
df.head(3)ββββββββββ¬ββββββββββββββββββββ¬βββββββββββββ¬ββββββ¬ββββββββ¬ββββββββββ
β suffix β crawl β date β tld β pages β domains β
β --- β --- β --- β --- β --- β --- β
β str β str β date β str β i64 β f64 β
ββββββββββͺββββββββββββββββββββͺβββββββββββββͺββββββͺββββββββͺββββββββββ‘
β a.se β CC-MAIN-2008-2009 β 2009-01-12 β se β 18 β 1.0 β
β a.se β CC-MAIN-2009-2010 β 2010-09-25 β se β 3462 β 151.0 β
β a.se β CC-MAIN-2012 β 2012-11-02 β se β 6957 β 150.0 β
ββββββββββ΄ββββββββββββββββββββ΄βββββββββββββ΄ββββββ΄ββββββββ΄ββββββββββFiltragem
Podemos filtrar o conjunto de dados usando o mΓ©todo filter. Este mΓ©todo aceita expressΓ΅es complexas, mas vamos comeΓ§ar de forma simples, filtrando com base na data de coleta:
import datetime
df = df.filter(pl.col("date") >= datetime.date(2020, 1, 1))VocΓͺ pode combinar mΓΊltiplos predicados com os operadores & ou |:
df = df.filter(
(pl.col("date") >= datetime.date(2020, 1, 1)) |
pl.col("crawl").str.contains("CC")
)Transformando
Para adicionar novas colunas ao dataset, use with_columns. No exemplo abaixo, calculamos o nΓΊmero total de pΓ‘ginas por domΓnio e adicionamos uma nova coluna pages_per_domain usando o mΓ©todo alias. A declaraΓ§Γ£o inteira dentro de with_columns Γ© chamada de expressΓ£o. Leia mais sobre expressΓ΅es e como usΓ‘-las no guia do usuΓ‘rio do Polars
df = df.with_columns(
(pl.col("pages") / pl.col("domains")).alias("pages_per_domain")
)
df.sample(3)ββββββββββ¬ββββββββββββββββββ¬βββββββββββββ¬ββββββ¬ββββββββ¬ββββββββββ¬βββββββββββββββββββ
β suffix β crawl β date β tld β pages β domains β pages_per_domain β
β --- β --- β --- β --- β --- β --- β --- β
β str β str β date β str β i64 β f64 β f64 β
ββββββββββͺββββββββββββββββββͺβββββββββββββͺββββββͺββββββββͺββββββββββͺβββββββββββββββββββ‘
β net.bt β CC-MAIN-2014-41 β 2014-10-06 β bt β 4 β 1.0 β 4.0 β
β org.mk β CC-MAIN-2016-44 β 2016-10-31 β mk β 1445 β 430.0 β 3.360465 β
β com.lc β CC-MAIN-2016-44 β 2016-10-31 β lc β 1 β 1.0 β 1.0 β
ββββββββββ΄ββββββββββββββββββ΄βββββββββββββ΄ββββββ΄ββββββββ΄ββββββββββ΄βββββββββββββββββββAgregaΓ§Γ£o & OrdenaΓ§Γ£o
Para agregar dados, vocΓͺ pode usar os mΓ©todos group_by, agg e sort. No contexto de agregaΓ§Γ£o, Γ© possΓvel combinar expressΓ΅es para criar declaraΓ§Γ΅es poderosas que ainda sΓ£o fΓ‘ceis de ler.
Primeiro, agregamos todos os dados ao domΓnio de nΓvel superior tld por data de raspagem:
df = df.group_by("tld", "date").agg(
pl.col("pages").sum(),
pl.col("domains").sum(),
)Agora podemos calcular vΓ‘rias estatΓsticas por domΓnio de nΓvel superior:
- NΓΊmero de datas de raspagem ΓΊnicas
- NΓΊmero mΓ©dio de domΓnios no perΓodo raspado
- Taxa mΓ©dia de crescimento em termos de nΓΊmero de pΓ‘ginas
df = df.group_by("tld").agg(
pl.col("date").unique().count().alias("number_of_scrapes"),
pl.col("domains").mean().alias("avg_number_of_domains"),
pl.col("pages").sort_by("date").pct_change().mean().alias("avg_page_growth_rate"),
)
df = df.sort("avg_number_of_domains", descending=True)
df.head(10)βββββββ¬ββββββββββββββββββββ¬ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β tld β number_of_scrapes β avg_number_of_domains β avg_percent_change_in_number_oβ¦ β
β --- β --- β --- β --- β
β str β u32 β f64 β f64 β
βββββββͺββββββββββββββββββββͺββββββββββββββββββββββββͺββββββββββββββββββββββββββββββββββ‘
β com β 101 β 1.9571e7 β 0.022182 β
β de β 101 β 1.8633e6 β 0.5232 β
β org β 101 β 1.5049e6 β 0.019604 β
β net β 101 β 1.5020e6 β 0.021002 β
β cn β 101 β 1.1101e6 β 0.281726 β
β ru β 101 β 1.0561e6 β 0.416303 β
β uk β 101 β 827453.732673 β 0.065299 β
β nl β 101 β 710492.623762 β 1.040096 β
β fr β 101 β 615471.594059 β 0.419181 β
β jp β 101 β 615391.455446 β 0.246162 β
βββββββ΄ββββββββββββββββββββ΄ββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ