dataframe - 如何在 Julia 中将 GroupedDataFrame 转换为 DataFrame?
问题描述
groupby
我使用以下函数对 DataFrame 的子集进行了计算:
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)
仅支持表
绘制数据的最佳方法是什么?我的想法是创建一个 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 │
在你的情况下。
你也可以写:
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 │
在原件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 │
在原件上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 │
推荐阅读
- python - 如何从命令行使用已安装的 pip3 包?
- javascript - 在 Card 组件中居中 Avatar 组件
- python-3.x - 指定 Spark Schema 不会显示正确的显示结果
- javascript - CKEditor 4 冻结
- javascript - Javascript - 倒数计时器
- vue.js - 将scss文件预编译为css
- python-3.x - Python - 没有名为 cv2 的模块
- python - .transform('first') 有什么作用?
- javascript - 删除 a 字符串中除撇号以外的所有符号和标记
- php - Yii2 - session_start(): 找不到保存处理程序'memcached' - 会话启动失败