Hub documentation
Mentransformasi dataset Anda
Mentransformasi dataset Anda
Pada halaman ini, kami akan memandu Anda melalui beberapa operasi paling umum yang digunakan saat melakukan analisis data. Ini hanyalah sebagian kecil dari apa yang mungkin dilakukan di Polars. Untuk informasi lebih lanjut, silakan kunjungi Dokumentasi.
Untuk contoh ini, kami akan menggunakan dataset statistik Common Crawl. Statistik ini mencakup: jumlah halaman, distribusi domain tingkat atas, tumpang tindih crawl, dan sebagainya. Untuk informasi dan grafik yang lebih detail, silakan kunjungi halaman statistik resmi mereka.
Membaca
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 β
βββββββ΄βββββββββ΄ββββββββββββββββββββ΄βββββββββββββ΄ββββ΄ββββββββ΄βββββββ΄ββββββββ΄ββββββββββMemilih kolom
Dataset ini berisi beberapa kolom yang tidak kami butuhkan. Untuk menghapusnya, kami akan menggunakan metode 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 β
ββββββββββ΄ββββββββββββββββββββ΄βββββββββββββ΄ββββββ΄ββββββββ΄ββββββββββPenyaringan
Kita dapat memfilter dataset menggunakan metode filter. Metode ini menerima ekspresi yang kompleks, tetapi mari kita mulai dengan sederhana dengan memfilter berdasarkan tanggal pengunduhan:
import datetime
df = df.filter(pl.col("date") >= datetime.date(2020, 1, 1))Anda dapat menggabungkan beberapa predikat dengan operator & atau |:
df = df.filter(
(pl.col("date") >= datetime.date(2020, 1, 1)) |
pl.col("crawl").str.contains("CC")
)Transformasi
Untuk menambahkan kolom baru ke dataset, gunakan with_columns. Pada contoh di bawah, kami menghitung total jumlah halaman per domain dan menambahkan kolom baru pages_per_domain menggunakan metode alias. Seluruh pernyataan di dalam with_columns disebut ekspresi. Baca lebih lanjut tentang ekspresi dan cara menggunakannya di panduan pengguna 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 β
ββββββββββ΄ββββββββββββββββββ΄βββββββββββββ΄ββββββ΄ββββββββ΄ββββββββββ΄βββββββββββββββββββAgregasi & Pengurutan
Untuk mengagregasi data, Anda dapat menggunakan metode group_by, agg, dan sort. Dalam konteks agregasi, Anda dapat menggabungkan ekspresi untuk membuat pernyataan yang kuat namun tetap mudah dibaca.
Pertama, kami mengagregasi semua data ke domain tingkat atas tld per tanggal pengikisan:
df = df.group_by("tld", "date").agg(
pl.col("pages").sum(),
pl.col("domains").sum(),
)Sekarang kita dapat menghitung beberapa statistik per domain tingkat atas:
- Jumlah tanggal scraping unik
- Rata-rata jumlah domain dalam periode pengikisan
- Laju pertumbuhan rata-rata dalam hal jumlah halaman
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 β
βββββββ΄ββββββββββββββββββββ΄ββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