社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

中国统计网 • 9 年前 • 1060 次点击  


Python有两个非常有趣的方向,一条是数据分析,然后掌握数据分析的基本方法(NumPy,Pandas,mapplotlib),然后再往下就是数据挖掘,机器学习,深度学习,人工智能,另外一条就是web开发。


数据分析准备工作



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和深度学习的一些框架


初探numpy


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的结果是什么,会一样吗?


End.

来源 | 菜鸟学Python

作者 | xinxin


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/IQ7ptsgV7r
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/2814