📜  在 Julia 中使用 DataFrame(1)

📅  最后修改于: 2023-12-03 15:23:11.227000             🧑  作者: Mango

在 Julia 中使用 DataFrame

Julia 中的 DataFrame 是一种用于处理结构化数据的数据类型,类似于 Python 中的 Pandas DataFrame 和 R 中的 data.frame。DataFrame 最常用于数据清理、数据转换和数据可视化等操作中。

在本文中,我们将介绍如何在 Julia 中使用 DataFrame。

安装和导入

要开始使用 DataFrame,需要安装 DataFrames.jl 包。在 Julia 的 REPL 中,可以使用以下命令安装:

julia> using Pkg
julia> Pkg.add("DataFrames")

安装完成后,使用以下命令导入 DataFrame:

julia> using DataFrames
创建 DataFrame

可以使用以下方法创建 DataFrame:

从数组创建

可以使用 DataFrame() 函数从一个二维数组或元组数组创建 DataFrame。

julia> data = [(1, "John", 25),
               (2, "Jane", 30),
               (3, "Jim", 40)]

julia> df = DataFrame(data, [:id, :name, :age])

这将创建一个包含 3 行和 3 列的 DataFrame,其中列名称分别为 :id, :name:age。:

从 CSV 文件创建

可以使用 CSV.jl 包中的 CSV.read() 函数从 CSV 文件中创建 DataFrame:

julia> using CSV

julia> df = CSV.read("/path/to/file.csv")
从其他数据类型创建

DataFrames 包提供了从其他数据类型(例如 SQLite 数据库或 JSON 文件)创建 DataFrame 的方法。有关更多详细信息,请查看 DataFrames 包的文档。

操作 DataFrame

DataFrame 支持类似于 Pandas 和 R 的各种操作,例如选择、筛选、修改、排序和组合。

预览 DataFrame

在处理 DataFrame 之前,了解 DataFrame 的结构是很有必要的。可以使用以下函数预览 DataFrame:

julia> println(df)

或者,可以使用 first()last() 函数分别查看前几行和后几行:

julia> first(df, 5)
julia> last(df, 5)
选择列

DataFrame 中的每一列都可以用该列名称或索引编号来访问。以下代码选择 DataFrame 中的特定列:

julia> df[:, :name] # 选择名称列
julia> df[:, [1, 3]] # 选择 id 和 age 列
筛选行

可以使用类似于 SQL 的 WHERE 语句来筛选 DataFrame 中的行。以下代码根据指定的条件筛选 DataFrame 中的行:

julia> filter(row -> row.age > 30, df) # 筛选出年龄大于 30 的行
修改 DataFrame

可以使用以下代码向 DataFrame 中添加列:

julia> df[:salary] = [60000, 70000, 80000]

也可以使用以下代码修改 DataFrame 中的值:

julia> df[2, :name] = "Jane Doe"
排序 DataFrame

使用以下代码根据指定列对 DataFrame 进行排序:

julia> sort(df, [:age], rev=true) # 根据年龄列从大到小排序
合并 DataFrame

可以使用以下代码将两个 DataFrame 按照行或列进行合并:

julia> df1 = DataFrame(id=[1, 2, 3], name=["John", "Jane", "Jim"])
julia> df2 = DataFrame(age=[25, 30, 40], salary=[60000, 70000, 80000])

julia> vcat(df1, df2) # 按行合并
julia> hcat(df1, df2) # 按列合并
数据可视化

可以使用以下代码使用 VegaLite.jl 和 Plots.jl 包将 DataFrame 数据可视化:

julia> using VegaLite
julia> using Plots

julia> df = DataFrame(x=[1, 2, 3], y=[4, 5, 6])

julia> @vlplot(:point, df, x=:x, y=:y) # 散点图

julia> plot(df.x, df.y, seriestype=:scatter) # 散点图
总结

在 Julia 中,DataFrames.jl 包提供了一种方便的方式来处理结构化数据。使用 DataFrame,您可以轻松地加载和处理 CSV 文件和其他数据源。

此外,DataFrame 支持广泛的操作,例如选择、筛选、修改、排序和组合。它还可以使用 VegaLite.jl 和 Plots.jl 包提供的函数进行数据可视化。