如何在Julia中将GroupedDataFrame转换为DataFrame?
我使用如何在Julia中将GroupedDataFrame转换为DataFrame?,dataframe,julia,plots.jl,Dataframe,Julia,Plots.jl,我使用groupby函数对数据帧的子集进行了计算: using RDatasets iris = dataset("datasets", "iris") describe(iris) iris_grouped = groupby(iris,:Species) iris_avg = map(:SepalLength => mean,iris_grouped::GroupedDataFrame) 现在,我想绘制结果,但我得到以下绘图的错误消息: @df iris_avg bar(:Speci
groupby
函数对数据帧的子集进行了计算:
using RDatasets
iris = dataset("datasets", "iris")
describe(iris)
iris_grouped = groupby(iris,:Species)
iris_avg = map(:SepalLength => mean,iris_grouped::GroupedDataFrame)
现在,我想绘制结果,但我得到以下绘图的错误消息:
@df iris_avg bar(:Species,:SepalLength)
仅支持表
绘制数据的最佳方式是什么?我的想法是创建一个数据帧,然后从那里开始。我该怎么做,即如何将GroupedDataFrame转换为单个DataFrame?谢谢 要将
GroupedDataFrame
转换为DataFrame
只需在其上调用DataFrame
,例如:
julia> DataFrame(iris_avg)
3×2 DataFrame
│ Row │ Species │ SepalLength_mean │
│ │ Categorical… │ Float64 │
├─────┼──────────────┼──────────────────┤
│ 1 │ setosa │ 5.006 │
│ 2 │ versicolor │ 5.936 │
│ 3 │ virginica │ 6.588 │
就你而言
你也可以写:
julia> combine(:SepalLength => mean, iris_grouped)
3×2 DataFrame
│ Row │ Species │ SepalLength_mean │
│ │ Categorical… │ Float64 │
├─────┼──────────────┼──────────────────┤
│ 1 │ setosa │ 5.006 │
│ 2 │ versicolor │ 5.936 │
│ 3 │ virginica │ 6.588 │
在原始分组数据框上
或
julia> by(:SepalLength => mean, iris, :Species)
3×2 DataFrame
│ Row │ Species │ SepalLength_mean │
│ │ Categorical… │ Float64 │
├─────┼──────────────┼──────────────────┤
│ 1 │ setosa │ 5.006 │
│ 2 │ versicolor │ 5.936 │
│ 3 │ virginica │ 6.588 │
在原始的数据帧上
我在这里将转换作为第一个参数编写,但通常情况下,您会将其作为最后一个参数编写(这样您就可以传递多个转换),例如:
我认为您最好使用
by
功能直接访问您的iris\u avg
by
迭代数据帧,然后将给定函数应用于结果。通常,它与do
块一起使用
julia> by(iris, :Species) do df
DataFrame(sepal_mean = mean(df.SepalLength))
end
3×2 DataFrame
│ Row │ Species │ sepal_mean │
│ │ Categorical… │ Float64 │
├─────┼──────────────┼────────────┤
│ 1 │ setosa │ 5.006 │
│ 2 │ versicolor │ 5.936 │
│ 3 │ virginica │ 6.588 │
或同等地
julia> by(iris, :Species, SepalLength_mean = :SepalLength => mean)
3×2 DataFrame
│ Row │ Species │ SepalLength_mean │
│ │ Categorical… │ Float64 │
├─────┼──────────────┼──────────────────┤
│ 1 │ setosa │ 5.006 │
│ 2 │ versicolor │ 5.936 │
│ 3 │ virginica │ 6.588 │
有关更多详细信息/示例
或者,您可以像前面所做的那样分几个步骤来完成,然后使用DataFrame
构造函数将其转换为适当的DataFrame
:
julia> iris_grouped = groupby(iris,:Species);
julia> iris_avg = map(:SepalLength => mean,iris_grouped::GroupedDataFrame);
julia> DataFrame(iris_avg)
3×2 DataFrame
│ Row │ Species │ SepalLength_mean │
│ │ Categorical… │ Float64 │
├─────┼──────────────┼──────────────────┤
│ 1 │ setosa │ 5.006 │
│ 2 │ versicolor │ 5.936 │
│ 3 │ virginica │ 6.588 │
julia> iris_grouped = groupby(iris,:Species);
julia> iris_avg = map(:SepalLength => mean,iris_grouped::GroupedDataFrame);
julia> DataFrame(iris_avg)
3×2 DataFrame
│ Row │ Species │ SepalLength_mean │
│ │ Categorical… │ Float64 │
├─────┼──────────────┼──────────────────┤
│ 1 │ setosa │ 5.006 │
│ 2 │ versicolor │ 5.936 │
│ 3 │ virginica │ 6.588 │