📜  在 Julia 中对数据框的内容进行排序

📅  最后修改于: 2022-05-13 01:54:19.417000             🧑  作者: Mango

在 Julia 中对数据框的内容进行排序

排序是一种按排序顺序存储数据的技术。可以使用排序算法或排序函数来执行排序。在特定数据帧中进行排序,然后提取其值并应用排序函数将轻松对特定数据帧的内容进行排序。 Julia 提供了各种可用于对 DataFrame 进行排序的方法。

请记住在以下代码的帮助下启动 ie DataFrames 之前添加以下包:

using Pkg
Pkg.add("DataFrames")

排序方法

Julia 提供了一些对 DataFrame 数据进行排序的方法:

  • sort()函数:此函数返回排序后的数组或数组的排序副本
  • sort()函数传递算法:此函数在应用算法的帮助下返回排序数组
  • sortperm()函数:该函数返回一个索引列表,可以在集合上使用这些索引来生成排序集合。
  • partialsortperm()函数:此函数将算法部分排序到特定范围或排列。
  • rev=True 的 sort()函数:此函数将数据帧的内容按降序排序。
  • sort!():这个函数传递维度,这个函数可以对DataFrames的多维数组进行排序。
  • partialsortperm():此函数返回向量的部分排列 DataFrame 的列

方法一:sort()函数的使用

Julia 中的sort()函数是最基本的排序方法,可用于对数据帧的数据进行排序。

方法:

  • 首先,您可以创建数据框
  • sort()函数具有向量和列需要排序的顺序等参数。
Julia
# Creating a dataframe
df1 = DataFrame(b = [:Hi, :Med, :Hi, :Low, :Hi],
               x = ["A", "E", "I", "O","A"],
               y = [6, 3, 7, 2, 1],
               z = [2, 1, 1, 2, 2])
 
# Method1
sort(df1,[:z,:y]) # sorted z then y


Julia
# Method2 Algorithm(Quicksort)
# Sorting a particular column and storing it in s
s = sort(df1.y; alg = QuickSort)
 
# Now giving the value of s to the dataframe's y header
df1.y = s
df1 # printing the sorted y


Julia
# Method3 Algorithm(PartialQuickSort)
# If we want sort a column upto a certain number
B = 3
t = sort(df1.z; alg = PartialQuickSort(B))
 
# passing the t variable in the dataframe
df1.z = t
df1


Julia
# Method4
r = df1.y
 
# returned indexes of the elements
k = sortperm(r)
 
# traversing through indices
for i in k
    println(r[i]) 
end


Julia
# Created new dataframe as df2
df2 = DataFrame(x = [11,12, 13, 10, 23],
                y = [6, 3, 7, 2, 1],
                z = [2, 1, 1, 2, 2])
# Method5
s2 = sort(df2.x; alg = InsertionSort)
 
# now update the df2.x
df2.x = s2
df2


Julia
# Method6
a = df2.y
a = a[partialsortperm(a, 1:5)]
a


Julia
# Method7
s2 = sort(df2, rev=true)
df2 = s2 #updating the whole dataframe
df2


Julia
# Method8
B = [4 3; 1 2]
sort!(B, dims = 1); B # sorting through row
sort!(B, dims = 2); B # sorting through column



方法2:使用Quicksort算法进行排序

Julia 允许将算法类型传递给sort()函数以对列进行排序。 sort(dataframe.columnheader; alg=QuickSort)函数将列名和算法类型作为参数。

方法:

  • 在这里, sort()函数应用于特定列。
  • 它在排序函数中作为参数传递
  • 然后,您要对特定列进行排序的算法也作为参数传递
  • 将此函数的返回值存储在单独的变量中
  • 然后在特定列中更新

朱莉娅

# Method2 Algorithm(Quicksort)
# Sorting a particular column and storing it in s
s = sort(df1.y; alg = QuickSort)
 
# Now giving the value of s to the dataframe's y header
df1.y = s
df1 # printing the sorted y


方法 3:使用 Partial QuickSort 算法进行排序

