Julia学习笔记:Excel数据逐条读取的低效及Plotly作为后端时柱形图的绘制

笔记 专栏收录该内容
6 篇文章 0 订阅

近期,要做一个相对来说有些麻烦的数据分析,需要综合Excel多张表中数据,根据特定规则进行综合分析计算,以得到所要结果。

分析数据,首先是读取文件,文件中有几张表,总共大概三十万条数据。其中一张表中的数据是后期数据统计分析的基础。该表中七万多条数据,要以某列String型字段为关键字,首先选出基础数据集合,就是这些数据中,对关键字的重复进行筛除,以不重复的这些关键字所组成的集合作为后续分析的基础。

使用Gtk和XLSX来选取和读取文件,然后设置了一个元素类型为String的空集合,并开始遍历Excel表中数据,逐条读取后,形成集合。

看起来逻辑没有问题,谁知程序运行时却出现“假死”状态,后来耐着性子等,并用@Time看了一下,才发现,遍历七万多条数据读取,去除掉重复数据(这是Julia语言运行集合运算时,自动执行的),形成六万多元素的集合,竟然花费了差不多5000秒的时间——这也太夸张了。以为集合运算要判断元素重复的情况,所以花费时间(其实自己也知道应该不会是这个问题,如果这样,那更大的数据量怎么办?),就尝试了一下生成列表,不进行元素重复的判断,结果用时几乎没有区别。

自己想不出所以然,就去Julia中文社区QQ群里请教大家,马上就有热心网友回复了,推测是因为Excel数据逐条读取效率低下引起的,建议读入形成DataFrame,再进行数据操作。

按照网友指点,使用DataFrame形式(可以用XLSX.gettable函数读取Excel整表内容再生成DataFrame),从DataFrame中逐条读取数据,生成集合,果然“瞬间”就完成了。

这下明白了,今后读取Excel文件数据,尤其大量数据,要整体读入,使用DataFrame形式,再对数据进行操作。

数据整理完毕,还对一些时间类型数据向数值进行了转换(使用Dates.value函数),然后准备将其可视化成柱形图(bar chart)。使用Plots相应功能,可以方便绘制柱形图,但不够美观。于是使用Plotly作为后端——此前常用Plotly作为后端绘制折线图,生成的图形非常简洁漂亮,所以我比较喜欢用Plotly做后端。

可是,随着Plotly后端运行,却无法使用Plots绘制柱形图,无论是使用Plots.plot函数中的参数设置seriestype=:bar,还是使用Plots.bar函数,都不能正常运行,提示参数不符或函数不对。

反复思量无果,就准备试着直接调用Plotly中的bar函数来绘制柱形图。查看了Plotly相关文档,然后使用bar函数,终于成功绘制了柱形图。

不过,也许我文档看得不够仔细完整,Plotly下的bar函数,绘制柱形图感觉不如Plots.plot函数使用方便、灵活。根据Plots文档来看,其实Plots.plot函数功能强大,绘制图形相当灵活,参数设置也很方便。可惜在Plotly做后端的情况下,有许多限制,参数seriestype设置对很多类型无效,柱形图即是其中一例。不知今后会不会有改进。

Julia作为比较新兴的语言,用户群体数量不够大,所以许多包和功能可能不够完善,距离Python的丰富生态还存在距离。但现在应该越来越多的人开始使用Julia了,希望将来生态会更加丰富,让我们使用也更加方便。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值