使用特定代码求.
众数是指在统计分布上具有明显集中趋势点的数值,代表数据的一般水平.也是一组数据中出现次数最多的数值,有时众数在一组数中有好几个,用M表示.
众数是样本观测值在频数分布表中频数最多的那一组的组中值,主要应用于大面积普查研究之中.
众数是在一组数据中,出现次数最多的数据,是一组数据中的原数据,而不是相应的次数.
import numpy as np
counts = np.bincount(a)
print np.argmax(counts)
难度:★☆☆☆☆
类型:数学
你可以假设数组是非空的,并且给定的数组总是存在众数.
示例 1:
为了找到出现次数最多的数,最简单的逻辑就是统计每次数字出现的次数,再拿取出其中出现次数最多的数字.该方法道理简单,但是内存开销较大.
这道题目所求的众数的定义与常规概念不同的是,这里众数的出现次数要比数组中其他所有元素要多的,根据这个原理,我们将结果变量(res)初始化为数组第一个数,另外准备一个统计变量(count),当这个变量遇到和结果相同的数则加一,否则减一,减为零时更换结果变量为下一个数,由于众数出现次数多于其他字符,那么数组遍历结束后统计变量一定大于零,且此时结果变量中的数即为众数.
这里众数的的出现次数超过其他元素,所以呢我们将数据进行排序后,最中间的数字一定是众数.
如有疑问或建议,欢迎评论区留言~
Python count()方法用于统计字符串里某个字符或子字符串出现的次数,可选参数为在字符串搜索的开始与结束位置.
语法
count()方法语法:
str.count(sub, start= 0,end=len(string))
参数
sub -- 搜索的子字符串
start -- 字符串开始搜索的位置,默认为第一个字符,第一个字符索引值为0
end -- 字符串中结束搜索的位置,字符中第一个字符的索引为0,默认为字符串的最后一个位置.
返回值
该方法返回子字符串在字符串中出现的次数.
一些小提示和小技巧可能是非常有用的,特别是在编程领域.有时候使用一点点黑客技术,既可以节省时间,还可能挽救"生命".
一个小小的快捷方式或附加组件有时真是天赐之物,并且可以成为真正的生产力助推器.所以,这里有一些小提示和小技巧,有些可能是新的,但我相信在下一个数据分析项目中会让你非常方便.
Pandas中数据框数据的Profiling过程
Profiling(分析器)是一个帮助我们理解数据的过程,而Pandas Profiling是一个Python包,它可以简单快速地对Pandas 的数据框数据进行 探索 性数据分析.
Pandas中df.describe()和df.info()函数可以实现EDA过程第一步.但是,它们只提供了对数据非常基本的概述,对于大型数据集没有太大帮助. 而Pandas中的Profiling功能简单通过一行代码就能显示大量信息,且在交互式HTML报告中也是如此.
对于给定的数据集,Pandas中的profiling包计算了以下统计信息:
由Pandas Profiling包计算出的统计信息包括直方图、众数、相关系数、分位数、描述统计量、其他信息——类型、单一变量值、缺失值等.
安装
用pip安装或者用conda安装
pip install pandas-profiling
conda install -c anaconda pandas-profiling
用法
下面代码是用很久以前的泰坦尼克数据集来演示多功能Python分析器的结果.
#importing the necessary packages
import pandas as pd
import pandas_profiling
df = pd.read_csv('titanic/train.csv')
pandas_profiling.ProfileReport(df)
一行代码就能实现在Jupyter Notebook中显示完整的数据分析报告,该报告非常详细,且包含了必要的图表信息.
还可以使用以下代码将报告导出到交互式HTML文件中.
profile = pandas_profiling.ProfileReport(df)
profile.to_file(outputfile="Titanic data profiling.html")
Pandas实现交互式作图
Pandas有一个内置的.plot()函数作为DataFrame类的一部分.但是,使用此功能呈现的可视化不是交互式的,这使得它没那么吸引人.同样,使用pandas.DataFrame.plot()函数绘制图表也不能实现交互. 如果我们需要在不对代码进行重大修改的情况下用Pandas绘制交互式图表怎么办呢?这个时候就可以用Cufflinks库来实现.
Cufflinks库可以将有强大功能的plotly和拥有灵活性的pandas结合在一起,非常便于绘图.下面就来看在pandas中如何安装和使用Cufflinks库.
pip install plotly
# Plotly is a pre-requisite before installing cufflinks
pip install cufflinks
#importing Pandas
#importing plotly and cufflinks in offline mode
import cufflinks as cf
import plotly.offline
cf.go_offline()
cf.set_config_file(offline=False, world_readable=True)
是时候展示泰坦尼克号数据集的魔力了.
df.iplot()
df.iplot() vs df.plot()
右侧的可视化显示了静态图表,而左侧图表是交互式的,更详细,并且所有这些在语法上都没有任何重大更改.
Magic命令
Magic命令是Jupyter notebook中的一组便捷功能,旨在解决标准数据分析中的一些常见问题.使用命令%lsmagic可以看到所有的可用命令.
所有可用的Magic命令列表
Magic命令有两种:行magic命令(line magics),以单个%字符为前缀,在单行输入操作;单元magic命令(cell magics),以双%%字符为前缀,可以在多行输入操作.如果设置为1,则不用键入%即可调用Magic函数.
此时此刻呢看一些在常见数据分析任务中可能用到的命令:
% pastebin
%pastebin将代码上传到Pastebin并返回url.Pastebin是一个在线内容托管服务,可以存储纯文本,如源代码片段,然后通过url可以与其他人共享.事实上,Github gist也类似于pastebin,只是有版本控制.
在file.py文件中写一个包含以下内容的python脚本,并试着运行看看结果.
#file.py
def foo(x):
return x
在Jupyter Notebook中使用%pastebin生成一个pastebin url.
%matplotlib notebook
函数用于在Jupyter notebook中呈现静态matplotlib图.用notebook替换inline,可以轻松获得可缩放和可调整大小的绘图.但记得这个函数要在导入matplotlib库之前调用.
%run
用%run函数在notebook中运行一个python脚本试试.
%run file.py
%%writefile
%% writefile是将单元格内容写入文件中.以下代码将脚本写入名为foo.py的文件并保存在当前目录中.
%%latex
%%latex函数将单元格内容以LaTeX形式呈现.此函数对于在单元格中编写数学公式和方程很有用.
查找并解决错误
交互式调试器也是一个神奇的功能,我把它单独定义了一类.如果在运行代码单元时出现异常,请在新行中键入%debug并运行它. 这将打开一个交互式调试环境,它能直接定位到发生异常的位置.还可以检查程序中分配的变量值,并在此处执行操作.退出调试器单击q即可.
Printing也有小技巧
如果您想生成美观的数据结构,pprint是首选.它在打印字典数据或JSON数据时特别有用.此时此刻呢看一个使用print和pprint来显示输出的示例.
让你的笔记脱颖而出
我们可以在您的Jupyter notebook中使用警示框/注释框来突出显示重要内容或其他需要突出的内容.注释的颜色取决于指定的警报类型.只需在需要突出显示的单元格中添加以下任一代码或所有代码即可.
蓝色警示框:信息提示
p class="alert alert-block alert-info"
bTip:/b Use blue boxes (alert-info) for tips and notes.
If it's a note, you don't have to include the word "Note".
/p
黄色警示框:警告
p class="alert alert-block alert-warning"
bExample:/b Yellow Boxes are generally used to include additional examples or mathematical formulas.
绿色警示框:成功
p class="alert alert-block alert-success"
红色警示框:高危
p class="alert alert-block alert-danger"
It is good to avoid red boxes but can be used to alert users to not delete some important part of code etc.
打印单元格所有代码的输出结果
假如有一个Jupyter Notebook的单元格,其中包含以下代码行:
单元格的正常属性是只打印最后一个输出,而对于其他输出,我们需要添加print()函数.然而通过在notebook顶部添加以下代码段可以一次打印所有输出.
添加代码后所有的输出结果就会一个接一个地打印出来.
恢复原始设置:
InteractiveShell.ast_node_interactivity = "last_expr"
使用'i'选项运行python脚本
从命令行运行python脚本的典型方法是:python hello.py.但是,如果在运行相同的脚本时添加-i,例如python -i hello.py,就能提供更多优势.此时此刻呢看看结果如何.
首先,即使程序结束,python也不会退出解释器.所以呢,我们可以检查变量的值和程序中定义的函数的正确性.
其次,我们可以轻松地调用python调试器,因为我们仍然在解释器中:
import pdb
pdb.pm()
这能定位异常发生的位置,然后我们可以处理异常代码.
自动评论代码
Ctrl / Cmd + /自动注释单元格中的选定行,再次命中组合将取消注释相同的代码行.
删除容易恢复难
你有没有意外删除过Jupyter notebook中的单元格?如果答案是肯定的,那么可以掌握这个撤消删除操作的快捷方式.
如果您删除了单元格的内容,可以通过按CTRL / CMD + Z轻松恢复它.
如果需要恢复整个已删除的单元格,请按ESC + Z或EDIT撤消删除单元格.
结论
在本文中,我列出了使用Python和Jupyter notebook时收集的一些小提示.我相信它们会对你有用,能让你有所收获,从而实现轻松编码!
① 常用函数库
scipy包中的stats模块和statsmodels包是python常用的数据分析工具,scipy.stats以前有一个models子模块,后来被移除了.这个模块被重写并成为了现在独立的statsmodels包.
scipy的stats包含一些比较基本的工具,比如:t检验,正态性检验,卡方检验之类,statsmodels提供了更为系统的统计模型,包括线性模型,时序分析,还包含数据集,做图工具等等.
(1) 用途
夏皮罗维尔克检验法 (Shapiro-Wilk) 用于检验参数提供的一组小样本数据线是否符合正态分布,统计量越大则表示数据越符合正态分布,但是在非正态分布的小样本数据中也经常会出现较大的W值.需要查表来估计其概率.由于原假设是其符合正态分布,所以当P值小于指定显著水平时表示其不符合正态分布.
正态性检验是数据分析的第一步,数据是否符合正态性决定了后续使用不同的分析和预测方法,当数据不符合正态性分布时,我们可以通过不同的转换方法把非正太态数据转换成正态分布后再使用相应的统计方法进行下一步操作.
科尔莫戈罗夫检验(Kolmogorov-Smirnov test),检验样本数据是否服从某一分布,仅适用于连续分布的检验.下例中用它检验正态分布.
方差反映了一组数据与其平均值的偏离程度,方差齐性检验用以检验两组或多组数据与其平均值偏离程度是否存在差异,也是很多检验和算法的先决条件.
最常用的两变量相关性分析,是用作图描述相关性,图的横轴是一个变量,纵轴是另一变量,画散点图,从图中可以直观地看到相关性的方向和强弱,线性正相关一般形成由左下到右上的图形;负面相关则是从左上到右下的图形,还有一些非线性相关也能从图中观察到.
从图中可以看到明显的正相关趋势.
皮尔森相关系数(Pearson correlation coefficient)是反应两变量之间线性相关程度的统计量,用它来分析正态分布的两个连续型变量之间的相关性.常用于分析自变量之间,以及自变量和因变量之间的相关性.
斯皮尔曼等级相关系数(Spearman's correlation coefficient for ranked data ),它主要用于评价顺序变量间的线性相关关系,在计算过程中,只考虑变量值的顺序(rank, 值或称等级),而不考虑变量值的大小.常用于计算类型变量的相关性.
返回结果的第一个值为相关系数表示线性相关程度,本例中correlation趋近于1表示正相关.第二个值为p-value,p-value越小,表示相关程度越显著.
单样本T检验,用于检验数据是否来自一致均值的总体,T检验主要是以均值为核心的检验.注意以下几种T检验都是双侧T检验.
由于比较两组数据是否来自于同一正态分布的总体.注意:如果要比较的两组数据不满足方差齐性, 需要在ttest_ind()函数中添加参数equal_var = False.
①.0. 配对样本T检验
配对样本T检验可视为单样本T检验的扩展,检验的对象由一群来自正态分布独立样本更改为二群配对样本观测值之差.它常用于比较同一受试对象处理的前后差异,或者按照某一条件进行两两配对分别给与不同处理的受试对象之间是否存在差异.
①.1. 单因素方差分析
方差分析(Analysis of Variance,简称ANOVA),又称F检验,用于两个及两个以上样本均数差别的显著性检验.方差分析主要是考虑各组之间的平均数差别.
单因素方差分析(One-wayAnova),是检验由单一因素影响的多组样本某因变量的均值是否有显著差异.
当因变量Y是数值型,自变量X是分类值,通常的做法是按X的类别把实例成分几组,分析Y值在X的不同分组中是否存在差异.
当有两个或者两个以上自变量对因变量产生影响时,可以用多因素方差分析的方法来进行分析.它不仅要考虑每个因素的主效应,还要考虑因素之间的交互效应.
上面介绍的T检验是参数检验,卡方检验是一种非参数检验方法.相对来说,非参数检验对数据分布的要求比较宽松,并且也不要求太大数据量.卡方检验是一种对计数资料的假设检验方法,主要是比较理论频数和实际频数的吻合程度.常用于特征选择,比如,检验男人和女人在是否患有高血压上有无区别,如果有区别,则说明性别与是否患有高血压有关,在后续分析时就需要把性别这个分类变量放入模型训练.
基本数据有R行C列, 故通称RC列联表(contingency table), 简称RC表,它是观测数据按两个或更多属性(定性变量)分类时所列出的频数表.
单变量统计描述是数据分析中最简单的形式,其中被分析的数据只包含一个变量,不处理原因或关系.单变量分析的主要目的是通过对数据的统计描述了解当前数据的基本情况,并找出数据的分布模型.
单变量数据统计描述从集中趋势上看,指标有:均值,中位数,分位数,众数;从离散程度上看,指标有:极差、四分位数、方差、标准差、协方差、变异系数,从分布上看,有偏度,峰度等.需要考虑的还有极大值,极小值(数值型变量)和频数,构成比(分类或等级变量).
此外,还可以用统计图直观展示数据分布特征,如:柱状图、正方图、箱式图、频率多边形和饼状图.
多元线性回归模型(multivariable linear regression model ),因变量Y(计量资料)往往受到多个变量X的影响,多元线性回归模型用于计算各个自变量对因变量的影响程度,可以认为是对多维空间中的点做线性拟合.