小编Bog*_*ski的帖子

Julia 和 Python 比较中给定两个数字之间的素数

请参阅查找给定两个数字下限和上限之间的素数的 Python 代码:

\n
lower = 3\nupper = 15\n\nprint("Prime numbers between", lower, "and", upper, "are:")\n\nfor num in range(lower, upper + 1):\n\n   for i in range(2, num):\n       if (num % i) == 0:\n           break\n   else:\n       print(num)\n
Run Code Online (Sandbox Code Playgroud)\n

Python输出:

\n
lower = 3\nupper = 15\n\nprint("Prime numbers between", lower, "and", upper, "are:")\n\nfor num in range(lower, upper + 1):\n\n   for i in range(2, num):\n       if (num % i) == 0:\n           break\n   else:\n       print(num)\n
Run Code Online (Sandbox Code Playgroud)\n

Julia 中几乎类似的代码给出了错误的输出。请参阅下面的 Julia 代码:

\n
lower = 3\nupper = 15\nprintln("Prime …
Run Code Online (Sandbox Code Playgroud)

python julia

11
推荐指数
1
解决办法
834
查看次数

将JSON数组读入类似Julia DataFrame的类型

给定一个JSON文件,JSON包很乐意解析它.但是,如果我想将它作为DataFrame(或任何其他柱状数据结构),那么获得它的好方法是什么?

目前,例如,我有:

using JSON
using DataFrames

json_str = """
[{ "color": "red", "value": "#f00" }, { "color": "green", "value": "#0f0" }, 
 { "color": "blue", "value": "#00f" }, { "color": "cyan", "value": "#0ff" }, 
 { "color": "magenta", "value": "#f0f" }, { "color": "yellow", "value": "#ff0" }, 
 { "color": "black", "value": "#000" } ]
  """

function jsontodf(a)
    ka = union([keys(r) for r in a]...)
    df = DataFrame(;Dict(Symbol(k)=>get.(a,k,NA) for k in ka)...)
    return df
end

a = JSON.Parser.parse(json_str)
jsontodf(a)
Run Code Online (Sandbox Code Playgroud)

这导致:

7×2 DataFrames.DataFrame
? …
Run Code Online (Sandbox Code Playgroud)

dataframe julia

9
推荐指数
1
解决办法
906
查看次数

Julia DataFrames - 如何进行单热编码?

我正在使用 Julia 的 DataFrames.jl 包。在其中,我有一个数据框,其中包含一个包含字符串列表的列(例如 ["Type A"、"Type B"、"Type D"])。那么如何执行one-hot编码?我无法在 DataFrames.jl 包中找到预构建的函数。

这是我想要做的一个例子:

Original Dataframe

col1 | col2 |
102  |[a]   |
103  |[a,b] | 
102  |[c,b] |
Run Code Online (Sandbox Code Playgroud)
After One-hot encoding

col1 | a | b | c |
102  | 1 | 0 | 0 |
103  | 1 | 1 | 0 | 
102  | 0 | 1 | 1 |
Run Code Online (Sandbox Code Playgroud)

dataframe julia one-hot-encoding

9
推荐指数
2
解决办法
1045
查看次数

Julia 的包中是否有 rep() 函数?

我正在 Julia 中寻找一个函数,它可以采用类似于此 R 代码的值:

rep(1, ncol(X))
Run Code Online (Sandbox Code Playgroud)

我知道我可以将 DataFrames 包用于R 中lengthncol()函数,但我rep在 Julia 中找不到函数。谢谢!

r julia

7
推荐指数
1
解决办法
1390
查看次数

在 Julia DataFrame 中查找行

在 DataFrames.jl 中查找 DataFrame 中的行的规范方法是什么?

\n

例如,给定这个 DataFrame:

\n
\xe2\x94\x82 Row  \xe2\x94\x82 uuid                                 \xe2\x94\x82 name                          \n\xe2\x94\x82      \xe2\x94\x82 String                               \xe2\x94\x82 String                       \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n\xe2\x94\x82 1    \xe2\x94\x82 0efae8bf-39e6-5d65-b05d-c8947f4cee2a \xe2\x94\x82 COSMA_jll                    \n\xe2\x94\x82 2    \xe2\x94\x82 17ccb2e5-db19-44b3-b354-4fd16d92c74e \xe2\x94\x82 CitableImage   \n
Run Code Online (Sandbox Code Playgroud)\n

鉴于名称“CitableImage”,检索 uuid 的最佳方法是什么?

\n

dataframe julia julia-dataframe

6
推荐指数
1
解决办法
2025
查看次数

Julia变量的范围以及if块嵌套在for循环中

for i=1:5
    if(i==1)
        z = i
    end
    println("i = $i, z = $z")
end

i = 1, z = 1
ERROR: UndefVarError: z not defined
Stacktrace:
 [1] top-level scope at ./REPL[6]:5 [inlined]
 [2] top-level scope at ./none:0
Run Code Online (Sandbox Code Playgroud)

上面脚本的行为令我感到困惑。有人可以帮我理解为什么当i = 1时打印有效,而当i = 2时打印失败。

julia

5
推荐指数
1
解决办法
131
查看次数

如何根据数据集中某列的值制作散点图?

我得到了一个看起来像这样的数据集

数据

并且我试图将第一列上所有带有 1 的点与带有 0 的点分开,但我想将它们放在同一个图表中。

我知道最终结果应该与此类似 在此处输入图片说明

但是我找不到过滤 Julia 中的点的方法。我在我的项目中使用了 LinearAlgebra、CSV、Plots、DataFrames,到目前为止我还没有找到一种方法来使 DataFrames 存储类型与 Plots 函数很好地协同工作。我不断Cannot convert Float64 to series data for plotting遇到错误,例如当我尝试使用 for 循环作为过滤器单独绘制点时,如下面的代码所示

filter = select(data, :1)
newData = select(data, 2:3)

#graph one initial point to create the plot
plot(newData[1,1], newData[1,2], seriestype = :scatter, title = "My Scatter Plot")

#add the additional points with the 1 in front
for i in 2:size(newData)
    if filter[i] == 1
        plot!(newData[i, 1], newData[i, 2], seriestype = :scatter, title = "My Scatter …
Run Code Online (Sandbox Code Playgroud)

dataframe julia ijulia-notebook

5
推荐指数
1
解决办法
535
查看次数

Julia:CSV.write 内存效率很低?

我注意到,当将大型数据帧保存为 CSV 时,内存分配比内存中数据帧的大小(或磁盘上 CSV 文件的大小)高一个数量级,至少高出 10 倍。 为什么这是案件?有没有办法防止这种情况?即有没有一种方法可以将数据帧保存到磁盘而不使用比实际数据帧更多的内存?

在下面的示例中,我生成了一个包含一个整数列和 10m 行的数据框。它重 76MB,但写入 CSV 分配了 1.35GB。

using DataFrames, CSV

function generate_df(n::Int64)
    DataFrame!(a = 1:n)
end
Run Code Online (Sandbox Code Playgroud)
julia> @time tmp = generate_df2(10000000);
  0.671053 seconds (2.45 M allocations: 199.961 MiB)

julia> Base.summarysize(tmp) / 1024 / 1024
76.29454803466797

julia> @time CSV.write("~/tmp/test.csv", tmp)
  3.199506 seconds (60.11 M allocations: 1.351 GiB)
Run Code Online (Sandbox Code Playgroud)

dataframe julia

5
推荐指数
1
解决办法
202
查看次数

将多个函数应用于 Julia DataFrames.jl 中的单个列

我想轻松地将多个函数应用于 Julia 数据框中的单个列。这是 Julia Academy 上 DataFrames.jl 课程笔记本 5 中的一个简单示例。

Bogumil 向我们展示了jumps通过执行以下操作轻松计算列的平均值:

combine(df, :jumps => mean)
Run Code Online (Sandbox Code Playgroud)
jumps_mean
Float64
1 2.7186

但是如果我想应用多个函数jumps来获得多个汇总统计呢?到目前为止,我可以使以下内容起作用:

combine(df, :jumps => (x -> [(mean(x), std(x), minimum(x), maximum(x))]) => [:mean, :std, :min, :max])
Run Code Online (Sandbox Code Playgroud)
意思 标准 最大限度 分钟
Float64 Float64 64位 64位
1 2.7186 0.875671 2 11

是否有更简洁的语法来执行此操作,而无需将函数返回包装起来[ ]或专门使用匿名函数?

例如,我想做:

combine(df, :jumps => (mean, std, minimum, maximum))
Run Code Online (Sandbox Code Playgroud)

dataframe julia

5
推荐指数
1
解决办法
111
查看次数

无法在 DataFrames.jl 中执行列转换

假设我有以下数据框:

\n
julia> using DataFrames\n\njulia> df = DataFrame(id=["a", "b", "a", "b", "b"], v=[1, 1, 1, 1, 2])\n5\xc3\x972 DataFrame\n Row \xe2\x94\x82 id      v\n     \xe2\x94\x82 String  Int64\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n   1 \xe2\x94\x82 a           1\n   2 \xe2\x94\x82 b           1\n   3 \xe2\x94\x82 a           1\n   4 \xe2\x94\x82 b           1\n   5 \xe2\x94\x82 b           2\n
Run Code Online (Sandbox Code Playgroud)\n

:v我想计算由 column 定义的每个组中的唯一值的数量:id。我尝试了以下方法:

\n
julia> gdf = groupby(df, :id)\nGroupedDataFrame with 2 groups based on key: id\nFirst Group (2 rows): id = "a"\n Row \xe2\x94\x82 id      v\n     \xe2\x94\x82 String  Int64\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n   1 \xe2\x94\x82 …
Run Code Online (Sandbox Code Playgroud)

dataframe julia

5
推荐指数
1
解决办法
63
查看次数