读书报告
- numpy
概念:
Python本身含有列表和数组,但对于大数据来说,这些结构是有很多不足的。由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。对于数值运算来说这种 结构比较浪费内存和CPU资源。至于数组对象,它可以直接保存 数值,和C语言的一维数组比较类似。但是由于它不支持多维,在上面的函数也不多,因此也不适合做数值运算。Numpy提供了两种基本的对象:ndarray(N-dimensional Array Object)和 ufunc(Universal Function Object)。ndarray是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。
功能:
- 创建n维数组(矩阵)
- 对数组进行函数运算,使用函数计算十分快速,节省了大量的时间,且不需要编写循环,十分方便
- 数值积分、线性代数运算、傅里叶变换
- ndarray快速节省空间的多维数组,提供数组化的算术运算和高级的 广播功能。1.3 对象
- NumPy中的核心对象是ndarray
- ndarray可以看成数组,存放 同类元素
- NumPy里面所有的函数都是围绕ndarray展开的ndarray 内部由以下内容组成:
• 一个指向数据(内存或内存映射文件中的一块数据)的指针。
• 数据类型或 dtype,描述在数组中的固定大小值的格子。
• 一个表示数组形状(shape)的元组,表示各维度大小的元组。形状为(row×col)
numpy的基本用法:
NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库
scipy:
Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。
它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。
Pandas:
基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。最具有统计意味的工具包,某些方面优于R软件。数据结构有一维的Series,二维的DataFrame(类似于Excel或者SQL中的表,如果深入学习,会发现Pandas和SQL相似的地方很多,例如merge函数),三维的Panel(Pan(el) + da(ta) + s,知道名字的由来了吧)。
1.汇总和计算描述统计,处理缺失数据 ,层次化索引
2.清理、转换、合并、重塑、GroupBy技术
3.日期和时间数据类型及工具(日期处理方便地飞起)
Matplotlib:
Python中最著名的绘图系统,很多其他的绘图例如seaborn(针对pandas绘图而来)也是由其封装而成。
绘制的图形可以大致按照ggplot的颜色显示,但是还是感觉很鸡肋。但是matplotlib的复杂给其带来了很强的定制性。其具有面向对象的方式及Pyplot的经典高层封装。
需要掌握的是:
1.散点图,折线图,条形图,直方图,饼状图,箱形图的绘制。
2.绘图的三大系统:pyplot,pylab(不推荐),面向对象
3.坐标轴的调整,添加文字注释,区域填充,及特殊图形patches的使用
4.金融的同学注意的是:可以直接调用Yahoo财经数据绘图
利用numpy做曲线拟合
import numpy as np import scipy as sp import matplotlib as mpl import matplotlib.pyplot as plt #导入线多项式拟合工具: from numpy import polyfit, poly1d x = np.linspace(-5, 5, 100) y = 4 * x + 1.5 noise_y = y + np.random.randn(y.shape[-1]) * 2.5 coeff = polyfit(x, noise_y, 1) p = plt.plot(x, noise_y, 'rx') p = plt.plot(x, coeff[0] * x + coeff[1], 'k-') p = plt.plot(x, y, 'b--') #还可以用 poly1d 生成一个以传入的 coeff 为参数的多项式函数: #f = poly1d(coeff) #p = plt.plot(x, noise_y, 'rx') #p = plt.plot(x, f(x))

pandas的操作
import pandas as pda # 使用pandas生成数据 # Series代表某一串数据 index指定行索引名称,Series索引默认从零开始 # DataFrame代表行列整合出来的数据框,columns 指定列名 a = pda.Series([8, 9, 2, 1], index=['one', 'two', 'three', 'four']) # 以列表的格式创建数据框 b = pda.DataFrame([[5,6,2,3],[3,5,1,4],[7,9,3,5]], columns=['one', 'two', 'three', 'four'],index=['one', 'two', 'three']) # 以字典的格式创建数据框 c = pda.DataFrame({ 'one':4, # 会自动补全 'two':[6,2,3], 'three':list(str(982)) }) # b.head(行数)# 默认取前5行头 # b.tail(行数)# 默认取后5行尾 # b.describe() 统计数据的情况 count mean std min 25% max e = b.head() f = b.describe() # 数据的转置,及行变成列,列变成行 g = b.T print(e) print(f) print(g)

matplotlib的使用
# 折线图/散点图用plot # 直方图用hist import matplotlib.pylab as pyl import numpy as npy x = [1,2,4,6,8,9] y = [5,6,7,8,9,0] pyl.plot(x, y) #plot(x轴数据,y轴数据,展现形式) # o散点图,默认是直线 c cyan青色 r red红色 m magente品红色 g green绿色 b blue蓝色 y yellow黄色 w white白色 # -直线 --虚线 -. -.形式 :细小虚线 # s方形 h六角形 *星星 + 加号 x x形式 d菱形 p五角星 pyl.plot(x, y, 'D') pyl.title('name') #名称 pyl.xlabel('xname') #x轴名称 pyl.ylabel('yname') #y轴名称 pyl.xlim(0,20) #设置x轴的范围 pyl.ylim(2,22) #设置y轴的范围 pyl.show() # 随机数的生成 data = npy.random.random_integers(1,20,100) #(最小值,最大值,个数) # 生成具有正态分布的随机数 data2 = npy.random.normal(10.0, 1.0, 10000) #(均值,西格玛,个数) # 直方图hist pyl.hist(data) pyl.hist(data2) # 设置直方图的上限下限 sty = npy.arange(2,20,2) #步长也表示直方图的宽度 pyl.hist(data, sty, histtype='stepfilled') # 去除轮廓 # 子图的绘制和使用 pyl.subplot(2, 2, 2) # (行,列,当前区域) x1 = [2,3,5,8,6,7] y1 = [2,3,5,9,6,7] pyl.plot(x1, y1) pyl.subplot(2, 2, 1) # (行,列,当前区域) x1 = [2,3,5,9,6,7] y1 = [2,3,5,9,6,7] pyl.plot(x1, y1) pyl.subplot(2, 1, 2) # (行,列,当前区域) x1 = [2,3,5,9,6,7] y1 = [2,3,9,5,6,7] pyl.plot(x1, y1) pyl.show()


浙公网安备 33010602011771号