Filter bingkai data yang dikelompokkan di DataFrames.jl

 – Beragampengetahuan
4 mins read

Filter bingkai data yang dikelompokkan di DataFrames.jl – Beragampengetahuan

Oleh: Blog Bogumił Kamiński

Repost dari:

Di DataFrames.jl, bingkai data dapat dikelompokkan berdasarkan kolom.
Dengan cara ini tampilannya dibuat. Jenis tampilan ini
Menjadi GroupedDataFrame dan memungkinkan kerja kelompok
beroperasi pada data yang disimpan dalam bingkai data asli.

Jika Anda menggunakan SQL maka Anda dapat memikirkannya GroupedDataFrame
sebagai objek yang diperoleh dengan menggunakan GROUP BY meminta
tetapi tidak melakukan langkah agregat. Ini sering
berguna setelah mengelompokkan data yang mungkin ingin Anda lakukan
beberapa operasi agregat yang berbeda di atasnya tanpa
harus mengelompokkannya setiap saat.

Pada postingan kali ini saya ingin membahas tentang filtering
GroupedDataFrame bekerja di DataFrames.jl.
Secara umum, ada dua cara Anda mungkin ingin memfilternya:

  • dengan menghilangkan seluruh kelompok;
  • dengan menjatuhkan baris dalam grup.

Saya akan membahas keduanya hari ini.

Posting ditulis di bawah Julia 1.9.0 dan DataFrames.jl 1.5.0.

Mulailah dengan membuat template GroupedDataFrame:

julia> using DataFrames

julia> df = DataFrame(x = repeat(1:4, 2), id=1:8)
8×2 DataFrame
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     1      1
   2 │     2      2
   3 │     3      3
   4 │     4      4
   5 │     1      5
   6 │     2      6
   7 │     3      7
   8 │     4      8

julia> gdf = groupby(df, :x, sort=true);

julia> show(gdf, allgroups=true)
GroupedDataFrame with 4 groups based on key: x
Group 1 (2 rows): x = 1
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     1      1
   2 │     1      5
Group 2 (2 rows): x = 2
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     2      2
   2 │     2      6
Group 3 (2 rows): x = 3
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     3      3
   2 │     3      7
Group 4 (2 rows): x = 4
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     4      4
   2 │     4      8

Jenis aktivitas pertama adalah saat Anda ingin menghapus seluruh grup
dari kerangka data berkerumun Anda.

Pertama, misalkan Anda ingin menjatuhkan
kelompok pertama dan terakhir dari gdf. Anda dapat mencapai ini dengan mengindeks:

julia> gdf[[2, 3]]
GroupedDataFrame with 2 groups based on key: x
First Group (2 rows): x = 2
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     2      2
   2 │     2      6
⋮
Last Group (2 rows): x = 3
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     3      3
   2 │     3      7

julia> gdf[Not(begin, end)]
GroupedDataFrame with 2 groups based on key: x
First Group (2 rows): x = 2
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     2      2
   2 │     2      6
⋮
Last Group (2 rows): x = 3
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     3      3
   2 │     3      7

Sekarang misalkan Anda ingin menghapus grup di mana nilai grup
Mengubah :x adalah bilangan genap. Anda masih dapat menggunakan pengindeksan seperti ini:

julia> gdf[isodd.(getproperty.(keys(gdf), :x))]
GroupedDataFrame with 2 groups based on key: x
First Group (2 rows): x = 1
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     1      1
   2 │     1      5
⋮
Last Group (2 rows): x = 3
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     3      3
   2 │     3      7

Namun, pendekatan yang lebih umum digunakan filter fungsi:

julia> filter(sdf -> isodd(first(sdf.x)), gdf)
GroupedDataFrame with 2 groups based on key: x
First Group (2 rows): x = 1
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     1      1
   2 │     1      5
⋮
Last Group (2 rows): x = 3
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     3      3
   2 │     3      7

Jika Anda ingin memisahkan hasilnya, Anda dapat melewatinya ungroup=true DI DALAM filter:

julia> filter(sdf -> isodd(first(sdf.x)), gdf, ungroup=true)
4×2 DataFrame
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     1      1
   2 │     1      5
   3 │     3      3
   4 │     3      7

Sekarang setelah Anda mengetahui cara menghapus seluruh grup, Anda mungkin bertanya-tanya bagaimana cara menghapus setiap baris
dalam kelompok. Asumsikan bahwa kita ingin menghapus dari setiap grup semua baris kecuali
baris dengan nilai terkecil adalah :id dalam kelompok. Anda dapat mencapai ini menggunakan
subset fungsi:

julia> subset(gdf, :id => x -> x .== minimum(x))
4×2 DataFrame
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     1      1
   2 │     2      2
   3 │     3      3
   4 │     4      4

Perhatikan bahwa secara default subset mengelompokkan data. Jika Anda ingin mengelompokkannya
mengatasi ungroup=false:

julia> show(subset(gdf, :id => x -> x .== minimum(x), ungroup=false),
            allgroups=true)
GroupedDataFrame with 4 groups based on key: x
Group 1 (1 row): x = 1
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     1      1
Group 2 (1 row): x = 2
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     2      2
Group 3 (1 row): x = 3
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     3      3
Group 4 (1 row): x = 4
 Row │ x      id
     │ Int64  Int64
─────┼──────────────
   1 │     4      4

Saya harap Anda menemukan contoh menggunakan pengindeksan, filterDan subset
berguna dan mereka telah meningkatkan pemahaman Anda tentang opsi pemfilteran baris
tersedia di DataFrames.jl.

Terutama ingat itu filter Dan subset ada perbedaan
nilai default dari ungoup argumen kata kunci. Perbedaan ini memiliki
dibuat untuk mencerminkan fakta bahwa ketika melakukan filter biasanya kita tidak
ingin memisahkan data, sambil melakukan subset biasanya kita mau
untuk menjatuhkan grup.

Software Terbaru Saat Ini



Aplikasi yang sedang trend saat ini

object oriented programming, programming language, programming adalah, web programming, belajar programming, tournament software, software, software adalah, contoh software, apa itu software, pengertian software, aplikasi, aplikasi penghasil uang, aplikasi bokep, aplikasi video, programming

#Filter #bingkai #data #yang #dikelompokkan #DataFrames.jl

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *