0


Julia中的数据分析入门

Julia的入门非常简单,尤其是当您熟悉Python时。在本篇文章中,我们将使用约翰霍普金斯大学系统科学与工程中心在其GitHub存储库中提供的Covid-19数据(https://github.com/CSSEGISandData/)。

入门

对于我们的数据分析,我们将会使用一些软件包来简化操作:CSV,DataFrame,日期和可视化。只需输入软件包名称,即可开始使用。

 using CSV
 using DataFrames
 using Dates
 using Plots

如果包还没有添加到您的项目环境中,您可以轻松地添加它们。

 using Pkg
 Pkg.add("CSV")
 Pkg.add("DataFrames")
 Pkg.add("Dates")
 Pkg.add("Plots")

读取数据

读取数据只需几个简单的步骤。首先,我们指定CSV文件的URL。其次,我们指定文件在本地机器上的路径。我们将加入目前的工作目录和文件名“confirmed.csv”路径。然后将文件从URL下载到指定的路径。第四个也是最后一个步骤是将CSV文件读入一个名为“df”的DataFrame中。

 # Step 1: Specify the file location
 URL = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv"
 
 # Step 2: Specify the path
 path = joinpath(pwd(), "confirmed.csv")
 
 # Step 3: Download the file
 download(URL, path)
 
 # Step 4: Reading the CSV file into a DataFrame
 df = CSV.File(path) |> DataFrame

让我们看看数据的前10行。

 first(df, 10)

整理数据

在本例中,我们不需要省份/州、Lat和Long列。所以我们先把它们放下。通过在select语句后加上感叹号,df会被修改。

 select!(df, Not(["Province/State", "Lat", "Long"]))

澳大利亚和其他一些国家有多个行。当我们想要绘制每个国家的数据时,我们必须聚合数据。我们将通过执行split — apply — combine来做到这一点。首先,我们使用groupby函数按国家分割数据。然后我们对每组(即每个国家)的所有日期列应用一个求和函数,因此我们需要排除第一列“国家/地区”。最后,我们将结果合并到一个df中。

 grp = groupby(df, "Country/Region")
 column_names = names(grp)
 date_columns = column_names[2:end] # select all columns except the first column "Country/Region"
 df = combine(gdf, date_columns .=> sum .=> date_columns)

让我们看看到目前为止我们有什么。

 first(df, 10)

我们的df现在(在写入时)有320列。但是,我们希望一列显示日期,另一列显示我们称之为“case”的值。换句话说,我们要把数据帧从宽格式转换成长格式,这里就需要使用堆栈函数。

 df = DataFrames.stack(
     df,
     Not("Country/Region"),
     "Country/Region",
     variable_name="Date",
     value_name="Cases",
 )

下面是我们格式化完成的数据,显示最后10行。

last(df, 10)

还有一件事要做。我们需要将de列“Date”从分类字符串格式转换为绘制时间序列的日期格式。

df.Date = Dates.Date.(df.Date |> Array, Dates.DateFormat("m/d/Y")) .+ Dates.Year(2000)

这是对最终整理后数据的描述如下。

describe(df)

在可视化数据之前,让我们先将整理后的数据写入磁盘。

CSV.write(joinpath(pwd(), "confirmed_tidy.csv"), df)

可视化数据

在我们的第一张图中,我们将可视化美国Covid-19累计确诊病例。

plot(
    df[df["Country/Region"] .== "US", :Date],
    df[df["Country/Region"] .== "US", :Cases],
    title = "Confirmed cases US",
    xlabel = "Date",
    ylabel = "Number of cases",
    legend = false,
)

在一个图中绘制多个国家的时间序列非常简单。首先创建基本块,并为每个国家添加一层。

p = plot(
    title = "Confirmed Cases",
    xlabel = "Date",
    ylabel = "Number of cases",
    legend = :topleft,
)

for country = ["US", "Russia", "India"]
    plot!(
        df[df["Country/Region"] .== country, :Date],
        df[df["Country/Region"] .== country, :Cases],
        label = country,
    )
end

p

在我们的最后一个图中,我们将绘制美国每天的新病例。要做到这一点,我们必须计算连续天数之间的差值。因此,对于时间序列的第一天,这个值将不可用。

bar(
    df[df["Country/Region"] .== "US", :Date][2:end],
    diff(df[df["Country/Region"] .== "US", :Cases]),
    title = "Daily Cases US",
    xlabel = "Date",
    ylabel = "Number of cases",
    color = "red",
    linecolor = "white",
    legend = false,
    size = (900, 400),
)

最后,我们将把图保存到磁盘上。

savefig(joinpath(pwd(), "daily_cases_US.svg"))

总结

在本文中,我们介绍了使用Julia进行数据分析的基础知识。根据我的经验,Julia很像python。这两种语言都易于编写和学习。两者都是开源的。我喜欢Julia的原因是它的高性能以及它与其他编程语言(如Python)的互操作性。我喜欢Python的地方在于它庞大的包集合和庞大的在线社区。

作者:R e n é

deephub翻译组

原文地址:https://towardsdatascience.com/getting-started-with-data-analysis-in-julia-421ce0032916

标签:

“Julia中的数据分析入门”的评论:

还没有评论