Julia数据处理常用包_DataFrames包测试_2020-02-18

# Julia数据处理常用包_DataFrames包测试_20200218Tuesday
#@ Tools for working with tabular data in Julia.

## 1.DataFrames安装


# Installation: at the Julia REPL, using Pkg; Pkg.add("DataFrames")

## 2.DataFrames简介


# Maintenance: DataFrames is maintained collectively by the JuliaData collaborators. Responsiveness to pull requests and issues can vary, depending on the availability of key collaborators.

## 3.安装包查看

# julia> Pkg.status()
#     Status `C:\Users\lenovo\.juliapro\JuliaPro_v1.2.0-1\environments\v1.2\Project.toml`
#   [a93c6f00] DataFrames v0.20.0
#   [c91e804a] Gadfly v1.0.1
#   [7073ff75] IJulia v1.19.0
#   [e5e0dc1b] Juno v0.7.1
#   [438e738f] PyCall v1.91.2
#   [6f49c342] RCall v0.13.3

## 4.利用表格显示矩阵数据信息

using DataFrames
mymatrixl = rand(1:100,6,8)
mydfll = DataFrame(mymatrixl)
println(mydfll)

#@ 构建6行、8列表格数据如下:

# 6×8 DataFrame
# │ Row │ x1    │ x2    │ x3    │ x4    │ x5    │ x6    │ x7    │ x8    │
# │     │ Int64 │ Int64 │ Int64 │ Int64 │ Int64 │ Int64 │ Int64 │ Int64 │
# ├─────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
# │ 1   │ 6     │ 62    │ 5     │ 97    │ 90    │ 25    │ 23    │ 22    │
# │ 2   │ 16    │ 51    │ 50    │ 42    │ 58    │ 38    │ 2     │ 26    │
# │ 3   │ 43    │ 92    │ 54    │ 14    │ 17    │ 8     │ 100   │ 90    │
# │ 4   │ 80    │ 87    │ 29    │ 60    │ 25    │ 27    │ 28    │ 93    │
# │ 5   │ 71    │ 32    │ 96    │ 4     │ 65    │ 70    │ 97    │ 65    │
# │ 6   │ 11    │ 29    │ 41    │ 42    │ 46    │ 18    │ 18    │ 66    │

#@ 利用size()函数可以获取表格的行数和列数

x1 = size(mydfll) # 获取行数和列数
x2 = size(mydfll,1) # 获取行数
x3 = size(mydfll,2) # 获取列数
println("mydfll表格行数和列数:",x1)
# mydfll表格行数和列数:(6, 8)
println("mydfll表格的行数:",x2)
# mydfll表格的行数:6
println("mydfll表格的列数:",x3)
# mydfll表格的列数:8

## 5.利用表格显示数组数据信息

using DataFrames
mya1 = ["王冕","张峰","李磊","周迅","赵云","苏梅"]
mya2 = ["女","男","男","女","男","女"]
mya3 = [12,14,9,15,8,14]
mya4 = [96,86,75,98,100,63]
mya5 = ["A","B","C","A","A","D"]
studf1 = DataFrame()
studf1[:姓名] = mya1
studf1[:性别] = mya2
studf1[:年龄] = mya3
studf1[:成绩] = mya4
studf1[:评级] = mya5
println(studf1)
print("studf1表格的行数和列数为:",size(studf1))
# 6×5 DataFrame
# │     │ String │ String │ Int64 │ Int64 │ String │
# ├─────┼────────┼────────┼───────┼───────┼────────┤
# │ 1   │ 王冕   │ 女     │ 12    │ 96    │ A      │
# │ 2   │ 张峰   │ 男     │ 14    │ 86    │ B      │
# │ 3   │ 李磊   │ 男     │ 9     │ 75    │ C      │
# │ 4   │ 周迅   │ 女     │ 15    │ 98    │ A      │
# │ 5   │ 赵云   │ 男     │ 8     │ 100   │ A      │
# │ 6   │ 苏梅   │ 女     │ 14    │ 63    │ D      │
# studf1表格的行数和列数为:(6, 5)

## 6.数据列的选择与查看

#@ 查看姓名这一列数据
println(studf1[[:姓名]])
# │ Row │ 姓名   │
# │     │ String │
# ├─────┼────────┤
# │ 1   │ 王冕   │
# │ 2   │ 张峰   │
# │ 3   │ 李磊   │
# │ 4   │ 周迅   │
# │ 5   │ 赵云   │
# │ 6   │ 苏梅   │
#@ 查看多列数据
println(studf1[[:姓名,:性别,:成绩]])
# │ Row │ 姓名   │ 性别   │ 成绩  │
# │     │ String │ String │ Int64 │
# ├─────┼────────┼────────┼───────┤
# │ 1   │ 王冕   │ 女     │ 96    │
# │ 2   │ 张峰   │ 男     │ 86    │
# │ 3   │ 李磊   │ 男     │ 75    │
# │ 4   │ 周迅   │ 女     │ 98    │
# │ 5   │ 赵云   │ 男     │ 100   │
# │ 6   │ 苏梅   │ 女     │ 63    │

#@ 数据的提取:保存为新的数据表格

studf2 = studf1[[:姓名,:性别,:成绩]]
println("新数据表格的行数和列数为:",size(studf2))
# 新数据表格的行数和列数为:(6, 3)

