Python数据分析之路| 入门起航篇

浏览: 1438

这是菜鸟学Python的第78篇原创文章

阅读本文大概需要4分钟

      前面经过70几篇的文章,我们的入门篇基本结束了,相信很多小伙伴的基本功应该练的差不多了,可以蛟龙出海了,基本功连扎实了,对后面深入学Python非常有好处,Python有两个非常有趣的方向,一条是数据分析,然后掌握数据分析的基本方法(NumPy,Pandas,mapplotlib),然后再往下就是数据挖掘,机器学习,深度学习,人工智能,另外一条就是web开发.有同学说爬虫呢,爬虫其实是获取数据的一个手段,包括数据库的处理等等都是包含在上面两条线路里面,个人对数据分析比有兴趣,接下来会写一些数据分析,数据可视化,Python进阶,算法等相关的文章.

Clipboard Image.png

1.数据分析工具

  • 工欲善其事,必先利其器,网上有很多关于数据分析的文章,相信大家一定听过R语言和Python之争,而且各有千秋,R语言在学术界更流行,但是在做项目上面我个人比较喜欢Python,Python更通用,更简洁,文档也很多,而且有大量的库特别是Google,Facebook都开源了很多功能强大的库,非常不错.所以语言我们选Python.


  • 开发工具的话,建议大家用Anaconda,是一个强大的科学计算的Python发行版,首推数据分析开发工具.支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。


    推荐使用里面的spyder和Jupyter Notebook非常不错,界面美观而且调试方便

  • 2.数据分析的库

    Python数据分析这么流行,其中跟两个第三方的库非常相关,一个是Numpy,一个是Pandas,这两个库如果你要做数据分析,必须要熟练掌握使用~~

    • Numpy偏数组多一点,特别是多维数组,矩阵,非常灵活方便.内置了大量的矩阵的操作,对于科学计算来说简直就是神器.


    • Pandas偏series多一点,而且跟时序相关,内置了大量库和一些标准的数据模型,特别是对于大型的数据的处理,非常的高效和快捷.


    • 比如对于一个1000万行的CVS数据的处理,用字典去处理大概需要60几秒,而pandas只需要4秒,而且代码行更少.以后我们会用实战例子去证明这一点


    当然上面都是一些入门必学技能,继续修炼的话需要了解大数据的处理,以及一些机器学习的库sk-learn和深度学习的一些框架

    Clipboard Image.png

    3.什么是NumPy

    1).Numpy全称叫Numeric Python,听名字就知道跟数值有关,没错numpy,提供了许多高级的数值编程工具,如:矩阵运算、多维数组,矢量运算,线性代数,随机数的生成,均方差等这些科学计算操作非常方便.

    2).Ndarray 对象

    Numpy里面有一个最最有名的Ndarray对象,几乎所有的操作都围绕这个Ndarray来,也叫多维数组.

    数组是主流语言的标配数据结构,Python中的列表其实也是这样的一种数据结构,但是列表跟数组不一样;比如列表的元素可以是任意的类型,列表需要保存每个对象的指针和对象,很浪费内存空间,而且不支持多维数组

    Ndarray会支持多维数组,而且数组之间的转换非常方面,内置了很多高效的内建函数,都是用C写的,有利于节省内存和提高CPU的计算时间.比如需要计算一百万数据的正弦函数用numpy比python里的标准函数要快近10倍~~

    4.Ndarray和Python list的相似之处


    import numpy
    n1=numpy.array(['AA','BB','CC','DD','EE'])
    list1=['AA','BB','CC','DD','EE']

    a).都可以通过下标去访问

    print n1[0]
    >>'AA'
    print list1[0]
    >>'AA'

    b).都可以切片去访问

    n1=numpy.array(['AA','BB','CC','DD','EE'])
    list1=['AA','BB','CC','DD','EE']
    print n1[1:3]
    >>['BB' 'CC']
    print list1[1:3]
    >>['BB', 'CC']
    c).都可以用循环处理
    n1=numpy.array([1,2,3,4])
    for n in n1:
    print n
    >>
    1
    2
    3
    4

    5.Ndarray和Python list的不同之处

    a).Ndarray里面的元素必须是同一种类型

    (int,float,string_,bool, ...)
    要么都是int,要么都是float,要么都是字符串
    n1=np.array(['a','b','c',100])
    >>
    ['a' 'b' 'c' '100']

    因为ndarray要求所以的类型必须一样,你会发现100变成了字符串'100'

    b).矢量运算

    比如相加

    a1=np.array([1,2,3])
    a2=np.array([4,5,6])
    print a1+a2
    >>[5,7,9]

    而类似的加操作在list中

    list1=[1,2,3]
    list2=[4,5,6]
    print list1+list2
    >>[1,2,3,4,5,6]

    比如相乘

    a1=np.array([1,2,3])
    print a1*3
    >>[3,6,9]


    而类似的操作在list中

    a1=[1,2,3]
    print a1*3
    >>[1,2,3,1,2,3,1,2,3]


    比如乘方

    先产生3*3矩阵,每个数字都是0-9之间

    arr1=np.random.randint(0,10,(3,3))
    print arr1
    >>
    [[6 7 5]
     [9 6 0]
     [5 5 9]]

    arr2=arr1**2
    print arr2
    >>
    [[36 49 25]
     [81 36  0]
     [25 25 81]]

    c).内置了一些通用(ufunc)函数

    比如max(),min(),argmax(),argmin(),mean()计算中位数,std()计算均方差等函数

    留一个思考题

    题目一:

    a=np.array([1,2,3,4,5])
    b=a 
    a+=np.array([1,1,1,1,1])
    print b

    题目二:

    a=np.array([1,2,3,4,5])
    b=a 
    a=a+np.array([1,1,1,1,1])
    print b

    看看题目一和题目二的print b的结果是什么,会一样吗?


    Python数据分析起航篇就讲到这里,是不是觉得numpy蛮强大的~~这只是开始,今天的文章希望能给初学者一些启发,若有什么不懂的,也可以留言跟我探讨交流.后面一篇会介绍numpy的一些高级用法,以及一些实战例子来综合运用.

     长按二维码,关注【菜鸟学python】

    来源 | 菜鸟学Python

    作者 | xinxin

    本文章为菜鸟学Python独家原创稿件,未经授权不得转载



    推荐 1
    本文由 菜鸟学Python 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
    转载、引用前需联系作者,并署名作者且注明文章出处。
    本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

    0 个评论

    要回复文章请先登录注册