读书报告

  1. 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()

 

 

posted @ 2023-12-16 16:27  Roycute  阅读(1)  评论(0)    收藏  举报