#@ 当然也可以根据列数来获取数据

print(studf1[4:4])
# │ Row │ 成绩  │
# │     │ Int64 │
# ├─────┼───────┤
# │ 1   │ 96    │
# │ 2   │ 86    │
# │ 3   │ 75    │
# │ 4   │ 98    │
# │ 5   │ 100   │
# │ 6   │ 63    │

#@ 同样可以根据数字提取多列数据:获取第2列到第4列的数据

print(studf1[2:4])
# │ Row │ 性别   │ 年龄  │ 成绩  │
# │     │ String │ Int64 │ Int64 │
# ├─────┼────────┼───────┼───────┤
# │ 1   │ 女     │ 12    │ 96    │
# │ 2   │ 男     │ 14    │ 86    │
# │ 3   │ 男     │ 9     │ 75    │
# │ 4   │ 女     │ 15    │ 98    │
# │ 5   │ 男     │ 8     │ 100   │
# │ 6   │ 女     │ 14    │ 63    │

## 7.数据行的选择与查看


#@ Julia语言的数据表格语法和R的数据框是基本一致的,所以只要你会R,这块也是轻车熟路的

#@ 获取数据的一行数据
print(studf1[1:1,:])
1×5 DataFrame
# │ Row │ 姓名   │ 性别   │ 年龄  │ 成绩  │ 评级   │
# │     │ String │ String │ Int64 │ Int64 │ String │
# ├─────┼────────┼────────┼───────┼───────┼────────┤
# │ 1   │ 王冕   │ 女     │ 12    │ 96    │ A      │
#@ 获取多行数据
print(studf1[2:4,:])
# 3×5 DataFrame
# │ Row │ 姓名   │ 性别   │ 年龄  │ 成绩  │ 评级   │
# │     │ String │ String │ Int64 │ Int64 │ String │
# ├─────┼────────┼────────┼───────┼───────┼────────┤
# │ 1   │ 张峰   │ 男     │ 14    │ 86    │ B      │
# │ 2   │ 李磊   │ 男     │ 9     │ 75    │ C      │
# │ 3   │ 周迅   │ 女     │ 15    │ 98    │ A      │
#@ 随心所欲的获取数据
print(studf1[2:4,2:4])
# 3×3 DataFrame
# │ Row │ 性别   │ 年龄  │ 成绩  │
# │     │ String │ Int64 │ Int64 │
# ├─────┼────────┼───────┼───────┤
# │ 1   │ 男     │ 14    │ 86    │
# │ 2   │ 男     │ 9     │ 75    │
# │ 3   │ 女     │ 15    │ 98    │

## 8.利用eachrow显示表格中的数据

for row in eachrow(studf1)
    println(row)
end
# DataFrameRow
# │ Row │ 姓名   │ 性别   │ 年龄  │ 成绩  │ 评级   │
# │     │ String │ String │ Int64 │ Int64 │ String │
# ├─────┼────────┼────────┼───────┼───────┼────────┤
# │ 1   │ 王冕   │ 女     │ 12    │ 96    │ A      │
# DataFrameRow
# │ Row │ 姓名   │ 性别   │ 年龄  │ 成绩  │ 评级   │
# │     │ String │ String │ Int64 │ Int64 │ String │
# ├─────┼────────┼────────┼───────┼───────┼────────┤
# │ 2   │ 张峰   │ 男     │ 14    │ 86    │ B      │
# DataFrameRow
# │ Row │ 姓名   │ 性别   │ 年龄  │ 成绩  │ 评级   │
# │     │ String │ String │ Int64 │ Int64 │ String │
# ├─────┼────────┼────────┼───────┼───────┼────────┤
# │ 3   │ 李磊   │ 男     │ 9     │ 75    │ C      │
# DataFrameRow
# │ Row │ 姓名   │ 性别   │ 年龄  │ 成绩  │ 评级   │
# │     │ String │ String │ Int64 │ Int64 │ String │
# ├─────┼────────┼────────┼───────┼───────┼────────┤
# │ 4   │ 周迅   │ 女     │ 15    │ 98    │ A      │
# │ Row │ 姓名   │ 性别   │ 年龄  │ 成绩  │ 评级   │
# │     │ String │ String │ Int64 │ Int64 │ String │
# ├─────┼────────┼────────┼───────┼───────┼────────┤
# │ 5   │ 赵云   │ 男     │ 8     │ 100   │ A      │
# DataFrameRow
# │ Row │ 姓名   │ 性别   │ 年龄  │ 成绩  │ 评级   │
# │     │ String │ String │ Int64 │ Int64 │ String │
# ├─────┼────────┼────────┼───────┼───────┼────────┤
# │ 6   │ 苏梅   │ 女     │ 14    │ 63    │ D      │

## 9.利用eachcol显示DataFrame对象表格的数据

for col in eachcol(studf1)
    println(col)
end
# ["王冕", "张峰", "李磊", "周迅", "赵云", "苏梅"]
# ["女", "男", "男", "女", "男", "女"]
# [12, 14, 9, 15, 8, 14]
# [96, 86, 75, 98, 100, 63]
# ["A", "B", "C", "A", "A", "D"]

天行健,强者以自强不息!

岁月刃,毁人于温柔之中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值