自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

S_o_l_o_n的博客

Contact me: jt_solon@163.com

  • 博客(10)
  • 收藏
  • 关注

原创 python编程之logging模块的使用

编程中,很多时候我们需要保存一个程序的中间输出,要了解一个程序的运行情况,记录程序运行中在一些关键节点处的信息,以便我们后续进行分析和问题的排查。对于简单的应用和相对不那么复杂的程序,我们当然可以通过最常用的print来实现这些需求,无论是输出到控制台还是重定向到磁盘文件。但是一旦程序的功能性和复杂性提升了,我们一直使用print会显得杂乱,而且print的意义有时候也不明显,pri...

2019-11-19 16:34:22 244

原创 利用pandas的isin函数提取两个结构化数据文件的异同

在进行数据分析时,有时候我们需要对比两份数据是否一致,如果不一致,提取不一致的数据记录;对于结构化的数据来说,我们可以利用pandas的DataFrame数据结构来实现这一点。 我们先将结构化数据文件读入成DataFrame,然后再利用DataFrame的isin函数来实现。这里对于isin函数要注意的有以下几点:1、isin(values)函数中,如果value...

2019-11-18 13:37:56 682 4

原创 numpy数据类型转换Memory Error解决办法之给元素构建数字映射

当我们用numpy处理数据时,由于numpy的内存管理机制,其要求所有的元素的内存size一致,这样很多时候就会存在一个问题:一旦数据中出现了一个占据字节数很大的元素,那么所有的元素都会同样的占据该内存大小,尽管其他的元素并不需要这么大的内存就可以储存;这个问题就容易造成内存的消耗过大,内存浪费,如果机器内存本身不大,数据量又很大,那么就会导致memory error。 ...

2019-11-15 16:34:48 508

原创 numpy:性能提升之利用numpy的apply_along_axis函数替代pandas的apply函数

pandas的DataFrame的apply函数可以实现对指定的轴进行遍历操作,这是个很方便也很常用的函数,但是问题在于,当我们的数据量较大,比如有50万行,这时要对50万行进行逐行遍历的话,如果对每行的操作用到了Series索引,那么这将是一个非常耗时的过程,因为对于pandas来说,索引操作是低效的,这种低效再经过50万行放大,那么性能就会显得很差。对此,我们可以通过numpy的...

2019-11-15 15:50:28 10081 1

原创 numpy数据类型说明以及自动转换陷阱

numpy的dtype是一个很重要的概念,因为numpy为了性能,优化了内存管理,ndarray的值在内存中几乎是连续的,同时其每个元素的内存大小也被设计成是一样的,因此,当生成ndarray时,每个元素的数据类型都会被转为相同的类型,这时如果原生的数据类型是不一样的,那么就涉及到一个数据类型转换的问题,即data type casting。 明白numpy中的数据类...

2019-11-15 10:43:02 1707

原创 numpy:利用np.frompyfunc函数实现元素级操作,类似pandas的applymap函数功能

在pandas里,对于DataFrame,可以利用applymap(func)函数实现对DataFrame中每个元素进行函数func操作,而且相比于for loop,其性能会有较大的提升。而对于numpy中的ndarrray,没有类似名称的函数实现相同功能,但是有一个numpy.frompyfunc函数,其可以对一个python函数进行封装,返回一个封装后的函数,然后可以利用返回的封...

2019-11-13 21:34:42 4783

原创 pandas性能百倍提升之用字典索引或ndarray替换DataFrame索引以及内存占用分析

在利用pandas进行数据分析时,DataFrame是其基本的数据结构,当数据量较小时还好,一旦数据量较大,比如几十万上百万时,这时DataFrame就会变得笨重,笨重主要体现在对其索引的操作上,而对DataFrame的索引操作又是基本的操作,所以这时,在性能上就会有很大的损失;对pandas的使用可以让我们可以直观简单的进行数据分析,但是往往会在性能上有较大的损失。当然,对于性能的...

2019-11-05 19:00:07 5134

原创 python:如何准确的获取一个对象(比如字典)的内存占用

python中,sys模块里面有一个getsizeof函数,其可以获取某个对象的内存占用,但是要注意的是,该函数只能获取对象本身直接占用的内存,该对象所指向的引用所占据的内存并不会被计算在内;python中,比如当对象是一个容器时,那么getsizeof函数就无法获取该容器内部所有内容的内存占用了,返回的只是容器本身的内存占用,比如字典。 对此,官方文档给出了一种途径...

2019-11-05 18:45:21 4858

原创 pandas性能提升之避免对小数据量使用pandas内置函数

pandas本身就是面向数据分析的,而且是面向大数据分析的,所以其内置函数本身在设计上相比于一些python原生的操作就会繁杂一些,这也是为了功能性的考虑。所以,这就导致了其内置函数就像高速火车,而python的原生操作就像超跑,超跑在速度上是具有优势的,但是在功能性上是比不上高速火车的。所以,理论上,如果可以用python的原生操作实现,那么总是可以更快的,毕竟内置函数很多也是用原...

2019-11-05 14:34:20 571

原创 pandas之apply和for loop之间的比较和权衡

首先,文章开头就需要强调的是:对于大的数据量,能不用loop就尽量不用loop,无论是for loop还是apply,尽量用内置函数实现。 在pandas里,我们经常听到一句话就是尽量减少for loop的时候,尽量用apply去替代,但是这句话是有语境的,并不一定的正确的,实际上,在pandas里,对于for loop和apply之间的使用,是一个需要权衡的东西,并...

2019-11-05 11:29:23 2164

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除