new ext.data.store接受外部数据_将讨论为什么Julia是您要用于数据科学应用程序的工具(上)--Julia对各种数据类型的操作...

e67f93fe9ac612b05a64a558fb1cb274.png

julia 对.csv文件的操作

首先,让我们从github下载一个我们可以使用的csv文件。

注意:download取决于外部工具,如curl,wget或fetch。 我使用的是wget

wget https://raw.githubusercontent.com/nassarhuda/easy_data/master/programming_languages.csv

我们可以在Julia中使用shell命令,在ls前面加上分号即可。

;ls

还有我们下载的*.csv文件!

默认情况下,readcsv将使用.csv文件中的数据填充数组。如果我们将关键字参数headertrue,得到第二个输出数组。

P,H = readcsv("programminglanguages.csv",header=true)
println(P)

这里我们编写一个小函数。

function language_created_year(P,language::String)
    loc = findfirst(P[:,2].==language)
    return P[loc,1]
end

language_created_year(P,"Julia")
language_created_year(P,"julia")

但这并不会返回你想要的东西,但幸运的是,Julia对字符串操作非常简单!

function language_created_year_v2(P,language::String)
    loc = findfirst(lowercase.(P[:,2]).==lowercase.(language))
    return P[loc,1]
end
language_created_year_v2(P,"julia")

在Julia中,读取和写入文件也非常简单。

要写入文件,我们可以使用writecsvwritedlm

可以将相同的数据写入具有不同分隔符的文件中。

writedlm("programming_languages_data.txt", P, '-')

我们现在可以使用shell命令检查浏览文件这是否有效,

;head -10 programming_languages_data.txt

并检查是否可以使用readdlm正确读取新文本文件。

P_new_delim = readdlm("programming_languages_data.txt", '-');
P == P_new_delim

使用字典

让我们尝试以字典格式存储上述数据!

首先,先初始化一个空字典

dict = Dict{Integer,Vector{String}}()

在这里,可以设置dict接受整数作为键和字符串向量作为值。

但是,我们可以在不提供此信息的情况下初始化一个空字典(取决于我们的应用程序)。

dict2 = Dict()

dict2允许输入任何类型的键和值!

现在,让我们将字典填充年份作为键和向量,将每年创建的所有编程语言作为其值。

for i = 1:size(P,1)
    year,lang = P[i,:]
    if year in keys(dict)
        dict[year] = push!(dict[year],lang)
    else
        dict[year] = [lang]
    end
end

现在,可以选择任何一年,并找到当年发明的编程语言

dict[2003]

Julia 操作DataFrames!

Shout out to R fans!

在Julia中使用数据的另一种方法是使用DataFrame。

这需要加载DataFrames包

using DataFrames
df = DataFrame(year = P[:,1], language = P[:,2])

可以按标题名称或列索引访问列。

在这种情况下,df[1]相当于df[:year]

请注意,如果我们想按标题名称访问列,在标题名称前面加冒号,在Julia中,这意味着标题名称被视为符号。

地方[:year]

DataFrames 在处理数据时提供一些方便的功能

首先,它可以使用missing类型。前面有专门讲解

a = missing
typeof(a)

数字与missing相加时

a+1
describe(df)

DataFrames中的describe提供有关数据框中每列的快速统计信息

describe(df)

使用RDatasets

我们可以使用RDatasets来处理预先存在的数据集

using RDatasets
iris = dataset("datasets", "iris")

请注意,加载的数据dataset将存储为DataFrame

typeof(iris)

describe显示df中的一些详细信息!

describe(iris)

使用DataArrays

DataArray按如下方式创建

using DataArrays
foods = @data(["apple", "cucumber", "tomato", "banana"])
calories = @data([missing,47,22,105])
typeof(calories)
mean(calories)

缺少价值观毁了一切!

幸运的是我们可以忽略它们的skipmissing

mean(skipmissing(calories))

Oh WAIT! Detour。

describe(calories)

请注意,typeof(calories)等同于DataArrays.DataArray{String,1}

我们可以轻松地将其转换为常规的朱莉亚矢量,试试这个convert

newcalories = convert(Vector,calories)

这不起作用,因为我们没有说明如何处理NA值!

newcalories = convert(Vector,calories,0) #用0替换每个缺失
prices = @data([0.85,1.6,0.8,0.6,])
dataframe_calories = DataFrame(item=foods,calories=calories)
dataframe_prices = DataFrame(item=foods,price=prices)

我们还可以将两个数据帧使用join放在一起

DF = join(dataframe_calories,dataframe_prices,on=:item)

使用FileIO

using FileIO
julialogo = download("https://avatars0.githubusercontent.com/u/743164?s=200&v=4","julialogo.png")

再次,让我们检查一下这个下载是否有效!

;ls

接下来,重命名,存储为.png文件

X1 = load("julialogo.png")

@show typeof(X1);
@show size(X1);

Julia 支持的文件类型

在Julia中,支持许多文件类型,因此您无需在阅读之前将文件从其他语言传输到文本文件。

一些实现此目的的包: MAT CSV NPZ JLD FASTAIO

让我们尝试使用MAT来编写一个存储矩阵的文件。

using MAT

matfile = matopen("densematrix.mat", "w") 
write(matfile, "A", A)
close(matfile)

现在尝试用MATLAB打开densematrix.mat

newfile = matopen("densematrix.mat")
read(newfile,"A")

names(newfile)
close(newfile)

先写到这里,明天继续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值