前言
- Python VS R 语言(原文:https://mp.weixin.qq.com/s/CAsVeEJlgru85NUHcUKv6A):
- 什么是R语言?
R语言,一种自由软件编程语言与操作环境,主要用于统计分析、绘图、数据挖掘。R基于S语言的一个GNU计划项目,所以也可以当作S语言的一种实现。 - Python与R语言共同特点
- Python和R在数据分析和数据挖掘方面都有比较专业和全面的模块,很多常用的功能,比如矩阵运算、向量运算等都有比较高级的用法
- Python和R两门语言有多平台适应性,linux、window都可以使用,并且代码可移植性强
- Python和R比较贴近MATLAB以及minitab等常用的数学工具
- Python与R语言区别
- 数据结构方面,由于是从科学计算的角度出发,R中的数据结构非常的简单,主要包括向量(一维)、多维数组(二维时为矩阵)、列表(非结构化数据)、数据框(结构化数据)。而 Python 则包含更丰富的数据结构来实现数据更精准的访问和内存控制,多维数组(可读写、有序)、元组(只读、有序)、集合(唯一、无序)、字典(Key-Value)等等。
- Python与R相比速度要快。Python可以直接处理上G的数据;R不行,R分析数据时需要先通过数据库把大数据转化为小数据(通过groupby)才能交给R做分析,因此R不可能直接分析行为详单,只能分析统计结果。
- Python是一套比较平衡的语言,各方面都可以,无论是对其他语言的调用,和数据源的连接、读取,对系统的操作,还是正则表达和文字处理,Python都有着明显优势。 而R是在统计方面比较突出。
- 总结
总的来说,Python 的 pandas 借鉴了R的dataframes,R 中的 rvest 则参考了 Python的BeautifulSoup,两种语言在一定程度上存在互补性,通常,我们认为 Python 比 R 在计算机编程、网络爬虫上更有优势,而 R 在统计分析上是一种更高效的独立数据分析工具。所以说,同时学会Python和R这两把刷子才是数据科学的王道。
- 什么是R语言?
python其实是可以直接调用R语言的函数的,只需要安装rpy2模块即可。
matplotlib
提到数据分析,就不得不考虑到数据分析后的展示,Matplotlib是一个Python 2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。
至于matplotlib的安装,可以通过 Anaconda来安装,相关操作不多赘述。
折线图示例
相关api在代码中都有注释
代码如下:
1 | # coding=utf-8 |
其他图形示例
绘制其他图形的api和折线图几乎相同,程序参考上面就可以,下面列举一下api以供参考
其中 x,y为x和y轴的列表
- 散点图
- plt.scatter(x,y)
- 条形图
- plt.bar(x,y,width=’0.3’) #width为设置线条的粗细
- plt.hbar(x,y,height=’0.3’) #绘制横向的条形图,height为横向线条的粗细
- 通过设置 xticks可以实现数字和字符串的相对应
- 直方图
- plt.hist(a,num_bins,normed = True) #a为数据列表,num_bins为数据分为多少组,normed用来设置是否是频率直方图。
- 组数 = 极差/组距 = (max(a) - min(a))/自己设置的组距,注:最大值-最小值的结果一定要能被组距整除,不然图像会出现偏差
- 当组距不均匀时,plt.hist(a,[min(a)+i*组距 for i in range(组数)]),也就是可以传入一个列表,长度为组数,值为分组的依据
- 小技巧,设置x轴刻度:plt.xticks(range(min(a),man(a)+d,d)) ,因为range是去[),所以最后不加d的话会导致最后一个刻度丢失
- plt.hist(a,num_bins,normed = True) #a为数据列表,num_bins为数据分为多少组,normed用来设置是否是频率直方图。
- more
- matplotlib官网中有很多例子,网址:https://matplotlib.org/gallery/index.html ,需要的时候可根据问题自行查找。
其他的一些绘制工具
- 百度的一个前端框架echarts:https://www.echartsjs.com/index.html ,讲道理确实很炫酷。可动态交互
- python的图形库plotly:https://plot.ly/python/ , 可以在线生成交互式、高质量的图形。可动态交互
- Seaborn,基于matplotlib的Python数据可视化库:http://seaborn.pydata.org/ 。 静态
Numpy
什么是Numpy
NumPy系统是Python的一种开源的数值计算扩展,是python科学计算的基础包。这种工具可用来存储和处理大型矩阵,具有快速高效的多维数组对象ndarray,比Python自身的嵌套列表(nested list structure)结构要高效的多。NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。可以用来处理线性代数运算、傅里叶变换以及随机数生成等。
下面列出了一些列numpy常用的API可供参考:
1 | # coding = utf-8 |
pandas
为什么需要pandas?
numpy能够帮我们处理数值型数据,但这样还不足以满足需求,有时候还需要处理字符串、时间序列等。不过pandas的数值处理模块也是基于numpy的。
什么是pandas?
pandas 是是python的一个数据分析包、基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。对于金融行业的用户,pandas提供了大量适用于金融数据的高性能时间序列功能和工具。
pandas的数据结构:
- Series:带标签(索引)的一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
- Time- Series:以时间为索引的Series。
- DataFrame:二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。
- Panel :三维的数组,可以理解为DataFrame的容器。
pandas的相关用法如下:
1 | # coding = 'utf-8' |
写到这里
先上一张python数据分析的知识框架
其中有一些还没有写到,也不打算继续挖坑了,暂且记录在下面:
- Scipy
- Scipy是一组专门解决科学计算中各种标准问题域的包的集合。
- statsmodels
- scikit-learn
这段时间大概了解了一下python数据分析的知识框架,写的不是很详细,这里有一篇更详细的文章写得不错先mark一下:https://www.cnblogs.com/nxld/p/6058998.html