1. Getting started with Python for science1.1. Scientific computing with tools and workflow1.2. The Python language1.3. NumPy: creating and manipulating numerical data1.4. Matplotlib: plotting1.5. Scipy : high-level scientific computing1.6. Getting help and finding documentation
2. Advanced topics2.1. Advanced Python Constructs2.2. Advanced Numpy2.3. Debugging code2.4. Optimizing code2.5. Sparse Matrices in SciPy2.6. Image manipulation and processing using Numpy and Scipy2.7. Mathematical optimization: finding minima of functions2.8. Interfacing with C
3. Packages and applications3.1. Statistics in Python3.2. Sympy : Symbolic Mathematics in Python3.3. Scikit-image: image processing3.4. Traits: building interactive dialogs3.5. 3D plotting with Mayavi3.6. scikit-learn: machine learning in Python
回复 ( 10 )
总结一下自己学习,接触了Numpy,Pandas,Matplotlib,Scipy,Scikit-learn,也算是入门,给出自己的轨迹(略去安装),并总结一下其他人的答案,最后有彩蛋。
Numpy:
来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多,本身是由C语言开发。这个是很基础的扩展,其余的扩展都是以此为基础。数据结构为ndarray,一般有三种方式来创建。
快速入门:Quickstart tutorial
Pandas:
基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。最具有统计意味的工具包,某些方面优于R软件。数据结构有一维的Series,二维的DataFrame(类似于Excel或者SQL中的表,如果深入学习,会发现Pandas和SQL相似的地方很多,例如merge函数),三维的Panel(Pan(el) + da(ta) + s,知道名字的由来了吧)。学习Pandas你要掌握的是:
快速入门:10 Minutes to pandas
Matplotlib:
Python中最著名的绘图系统,很多其他的绘图例如seaborn(针对pandas绘图而来)也是由其封装而成。创世人John Hunter于2012年离世。这个绘图系统操作起来很复杂,和R的ggplot,lattice绘图相比显得望而却步,这也是为什么我个人不丢弃R的原因,虽然调用
Update: 17/3/29:
网站下线,之后以离线版HTML格式提供下载,见GitHub-release
最后,答主也同样是本科生,目前在漫漫的数据处理入门阶段。即为同行者,望共勉之! 希望对题主有帮助。
———————————————-
附上教程目录
1. Getting started with Python for science1.1. Scientific computing with tools and workflow1.2. The Python language1.3. NumPy: creating and manipulating numerical data1.4. Matplotlib: plotting1.5. Scipy : high-level scientific computing1.6. Getting help and finding documentation
2. Advanced topics2.1. Advanced Python Constructs2.2. Advanced Numpy2.3. Debugging code2.4. Optimizing code2.5. Sparse Matrices in SciPy2.6. Image manipulation and processing using Numpy and Scipy2.7. Mathematical optimization: finding minima of functions2.8. Interfacing with C
3. Packages and applications3.1. Statistics in Python3.2. Sympy : Symbolic Mathematics in Python3.3. Scikit-image: image processing3.4. Traits: building interactive dialogs3.5. 3D plotting with Mayavi3.6. scikit-learn: machine learning in Python
1、Python做数据挖掘很强大,最近几年很火的机器学习以及较为前沿的自然语言处理也会选用Python作为基础工具。下面是我之前写的一点Python数分挖掘的简单案例,代码均有,可以看下:你用 Python 做过什么有趣的数据挖掘/分析项目? – 据数的回答 写的简单且乱,轻拍!
2、楼主提到Python作图,提到了matplotlib库。其实楼主可以试一下seaborn,简单易上手而且结果美观:
首先,下载一个 anaconda,这是一个 Python 发行版,你需要用到的关于科学计算、数据处理的东西基本上都有了。
然后,去图书馆借一本《用 Python 做科学计算》忽略掉环境配置的部分,把里边关于 numpy 和 matplotlib 的内容看了。其他的部分根据自己需要选择阅读。一般来说每一个科学计算的库会自成一套体系,但是绝大多数都会基于 numpy,所以 numpy 必须学会。但是你也不用每个模块都用过,知道常用的函数和 numpy 的设计模式就好。matplotlib 是绝大多数绘图库的基础库,所以也绕不过去。
再然后,打开你需要的库的官网比如 pandas,一般都会有 getting started,先看完上个手。然后直接看 User Guide 或者 Tutorial。
之后根据自己的需求定向学习就好。每个第三方库都有自己内在的设计逻辑,比如 sklearn 就是围绕着 fit 和 predict 两个函数来做的,默认行向量是样本啦 pipline 啊之类的。pandas 核心就是 DataFrame 即就是带有 index 的 numpy 数组等等。学习一个库,重要的就是要学习这个库的内在的设计逻辑,这些一般都在 document 或者 User Guide 里边提了。并不需要每个功能/函数都记住,大致知道他有某方面的功能就好了,当你有某个功能的需求的时候猜一下然后直接 Google 就好。
比如我想求一个线性方程组的解,知道了内在逻辑闭上眼睛猜一下也知道这个函数不在 scipy 中就在 numpy 中,于是 Google 一下:solve linear equation numpy,第一条就是:
再比如,我想要合并两个 pandas 的表。闭上眼睛也知道 pandas 肯定有这个功能,数据库里边学过类似的操作叫做 Join,所以就 Google 一下:
看第二条结果,直接就是三个解决方案,读一读对比一下就好。
常用的函数查两遍之后你也就背下了,这样过一段时间的使用后基本上你就熟练了。对某个库有兴趣想要深入的话可以直接去看他的源代码。就酱紫,这就是所谓的系统方法~
之前有回答过类似的问题(用 Python 进行数据分析,不懂 Python,求合适的 Python 书籍或资料推荐?),再上来答一记。
系统地学习Python的数据分析库(Numpy、Scipy、Pandas等)是一个伪命题,真正有效的学习应该是基于数据分析实战。
脱离实战的学习如纸上谈兵,只有经历过实战的考验,才能真正掌握所学的内容。之前答主在学习这些库的时候,花费了大量的时间研读练习各种教程,但是在实际项目的过程中,仍然捉襟见肘,需要花费大量的时间查文档,去Google里搜答案。细想其中缘由,无非是因为表面上“系统”地学习了大量的函数和功能,但是如果不能学以致用,那就无法做到熟能生巧,融会贯通。
对于初学者来讲,第一步是根据教程,对这些库建立基本的认识。可以参考以下材料:
在建立基本认识之后,需要通过实战来进行强化,可以参考以下材料:
题主提到的其他问题,我的回答是:
Python做数据挖掘是否足够强大?
Python做数据挖掘强大,很强大,非常强大。大部分高科技公司的数据部门以Python和R为主,越来越多传统行业的数据部门也在进行Python数据分析的尝试。
学习数据挖掘需要学习哪些知识呢?
可以参考热帖:如何成为一名数据科学家? 数据挖掘是数据科学家应该具备的技能之一,大牛们已经给出了如何成为一名数据科学家的方法,照着做就可以了。
我是一个本科生,本科学习的话能从事数据挖掘相关工作吗?
能,但是比较难,需要有很出彩的地方。
又看到这个问题,答一记。
你只要有edu邮箱就可免费获取Enthought – Scientific Computing Solutions的教育版。他们家还有免费的培训课程Python Training on Demand,包括:
Python for Data Analysis (豆瓣)
先学这本书
然后去官网下载对应的refer,跟着做就好
系统的学习没啥意思,这些函数太多了,你工作中用不到的话即使学了也很快忘记
可以大致的过一遍,然后再项目中不断的翻refer
整理下这块的材料。
———————————————— matplotlib——————————————————————
matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。
Matplotlib中的pyplot子库提供了和matlab类似的绘图API.
折线图
多线图
柱状图
子图
文本添加
图例简介
———————————————— numpy——————————————————————
NumPy提供了大量的数值编程工具,可以方便地处理向量、矩阵等运算,极大地便利了人们在科学计算方面的工作。另一方面,Python是免费,相比于花费高额的费用使用Matlab,NumPy的出现使Python得到了更多人的青睐。
初窥NumPy对象:数组
NumPy中的基本对象是同类型的多维数组(homogeneous multidimensional array),这和C++中的数组是一致的,例如字符型和数值型就不可共存于同一个数组中。先上例子:
可以通过”type”函数查看a的类型,这里显示a是一个array:
<type ‘numpy.ndarray’>
通过函数”reshape”,我们可以重新构造一下这个数组,例如,我们可以构造一个4*5的二维数组,其中”reshape”的参数表示各维度的大小,且按各维顺序排列(两维时就是按行排列,这和R中按列是不同的):
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
既然a是array,我们还可以调用array的函数进一步查看a的相关属性:”ndim”查看维度;”shape”查看各维度的大小;”size”查看全部的元素个数,等于各维度大小的乘积;”dtype”可查看元素类型;”dsize”查看元素占位(bytes)大小。
[0, 1)区间的随机数数组:
数组操作
简单的四则运算已经重载过了,全部的’+’,’-‘,’*’,’/’运算都是基于全部的数组元素的,以加法为例:
需要知道二维数组的最大最小值怎么办?想计算全部元素的和、按行求和、按列求和怎么办?for循环吗?不,NumPy的ndarray类已经做好函数了:
数组和矩阵元素的访问可通过下标进行,以下均以二维数组(或矩阵)为例:
可使用where函数查找特定值在数组中的位置:
数组操作
numpy函数更多可以参考Numpy_Example_List更多操作参考优矿
———————————————— pandas——————————————————————
在处理实际的金融数据时,一个条数据通常包含了多种类型的数据,例如,股票的代码是字符串,收盘价是浮点型,而成交量是整型等。在C++中可以实现为一个给定结构体作为单元的容器,如向量(vector,C++中的特定数据结构)。在Python中,pandas包含了高级的数据结构Series和DataFrame,使得在Python中处理数据变得非常方便、快速和简单。
具体案例和操作参考文献:
pandas: powerful Python data analysis toolkit
优矿
ppt和论文的图表都用pyplot做
Python for Data Analysis (豆瓣)
Data Science from Scratch (豆瓣)