学习《用Python玩转数据》课程总结

最近学习了慕课网上的《用Python玩转数据》,写个总结,顺便再梳理一下。

总的来说,这个课程是比较好的入门引导,讲的比较浅显,但是都点到了,对于一个小白来说,算是打开了一扇大门,至于更深一步的内容就要靠自己了。

 玩转数据分两步:

1、数据的获取,包括本地数据和网络数据;

2、数据整理、描述、分析

一、数据的获取

1.1 本地数据获取

常用函数:open,read,write,readline,readlines,writelines,close,seek

可以对txt,csv,excel文件进行读写操作,每个函数又有很多个参数,可以根据不同需求选择

1.2 网络数据的获取

  • uillib.request
  • Requests第三方库
  • Scrapy框架

课程中介绍的是requests库,使用非常简便

import requests
r = requests.get(url)

这样就可以抓取网页的信息,存储到变量r中,以进行下一步的分析。

网页的解析常用的是:

  • BeautifulSoup库
  • re模块

BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库,使用方法详见官方网站https://www.crummy.com/software/BeautifulSoup/bs4/doc/

 

二、扩展库- Scipy(https://www.scipy.org/

对于科学工程领域更高级的要求,Python提供了开源的Scipy扩展库,包括下面几个核心包,功能强大。

2.1 Numpy库(http://www.numpy.org/

  • 强大的ndarray对象和ufunc函数
  • 比较适合线性代数和随机数处理等科学计算
  • 有效的通用多位数据,可定义任意数据类型
  • 无缝对接数据库

2.2 SciPy库

  •  Python中科学计算程序的核心包
  • 有效计算numpy矩阵,让Numpy和Scipy协同工作
  • 致力于科学计算中常见问题的各个工具箱,其不同子模块有不同的应用,如插值、积分、优化和图像处理等。

2.3 Matplotlib库(http://matplotlib.org/

  • 基于Numpy
  • 二维绘图库,简单快速生成曲线图,直方图和散点图等形式的图
  • 常用的pyplot是一个简单提供类似matlab接口的模块

2.4 pandas库(http://pandas.pydata.org/

  • 基于Scipy和Numpy
  • 高效的Series和Dataframe结构数据库
  • 强大的可扩展数据操作与分析的Python库
  • 高效梳理大数据集的切片等功能
  • 提供优化库功能读写多种文件格式,如csv,HDF5等

 三、Python中常用的数据结构

Python常用的数据结构有字典(dic)、元组(tuple)、列表(list)、集合(set),详见另一篇文章:http://www.cnblogs.com/sharon123/p/7090001.html

Scipy中的数据结构是Python原有数据结构变化,有N维数组(ndarray)、变长字典(Series)、数据框(Dataframe)

3.1 ndarray

ndarray是Numpy的基本数据机构,所有元素是同一种类型,拥有丰富的函数。

ndarray的创建示例:

>>> import numpy as np
>>> a = np.array([1,2,3])
>>> a
array([1, 2, 3])
>>> np.arange(1,5,0.5)
array([ 1. ,  1.5,  2. ,  2.5,  3. ,  3.5,  4. ,  4.5])
>>> np.random.random((2,2))
array([[ 0.67516447,  0.21711136],
       [ 0.96711409,  0.24275549]])
>>> np.linspace(1,2,10,endpoint=False)
array([ 1. ,  1.1,  1.2,  1.3,  1.4,  1.5,  1.6,  1.7,  1.8,  1.9])
>>> np.ones([2,3])
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])
>>> np.zeros((2,2))
array([[ 0.,  0.],
       [ 0.,  0.]])

除此之外,还可以用:

ndarray的基本数组统计方法:

线性代数常用函数:

ndarray的ufunc函数是一种能对数组的每个元素进行操作的函数,Numpy内置的许多ufunc函数都是在C语言级别实现的,计算速度非常快。

3.2 Series

类似一维数组,有数据和索引构成,索引能够自己定义

>>> from pandas import Series
>>> import pandas as pd
>>> a = pd.Series([1,2.0,'a'])
>>> a
0    1
1    2
2    a
dtype: object
>>> b = pd.Series(['apple','peach','lemon'],index=[1,2,3])
>>> b
1    apple
2    peach
3    lemon
dtype: object
>>> b.index
Int64Index([1, 2, 3], dtype='int64')
>>> b.values
array(['apple', 'peach', 'lemon'], dtype=object)
>>> c = pd.Series([3,5,7],index=['a','b','c'])
>>> c['b']
5
>>> c*2
a     6
b    10
c    14
dtype: int64

3.3 Dataframe

Datafame是一个表格型的数据结构,含有一组有序的列,可以看成共享同一个index的Series集合

'''创建DataFrame'''
>>> import pandas as pd
>>> from pandas import DataFrame
>>> data = {'name': ['Wangdachui', 'Linling', 'Niuyun'], 'pay': [4000, 5000, 6000]}
>>> frame=pd.DataFrame(data)
>>> frame
         name   pay
0  Wangdachui  4000
1     Linling  5000
2      Niuyun  6000

>>> data=np.array([('Wangdachui', 4000), ('Linling', 5000), ('Niuyun', 6000)])
>>> frame =pd.DataFrame(data, index = range(1, 4), columns = ['name', 'pay'])
>>> frame
         name   pay
1  Wangdachui  4000
2     Linling  5000
3      Niuyun  6000

'''DataFrame 列获取'''
>>> frame['name']
1    Wangdachui
2       Linling
3        Niuyun
Name: name, dtype: object

>>> frame['pay']
1    4000
2    5000
3    6000
Name: pay, dtype: object

'''DataFrame 列切片'''
>>> frame.iloc[:2,1]
1    4000
2    5000
Name: pay, dtype: object

'''DataFrame 对象修改'''
>>> frame['name']='admin'
>>> frame
    name   pay
1  admin  4000
2  admin  5000
3  admin  6000

'''DataFrame 对象删除'''
>>> del frame['pay']
>>> frame
    name
1  admin
2  admin
3  admin

四、用Python做机器学习(http://scikit-learn.org/stable/

scikit-learn

  • Simple and efficient tools for data mining and data analysis
  • Accessible to everybody, and reusable in various contexts
  • Built on NumPy, SciPy, and matplotlib
  • Open source, commercially usable - BSD license

 

 

posted @ 2017-08-16 20:52  S的数据之路  阅读(644)  评论(0编辑  收藏  举报