hoo*_*man 2 dataframe julia plots.jl
我已经使用以下groupby函数对DataFrame的子集进行了计算:
using RDatasets
iris = dataset("datasets", "iris")
describe(iris)
iris_grouped = groupby(iris,:Species)
iris_avg = map(:SepalLength => mean,iris_grouped::GroupedDataFrame)
Run Code Online (Sandbox Code Playgroud)
现在,我想绘制结果,但以下图出现错误消息:
@df iris_avg bar(:Species,:SepalLength)
Run Code Online (Sandbox Code Playgroud)
仅支持表
绘制数据的最佳方法是什么?我的想法是创建一个DataFrame并从那里开始。我将如何做,即如何将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 ?
Run Code Online (Sandbox Code Playgroud)
你的情况。
您也可能写过:
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 ?
Run Code Online (Sandbox Code Playgroud)
在原件GroupedDataFrame或
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 ?
Run Code Online (Sandbox Code Playgroud)
在原件上DataFrame。
我在这里将转换写为第一个参数,但是通常,您将其写为最后一个参数(这样您就可以传递多个转换),例如:
julia> by(iris, :Species, :SepalLength => mean, :SepalWidth => minimum)
3×3 DataFrame
? Row ? Species ? SepalLength_mean ? SepalWidth_minimum ?
? ? Categorical… ? Float64 ? Float64 ?
??????????????????????????????????????????????????????????????
? 1 ? setosa ? 5.006 ? 2.3 ?
? 2 ? versicolor ? 5.936 ? 2.0 ?
? 3 ? virginica ? 6.588 ? 2.2 ?
Run Code Online (Sandbox Code Playgroud)