zoukankan      html  css  js  c++  java
  • 利用python进行数据分析——(一)库的学习

    总结一下自己对python常用包:Numpy,Pandas,Matplotlib,Scipy,Scikit-learn

    一. Numpy:

    标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指 针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。

    此外Python还提供了一个array模块,array对象和列表不同,它直接保存数值,和C语言的一维数组比较类似。但是由于它不支持多维,也没有各种运算函数,因此也不适合做数值运算。

    NumPy的诞生弥补了这些不足,NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray(下文统一称之为数组)是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。


    1 import numpy as np
    用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多,本身是由C语言开发。这个是很基础的扩展,其余的扩展都是以此为基础。数据结构为ndarray。
    主要需要掌握的内容有四个:
    • ndarry对象的创建
    • ufunc运算
    • 矩阵的计算
    • 文件存

    参见博客:http://old.sebug.net/paper/books/scipydoc/numpy_intro.html


    二. Pandas:


    基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。最具有统计意味的工具包,某些方面优于R软件。
     
    数据结构:有一维的Series,二维的DataFrame(类似于Excel或者SQL中的表,如果深入学习,会发现Pandas和SQL相似的地方很多,例如merge函数),三维的Panel(Pan(el) + da(ta) + s,知道名字的由来了吧)。学习Pandas你要掌握的是:

    1. 汇总和计算描述统计,处理缺失数据 ,层次化索引
    2. 清理、转换、合并、重塑、GroupBy技术
    3. 日期和时间数据类型及工具(日期处理方便地飞起)

    参见博客:http://www.cnblogs.com/chaosimple/p/4153083.html

    三. Matplotlib:


    Python中最著名的绘图系统,很多其他的绘图例如seaborn(针对pandas绘图而来)也是由其封装而成。创世人John Hunter于2012年离世。这个绘图系统操作起来很复杂,和R的ggplot,lattice绘图相比显得望而却步,这也是为什么我个人不丢弃R的原因,虽然调用
    plt.style.use("ggplot")
    
    绘制的图形可以大致按照ggplot的颜色显示,但是还是感觉很鸡肋。但是matplotlib的复杂给其带来了很强的定制性。其具有面向对象的方式及Pyplot的经典高层封装。
    需要掌握的是:
    1. 散点图,折线图,条形图,直方图,饼状图,箱形图的绘制。
    2. 绘图的三大系统:pyplot,pylab(不推荐),面向对象
    3. 坐标轴的调整,添加文字注释,区域填充,及特殊图形patches的使用
    4. 金融的同学注意的是:可以直接调用Yahoo财经数据绘图(真。。。)

    参见网站:http://old.sebug.net/paper/books/scipydoc/matplotlib_intro.html


    四. Scipy:


    方便、易于使用、专为科学和工程设计的Python工具包.它包括统计,优化,整合,线性代数模块,傅里叶变换,信号和图像处理,常微分方程求解器等等。

    基本可以代替Matlab,但是使用的话和数据处理的关系不大,数学系,或者工程系相对用的多一些。(略)
    近期发现有个statsmodel可以补充scipy.stats,时间序列支持完美

    五. Scikit-learn:


    关注机器学习的同学可以关注一下,很火的开源机器学习工具,这个方面很多例如去年年末Google开源的TensorFlow,或者Theano,caffe(贾扬清),Keras等等,这是另外方面的问题。
    主页:An introduction to machine learning with scikit-learn

    图书:
    1. 《10 minutes to pandas》中文翻译版本:http://www.cnblogs.com/chaosimple/p/4153083.html
    2. Pandas的创始者:利用Python进行数据分析 (豆瓣)(力荐)
    3. 教材的集合:Scipy Lecture Notes(写的非常棒!遗憾缺少Pandas)
    4. 提升自己:机器学习实战 (豆瓣)

    视频:
    1. Numpy入门:
    2. Pandas视频讲解:pandas课程介绍
    3. Matplotlib讲解:课程简介和环境搭建
    4. Scipy入门:
  • 相关阅读:
    BZOJ 2190: [SDOI2008]仪仗队
    BZOJ 3195: [Jxoi2012]奇怪的道路
    【BZOJ-1068】压缩 区间DP
    【BZOJ-1103】大都市meg 树状数组 + DFS序
    【BZOJ-4326】运输计划 树链剖分 + 树上差分 + 二分
    【BZOJ-3721】Final Bazarek 贪心
    【BZOJ-4690】Never Wait For Weights 带权并查集
    【BZOJ-2503】相框 并查集 + 分类讨论
    【BZOJ-3653】谈笑风生 DFS序 + 可持久化线段树
    【BZOJ-3252】攻略 DFS序 + 线段树 + 贪心
  • 原文地址:https://www.cnblogs.com/lesleysbw/p/6002124.html
Copyright © 2011-2022 走看看