julia语言做数据预处理

Julia语言数据预处理
本文简单介绍拿Julia语言进行数据预处理,数据R语言和python的都应该有感觉,就是R和python做数据预处理非常方便。R方面主要是有dplyr这个包,或者是datatable这个包。python对应的pandas这个库,因此这几个包极大地促进了数据预处理。juila语言其实在这个方面也是非常强的,因为julia本身就是吸收了python,R,matlab等一系列语言发展而来的,虽然目前还没有太流行,但是未来很有发展潜力。我自己感觉一个很重要的原因就是julia语言在优化领域存在一些非常强劲的包。大家看,python有了numpy,pandas,sciklearn等等,R也有大量的机器学习,以及统计学方面的包,但是呢,这两个软件优化方面的东西还是少了一些,当然也存在这方面的包,比如python有pymo。R也有对应的优化包,但是呢,不是太强劲,我们希望R,python在优化方面也有像机器学习那么强悍的几个包。julia语言弥补了这个不足,它在优化方面非常突出。比matlab要好用很多,当然我们今天不是讲julia在优化方面的应用,主要是做一些数据预处理的工作。

julia这个语言里边核心的数据结构主要是array和DataFrame,数据预处理主要是利用dataframe的一些函数进行

#调用DataFrames包
using Dataframs
#读取csv文件
#设置文件地址
file="D:/Rdata/exercise.csv"
#读取数据
data=readtable(file)
#查看数据的前五行,用head
6×8 DataFrames.DataFrameRow │ weekend │ num_child │ distance │ rides │ games │ wait │ clean │
├─────┼─────────┼───────────┼──────────┼───────┼───────┼──────┼───────┤
│ 1"yes"0114.64887736089    │
│ 2"yes"227.014187787687    │
│ 3"no"163.30185807088    │
│ 4"yes"025.909988726689    │
│ 5"no"454.718384877487    │
│ 6"no"522.679381794879    │

│ Row │ overall │
├─────┼─────────┤
│ 147      │
│ 265      │
│ 361      │
│ 437      │
│ 568      │
│ 627#查看最后五行
tail(data)
6×8 DataFrames.DataFrameRow │ weekend │ num_child │ distance │ rides │ games │ wait │ clean │
├─────┼─────────┼───────────┼──────────┼───────┼───────┼──────┼───────┤
│ 1"no"541.470183847790    │
│ 2"no"011.052690726890    │
│ 3"yes"08.1877491838291    │
│ 4"no"245.177495928593    │
│ 5"no"327.088483838088    │
│ 6"no"138.408886887785    │

│ Row │ overall │
├─────┼─────────┤
│ 155      │
│ 246      │
│ 347      │
│ 471      │
│ 554      │
│ 662#若想查看前n行,直接在head里边,加入数字即可,比如查看前十行,就是head(data,10)
#查看数据框中所有变量
names(data)
8-element Array{Symbol,1}:
 :weekend  
 :num_child
 :distance 
 :rides    
 :games    
 :wait     
 :clean    
 :overall  
#查看数据框的维度
size(data)
(500, 8)
#查看每个变量的数据类型


showcols(data)
500×8 DataFrames.DataFrameCol # │ NameEltypeMissing │
├───────┼───────────┼─────────┼─────────┤
│ 1     │ weekend   │ String0       │
│ 2     │ num_child │ Int640       │
│ 3     │ distance  │ Float640       │
│ 4     │ rides     │ Int640       │
│ 5     │ games     │ Int640       │
│ 6     │ wait      │ Int640       │
│ 7     │ clean     │ Int640       │
│ 8     │ overall   │ Int640#从前面来看,貌似julia和R,python很相似,但是在查看数据框中某个变量时,julia用的是:符号,比如要查看weekend变量,如下:
data[:weekend]
500-element DataArrays.DataArray{String,1}:
 "yes"
 "yes"
 "no" 
 "yes"
 "no" 
 "no" 
 "yes"
 "no" 
 "no" 
 "yes""yes"
 "yes"
 "no" 
 "no" 
 "no" 
 "yes"
 "no" 
 "no" 
 "no" 
 #当然也可以这样data[1],也就是提取第一列,python的话,就是提取第一行,但是julia是提取第一列。
 data[1]
 #如果要是查看多列的话,比如查看weekend和game这两列,就是data[:,[:weekend,:games]]
 data[:,[:weekend,:games]]
 500×2 DataFrames.DataFrameRow │ weekend │ games │
├─────┼─────────┼───────┤
│ 1"yes"73    │
│ 2"yes"78    │
│ 3"no"80    │
│ 4"yes"72    │
│ 5"no"87    │
│ 6"no"79    │
│ 7"yes"73    │
│ 8"no"70    │
⋮
│ 492"yes"87    │
│ 493"yes"59    │
│ 494"no"75    │
│ 495"no"84    │
│ 496"no"72    │
│ 497"yes"83    │
│ 498"no"92    │
│ 499"no"83    │
│ 500"no"88#或者是data[:,[1,5]]

上面是对数据进行按列进行的一些操作,如果是对行列同时进行,那就是数据切片了,下面进行介绍

data[1:3,[:weekend,:games]]
3×2 DataFrames.DataFrameRow │ weekend │ games │
├─────┼─────────┼───────┤
│ 1"yes"73    │
│ 2"yes"78    │
│ 3"no"80data[1:3,[1,5]]
3×2 DataFrames.DataFrameRow │ weekend │ games │
├─────┼─────────┼───────┤
│ 1"yes"73    │
│ 2"yes"78    │
│ 3"no"80

大家这里要注意到,julia的索引是从1开始的,而不是从0开始的。
好了,继续,刚才是连续取行,比如1:3表示取1到3行,如果是想离散的进行切片,如下

data[[1,3],[1,2]]
2×2 DataFrames.DataFrame
│ Row │ weekend │ num_child │
├─────┼─────────┼───────────┤
│ 1"yes"0         │
│ 2"no"1

更加多样化的操作大家可以参考如下链接
介绍julia的DataFrame的教程

你可能感兴趣的:(juila)