Julia : DataFrame常见用法
数据准备
数据说明:第二行第二列是空值;最后一列是空值;
两个重要的库
using DataFrames;
using CSV;
using Dates;
取数据:有首行(header),“,”分割;日期处理
csv_2 = s"C:\Users\songroom\Desktop\000002.XSHE.csv"
@time df = CSV.read(csv_2,header=true,delim=',', dateformat="yyyy/mm/dd");
输出:
可见,有不少的missing.除了第二列open中有一个missing外,但是,还有一列是全是missing.
1、如何把missing换成别的,比如missing=>0.0?
(1)replace!,有时侯可以,但是在这里不行
julia> replace!(df.open,missing =>0.0)
ERROR: setindex! not defined for CSV.Column{Union{Missing, Float64},Union{Missing, Float64}}
Stacktrace:[1] error(::String, ::Type) at .\error.jl:42[2] error_if_canonical_setindex(::IndexLinear, ::CSV.Column{Union{Missing, Float64},Union{Missing, Float64}}, ::Int64) at .\abstractarray.jl:1082[3] setindex! at .\abstractarray.jl:1073 [inlined][4] _replace!(::Base.var"#new#252"{Tuple{Pair{Missing,Float64}}}, ::CSV.Column{Union{Missing, Float64},Union{Missing, Float64}}, ::CSV.Column{Union{Missing,
Float64},Union{Missing, Float64}}, ::Int64) at .\set.jl:626[5] replace_pairs! at .\set.jl:455 [inlined][6] #replace!#251 at .\set.jl:445 [inlined][7] replace!(::CSV.Column{Union{Missing, Float64},Union{Missing, Float64}}, ::Pair{Missing,Float64}) at .\set.jl:445[8] top-level scope at REPL[75]:1
(2)coalesce
df.open = coalesce.(df.open, 0);
看一下效果:
结果是成功的!
(3)简单赋值,不一定可以的。
2、字段更名
把第一列,改为datetime
rename!(df,1=>:datetime) #字段重新命名 ,第1列
row,col = size(df)
3、insert一列,在第一列地方,insert 字段名字dtime
col = [x for x in df.open] .+[x for x in df.close]
insertcols!(df,1,:dtime =>col )
4、删除某列
select!(df, Not(:dtime))
5、names(df) 和 propertynames(df)
names => String
julia> names(df)
14-element Array{String,1}:"dt""open""close""low""high""volume""money""factor""high_limit""low_limit""avg""pre_close""paused""open_interest"
propertynames => Symbol
julia> propertynames(df)
14-element Array{Symbol,1}::dt:open:close:low:high:volume:money:factor:high_limit:low_limit:avg:pre_close:paused:open_interest
6、判断字段是否在其中?
hasproperty(df, :x1) #df是否有字段“x1”
columnindex(df, :x2) #df中索引“x2”排第几?不在其中,为0;
7、赋值
julia> df[1,2]=1111111
1111111
但需要注意,赋值时需要是同一类型。
8、块赋值
9、取前后几行
# 取df中某前几行
first(df,5) # 等价于python pandas head(df)
# 取df中后几行
last(df,5) # 等价于python pandas tail(df)
10、df =>array
11、对行进行循还
for row in eachrow(df)println(row[:close] - row[:open])
end
12、对列进行循 还
for col in eachcol(df)println(col[1])
end
13、综合循还
function iter_each_value(df) #checkrows = eachrow(df)nrow,ncol = size(df)i = 1for row in rowsfor j =1:ncolif rows[i][1] == 926.73println(row)endendi = i+1end
end
dataframe循还效率:找一个相对大的样本
和Array来进行比较:注意,这里没有用列进行优先循还!
function iter_each_value_array(data) nrow,ncol = size(df)for i =1:nrowfor j =1:ncolif data[i,j] == 926.73println("aa")endendend
end
具体速度如下:
julia> data =rand(590000,14)julia> @time iter_each_value_array(data)0.588667 seconds (10.61 M allocations: 305.910 MiB, 6.45% gc time)julia> @time iter_each_value_array(data)0.650769 seconds (10.61 M allocations: 305.910 MiB, 8.23% gc time)
初步看,两者速度差不多。
Julia : DataFrame常见用法相关推荐
- Spark15:Spark SQL:DataFrame常见算子操作、DataFrame的sql操作、RDD转换为DataFrame、load和save操作、SaveMode、内置函数
前面我们学习了Spark中的Spark core,离线数据计算,下面我们来学习一下Spark中的Spark SQL. 一.Spark SQL Spark SQL和我们之前讲Hive的时候说的hive ...
- pandas的apply函数常见用法总结
函数介绍 pandas的apply函数通常用于一些复杂的遍历操作(遍历可迭代对象的同时执行一些自定义函数),它的可定制程度高,而且比itterrows.for等操作效率更高,是我非常喜欢而且常用的一个 ...
- mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法
Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...
- python六:常见数据类型以及常见用法
bool 布尔值 # 在bool中 0,()(空元祖),[](空列表),{}(空字典),None,""(空字符串) 都是False int 整形 float 浮点型 str 字符串 ...
- vue-router 的常见用法
vue-router 的常见用法 1. 路由重定向 路由重定向指的是:用户在访问地址 A 的时候,强制用户跳转到地址 C ,从而展示特定的组件页面. 通过路由规则的 redirect 属性,指定一个新 ...
- 空的宏定义作用及常见用法
空的宏定义作用及常见用法 我们学习宏定义的第一个概念是,宏定义作为替换作用. 例如: #define SIZE 32 // 接下来代码使用SIZE就相当于32 宏定义是编译器在编译时,将程序中所有SI ...
- pyspark dataframe基本用法
pyspark dataframe基本用法 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on F ...
- Arrays常见用法
Arrays常见用法
- sed文本处理常见用法
sed文本处理常见用法 2011-06-24 TsengYia#126.com http://tsengyia.blog.chinaunix.net/ ################## ...
- typeset的常见用法
[保留] typeset的常见用法 http://www.chinaunix.net 作者:寂寞烈火 发表于:2007-12-16 09:50:34 [发表评论] [查看原文] [Shell讨论区] ...
最新文章
- 【第二篇】Volley的使用之加载图片
- PHP标记风格,编码规范
- 034_ JDK的Enumeration接口
- Xamarin.Forms客户端第一版
- 亲历腾讯WEB前端开发三轮面试经历及面试题
- 软件工程15 个人阅读作业1
- linux双屏播放视频,Ubuntu Linux下双屏显示解决方案
- 修改Gradle本地仓库的位置 方法
- JavaAndroid(2、Android开发环境搭建)
- GD32f103介绍第二章
- julia集 matlab代码,Mandelbrot集和Julia集的分形图之matlab实现.docx
- 喝酒神器摇骰子小程序源码分享以及搭建效果图
- 百度技术:“App 优化网络,先从 HTTPDNS 开始” | 原理到实战
- PMP项目管理培训总结
- 项目管理之项目干系人
- 机器学习之十大算法入门
- Firefox F12 + Python 3.6 下载B站视频
- android烧号工具,让你“爱恨交加”的
- 物联卡中心:物联卡被当作流量卡出售违法吗?看完你就知道了!
- 【黑苹果】【高分屏】软件修改BIOS中DVMT等设置 Insyde BIOS 联想YOGA系列
热门文章
- Oracle_为分区表添加新分区
- Domino部署多台notes server
- twitter服务器部署系统
- 使用windows system backup 裸机恢复域控-windows2008
- OpenFaces 3.0 最终版本发布,支持JSF2.0
- Symfony2Book16:Symfony2内部03-事件调度
- [XA]读书感想:个人对敏捷软件开发宣言的理解
- 《剑指offer》第五十八题(左旋转字符串)
- [算法]圆圈中最后剩下的数
- [No000014B]Office-PPT设置默认打开视图