sort(dataframe.columnheader; alg=PartialQuickSort(range))函数与 PartialQuickSort 算法一起传递,以将列排序到算法中传递的某个限制。

方法:

  • 在这里, sort()函数应用于特定列。
  • 它在排序函数中作为参数传递
  • 然后,您要对特定列进行排序的算法(PartialQuickSort)也作为参数传递
  • 将此函数的返回值存储在单独的变量中
  • 然后在特定列中更新

朱莉娅

# Method3 Algorithm(PartialQuickSort)
# If we want sort a column upto a certain number
B = 3
t = sort(df1.z; alg = PartialQuickSort(B))
 
# passing the t variable in the dataframe
df1.z = t
df1


方法四:使用 sortperm()函数

sortperm()函数与列名一起传递,以对列进行排序并返回已排序列的索引。

方法:

  • 首先将要在其中应用此排序的特定列存储在单独的变量中
  • 应用sortperm()函数并将变量作为参数传递,这将返回特定列的排序索引并将返回的索引存储在单独的变量中
  • 然后在存储索引的变量中使用for循环遍历
  • 使用 for 循环打印并在存储特定列的变量中传递索引。

朱莉娅

# Method4
r = df1.y
 
# returned indexes of the elements
k = sortperm(r)
 
# traversing through indices
for i in k
    println(r[i]) 
end

方法五:使用插入排序算法进行排序

sort(dataframe.column;alg=InsertionSort)函数与 InsertionSort 算法一起传递,以将列排序到算法中传递的特定限制。

方法:

  • 创建一个新的数据框并应用 sort()函数
  • 这次使用的算法是插入排序
  • 然后,您要对特定列进行排序的算法(InsertionSort)也作为参数传递
  • 将此函数的返回值存储在单独的变量中
  • 然后在特定列中更新

朱莉娅

# Created new dataframe as df2
df2 = DataFrame(x = [11,12, 13, 10, 23],
                y = [6, 3, 7, 2, 1],
                z = [2, 1, 1, 2, 2])
# Method5
s2 = sort(df2.x; alg = InsertionSort)
 
# now update the df2.x
df2.x = s2
df2


方法 6:使用 partialsortperm()函数

partialsortperm(dataframe.column, range)函数是sortperm()函数的高级形式 这将返回范围内的值的索引。这对列进行部分排序。

方法:

  • 将需要排序的特定列存储在另一个变量中
  • 应用partialsortperm()函数传递向量和需要排序的范围
  • 最后,我们可以通过将结果传递到特定 DataFrame 的列来进行更新
  • 现在打印数据框将简单地打印更新值

朱莉娅

# Method6
a = df2.y
a = a[partialsortperm(a, 1:5)]
a

方法七:降序排序

sort(dataframe,rev=True)函数与 dataframe 和 rev 变量一起传递以对列进行排序。此函数基本上反转或给出传递的列的降序。

方法:

  • 使用sort()函数按降序对数据框的特定列进行排序
  • 首先将特定列存储在变量中
  • 并应用sort()函数并将特定列的反向传递为 rev = true
  • 这现在将按降序排序
  • 最后,通过将变量传递给数据框来更新数据框

朱莉娅

# Method7
s2 = sort(df2, rev=true)
df2 = s2 #updating the whole dataframe
df2


      

方法8:使用sort()!函数

sort!(vector,dim)函数通过数据框和维度传递,我们要在其中对列进行排序(维度表示 dim=1 表示行,dim=2 表示列)。

方法:

  • 现在应用用户选择的排序以按行或列排序的函数
  • 按行排序是通过将向量传递给 sort!()函数来完成的
  • 此外,我们需要传递 dim=1 ,这意味着逐行遍历
  • 此函数将以行方式打印排序
  • 现在通过传递 dim=2 以按列方式排序来应用相同的函数。
  • 这现在将以列方式打印已排序的向量。

朱莉娅

# Method8
B = [4 3; 1 2]
sort!(B, dims = 1); B # sorting through row
sort!(B, dims = 2); B # sorting through column