-
数据处理 - 异常值分析及可视化
异常值(Outlier) 是指样本中的个别值,其数值明显偏离所属样本的其余观测值。大多数情况下,异常值是由于数据录入或者数据后台数据运算错误导致。但是要说明的一点,异常值只是代表这个值属于异常而不一定代表这个值就是错误的。所以对于异常值的处理要适具体情况而定。 检测到了异常值,我们需要对其进行一定的处理。而一般异常值的处理方法可大致分为以下几种: 直接将含有异常值的记录删除。 视为缺失值:将异常值视为缺失值,利用缺失值处理的方法进行处理。 平均值修正:可用前后两个观测值的平均值修正该异常值。 不…
-
将Series转DataFrame并修改列名
在使用pandas操作的时候,pandas的两个主要数据结构Series和DataFrame是我们用的最多的。 Series是一种类似于一维数组的对象,它由一组数据和一组与之相关的数据标签索引组成。DataFrame是一个表格型的数据结构,它既有行索引也有列索引,它可以被看做有Series组成的字典。 一、将Series转换为DataFrame数据结构 而将Series转换为DataFrame也是会经常遇到的,看下常用的几种方式: 直接使用字典方式 使用字典的方式,创建好对应的列名与字典值就可以…
-
数据特征分析 - 帕累托分析法
帕累托分析法是基于帕累托法则的一种分析法。 先来说说什么是帕累托法则,其原型是19世纪意大利经济学家帕累托所创的库存理论。帕累托运用大量的统计资料分析当时的一些社会现象,概括出一种关键的少数和次要的多数的理论,并根据统计数字画成排列图,后人把它称为帕累托曲线图。简单的说,帕累托法则其实就是我们常说的二八法则,在经济学定律中说的是80%的财富掌握在20%的人手中,而在运营中说的则是80%的贡献度来自于20%的用户。 而基于帕累托法则的帕累托分析法(Pareto Analysis)是制定决策的统计方…
-
用yield关键字创建生成器
Python使用 生成器(generator) 对延迟操作提供了支持。所谓延迟操作,是指在需要的时候才产生结果,而不是立即产生结果,因此它不会在内存中创建和存储整个序列,这也是生成器的主要好处。 什么是生成器? 生成器其实是一种特殊的迭代器(iterator),但是不需要像迭代器一样自己去实现__iter__()和__next__()方法,简单的说生成器是通过一个或多个yield表达式构成的函数,生成器是为迭代器产生数据的。如果一个函数包含yield关键字,这个函数就会变为一个生成器。生成器并不…
-
Python中的迭代器与可迭代
很多人在听到迭代器与可迭代这两个名词时往往会搞不清楚,甚至认为他们是一样的,但是实际上他们是不同的概念。 我们先来直观的区分这两者有什么不同。 可迭代 (iterable):如果一个对象具备有__iter__() 或者 __getitem__()其中任何一个魔术方法的话,这个对象就可以称为是可迭代的。其中,__iter__()的作用是可以让for循环遍历,而__getitem__()方法可以让实例对象通过[index]索引的方式去访问实例中的元素。所以,列表List、元组Tuple、字典Dict…
-
python的短逻辑
python中的与(and)和或(or)都是短路的与或,短路指的是当通过第一个值能判断出结果时,就不再去查看第二个值了。 Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算: 与(and)运算:对于与运算,由于要求两个都为True结果才为True,所以如果与运算的第一个值是False,这时无论第二个值是什么,最终结果都会是False。因此与运算的第一个值如果是False,则第二个值就不会再执行查看了。 print(True and True)…
-
循环体与else语句
大家一定非常熟悉else关键字语句,else通常是用来配合if语句使用的,但是在Python的else语句并不只能用在if语句之后,还可以用在循环语句甚至try异常处理语句中,这虽然不是什么秘密,但是很多人没有发现它的好处。 for & else 默认情况下,只有当for循环语句正常执行后,最后才会执行else语句。 for i in list("abcdefg"): print(i) else: print("I am 'else' expression.")…
-
Python变量的作用域
Python程序有各种各样的命名空间,它指的是在该程序段内一个特定的名称是独一无二的,它和其它同名的命名空间是无关的。 在Python中每一个函数都有自己的命名空间,如果在函数体外部,也就是主程序范围内定义一个变量a,然后在函数体内也定义一个变量a,那么两者指带的是不同的变量。但是要知道的是场景总是多变的,假设我需要在函数体内也访问并修改一个定义在主程序范围内的变量是否可以呢? 先来看一个例子,我们在函数体外定义了一个变量name,我们在函数体内使用到了这个变量,最终在执行函数体时也可以正确获取…
-
用wordcloud和jieba生成中文词云
WordCloud是Python中一个非常优秀的第三方词云展示库,但是处理中文就不怎么能胜任,因为中文通常包含着一整句话,尽管在WordCloud里虽然也有process_text()方法用于把很长的文字做分隔,但这个方法本身是根据英文文本分词设计的,所以对于中文字的展示必须要配合更适合做中文分词处理的jieba分词库来操作效果更佳,今天就拿这两个库配合一起展示下小说《三国演义》中,四个字成语中那些出现的频率最高。 先来看下最终的词云效果图,下面就是我们以武将张飞为模板形状产生的中文词云图,可以…
-
Python之jieba中文分词库
jieba分词是Python中目前最受欢迎的中文分词库,他有许多特点,为了便于介绍直接引用官方介绍如下。 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析; 全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义; 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 支持繁体分词 支持自定义词典 MIT 授权协议 jieba分词的原理是利用一个中文词库,确定汉字之间的关联概率,然后组成词组,形成分词结果,除了分词,用户还可…