使用Matplotlib绘制名称中包含空格的Julia DataFrame列

问题描述 投票:0回答:1

我的DataFrames在列名中有空格,因为它们生成的CSV文件在名称中也有空格。 DataFrames是用线条生成的

csvnames::Array{String,1} = filter(x -> endswith(x, ".csv"), readdir(CSV_DIR))
dfs::Dict{String, DataFrame} = Dict( csvnames[i] => CSV.File(CSV_DIR * csvnames[i]) |> DataFrame for i in 1:length(csvnames))

DataFrames具有列名称,例如“Tehtävä1”,但当我尝试访问列时,以下表达式都不起作用(此处ecols是数据帧):

  1. plot = axes.plot(ecols[Symbol("Tehtävä 1")])产生错误TypeError("float() argument must be a string or a number, not 'PyCall.jlwrap'")
  2. plot = axes.plot(ecols[:Tehtävä_1])产生错误ERROR: LoadError: ArgumentError: column name :Tehtävä_1 not found in the data frame; existing most similar names are: :Tehtävä 1
  3. plot = axes.plot(ecols[:Tehtävä 1])提出错误ERROR: LoadError: MethodError: no method matching typed_hcat(::DataFrame, ::Symbol, ::Int64)

因此,似乎我无法绘制名称中包含空格的DataFrame列。打印它们就可以正常工作了

println(ecols[Symbol("Tehtävä 1")])

产生和浮动阵列:[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],它应该是。 Matplotlib是否与DataFrames不相容,列名中有空格,如果是,我怎么能从Julia DataFrame的列中删除所有空格?

EDIT

我忘了提一个非常关键的一点:DataFrame包含missing值,Matplotlib无法理解。这导致错误1.我仍然非常想知道是否有办法摆脱表列名称中的任何空格,可能是在构建DataFrame期间。

dataframe matplotlib julia compatibility removing-whitespace
1个回答
1
投票

第一种方法工作得很好,但似乎你没有正确使用PyPlot.jl(特别是你试图创建一个名为plot的变量,它将从PyPlot.jl中掩盖plot函数)。

要查看它是否正常运行:

julia> df = DataFrame(Symbol("Tehtävä 1") => 1.0:5.0)
5×1 DataFrame
│ Row │ Tehtävä 1 │
│     │ Float64   │
├─────┼───────────┤
│ 1   │ 1.0       │
│ 2   │ 2.0       │
│ 3   │ 3.0       │
│ 4   │ 4.0       │
│ 5   │ 5.0       │

julia> plot(df[Symbol("Tehtävä 1")])
1-element Array{PyCall.PyObject,1}:
 PyObject <matplotlib.lines.Line2D object at 0x000000003F9EE0B8>

并且按预期显示情节。

编辑

如果要从数据帧的列名中删除空格,请使用qazxsw poi:

df
© www.soinside.com 2019 - 2024. All rights reserved.