Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Julia中将GroupedDataFrame转换为DataFrame?_Dataframe_Julia_Plots.jl - Fatal编程技术网

如何在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            │