numpy、scipy、pandas、matplotlib的读书报告

由信计1班 01 创作此文

目录

一、基本函数的用法

二、具体问题的解决方案

三、图像分析

四、总结



一、基本函数的用法

(1)NumPy

*多维数组:NumPy提供了强大的多维数组对象(ndarray),用于存储和操作数据。这些数组可以是高维的,通常用于科学计算和数据分析。

*基本操作:包括创建数组、数组运算、线性代数、傅里叶变换和随机数生成等功能。

numpy库常用的数组创建函数
np.array([x,y,z],dtype=int)从Python列表和元组创造数组
np.arange(x,y,i)创建一个由x到y,以i为步长的数组
np.linspace(x,y,n)创建一个由x到y,等分成n个元素的数组
np.indices((m,n))创建一个m行n列的矩阵
np.random.rand(m,n)创建一个m行n列的随机数组
np.ones((m,n),dtype)

创建一个m行n列全1的数组,dtype是数据类型

np.empty((m,n),dtype)创建一个m行n列全0的数组,dtype是数据类型 

(2)Pandas

*DataFrame:Pandas的核心数据结构是DataFrame,它类似于Excel表格,可以进行复杂的数据处理和分析。

*索引和切片:Pandas提供了灵活的索引功能,可以方便地完成重塑、切片和聚合等操作。

数据导入
pd.read_csv(filename)从CSV文件导入数据
pd.read_table(filename)从限定分隔符的文本文件导入数据
pd.read_excel(filename)从Excel文件导入数据
pd.read_sql(query, connection_object)从SQL表/库导入数据
pd.read_json(json_string)从JSON格式的字符串导入数据
pd.read_html(url)解析URL、字符串或者HTML文件
pd.read_clipboard()从粘贴板获取内容
pd.DataFrame(dict)从字典对象导入数据 
数据导出
df.to_csv(filename)导出数据到CSV文件
df.to_excel(filename)导出数据到Excel文件
df.to_sql(table_name, connection_object)导出数据到SQL表
df.to_json(filename)以Json格式导出数据到文本文件

创建对象
pd.DataFrame(np.random.rand(20,5))创建20行5列的随机数组成的DataFrame对象
pd.Series(my_list)从可迭代对象my_list创建一个Series对象
df.index = pd.date_range('1900/1/30', periods=df.shape[0])增加一个日期索引 

(3)Matplotlib

*绘图功能:Matplotlib是Python中最流行的绘图库,支持创建各种类型的静态、交互式和动态图形,如折线图、柱状图、散点图等。

*基本绘图:包括基本简介、基础绘图功能演示、图像保存、xy轴刻度添加、网格显示等。

 

(4)Scipy

*科学计算:Scipy基于NumPy,提供了一系列高级数学函数和物理模型,适用于更复杂的科学计算任务。

*信号处理:例如,Scipy可以用于进行傅立叶变换和滤波器设计等信号处理模型。

二、具体问题的解决方案

(1)数据分析

*数据处理:使用Pandas进行数据清洗和预处理,利用NumPy进行高效的数值计算。

*数据可视化:通过Matplotlib将数据分析结果可视化,生成出版质量级别的图形。

(2)实际案例

*金融数据分析:使用NumPy和Pandas对金融数据集进行分析,探索matplotlib、statsmodels和scikit-learn等库进行高级分析。

*科研论文绘图:利用Matplotlib实现科研论文中的各种图表,如散点图、直方图和曲线图等。

*使用Numpy和Pandas生成的矩阵如:

import numpy as np
import pandas as pd

df = pd.DataFrame({'A':np.random.randint(1, 100, 4),
		        'B':pd.date_range(start='20130101', periods=4, freq='D'),
		        'C':pd.Series([1, 2, 3, 4],\
                               index=['zhang', 'li', 'zhou', 'wang'],dtype='float32'),
		        'D':np.array([3] * 4,dtype='int32'),
		        'E':pd.Categorical(["test","train","test","train"]),
		        'F':'foo'})
print(df)

代码所生成的结果是:


*Spicy中画的图像:

import numpy as np
from scipy import signal, misc
import matplotlib.pyplot as plt

image = misc.face(gray=True)          
shape = image.shape
w = np.zeros(shape)                   
w[0][0] = 1.0                         
w[shape[0]-1][shape[1]//2] = 1.0      
image_new = signal.fftconvolve(image, w)   
print(image_new.shape)

plt.figure()
plt.imshow(image_new)                 
plt.gray()
plt.title('Filtered image')
plt.show()

代码运行的结果:

 


 *Matplotlib的绘图:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randn(1000, 2), columns=['B', 'C']).cumsum()
df['A'] = pd.Series(list(range(len(df))))
plt.figure()
df.plot(x='A')
plt.show()

代码运行的结果为:

 


 阻尼衰减曲线绘制代码如下:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
def Draw(pcolor, nt_point, nt_text, nt_size):
    plt.plot(x, y, 'k', label="$exp_decay$", color=pcolor, linewidth=3, linestyle="-")
    plt.plot(x, z, "b--", label="$cos(x^2)$", linewidth=1)
    plt.xlabel('时间(s)')
    plt.ylabel('幅度(mV)')
    plt.title("阻尼衰减曲线绘制")
    plt.annotate('$\cos(2 \pi t) \exp(-t)$', xy=nt_point, xytext=nt_text, fontsize=nt_size,\
               arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.1"))
def Shadow(a, b):
    ix = (x>a) & (x<b)
    plt.fill_between(x,y,0,where=ix,facecolor='grey', alpha=0.25)
    plt.text(0.5 * (a + b), 0.2, "$\int_a^b f(x)\mathrm{d}x$", \
             horizontalalignment='center')
def XY_Axis(x_start, x_end, y_start, y_end):
    plt.xlim(x_start, x_end)
    plt.ylim(y_start, y_end)
    plt.xticks([np.pi/3, 2 * np.pi/3, 1 * np.pi, 4 * np.pi/3, 5 * np.pi/3], \
               ['$\pi/3$', '$2\pi/3$', '$\pi$', '$4\pi/3$', '$5\pi/3$'])
x = np.linspace(0.0, 6.0, 100)
y = np.cos(2 * np.pi * x) * np.exp(-x)+0.8
z = 0.5 * np.cos(x ** 2)+0.8
note_point,note_text,note_size = (1, np.cos(2 * np.pi) * np.exp(-1)+0.8),(1, 1.4), 14
fig = plt.figure(figsize=(8, 6), facecolor="white")
plt.subplot(111)
Draw("red", note_point, note_text, note_size)
XY_Axis(0, 5, 0, 1.8)
Shadow(0.8, 3)
plt.legend()
plt.savefig('sample.JPG')
plt.show()

运行结果:

 

三、图像分析

*图像滤波:原图像

from scipy import misc
from scipy import ndimage
import matplotlib.pyplot as plt
face = misc.face()          # face是测试图像之一
plt.figure()                      # 创建图形
plt.imshow(face)            # 绘制测试图像
plt.show()                       # 原始图像

 运行结果:

*高斯滤波下的代码及图像:

from scipy import misc
from scipy import ndimage
import matplotlib.pyplot as plt
face = misc.face()          # face是测试图像之一
plt.figure()                      # 创建图形
plt.imshow(face)            # 绘制测试图像
blurred_face = ndimage.gaussian_filter(face, sigma=7)  # 高斯滤波
plt.imshow(blurred_face)
plt.show()                                             # 显示结果图像

 

*中值滤波下的代码及图像: 

from scipy import misc
from scipy import ndimage
import matplotlib.pyplot as plt
face = misc.face()          # face是测试图像之一
plt.figure()                      # 创建图形
plt.imshow(face)            # 绘制测试图像
median_face = ndimage.median_filter(face, 7)           # 中值滤波
plt.imshow(median_face)
plt.show()
                                            # 显示结果图像

*边缘锐化下的代码及图像: 

from scipy import misc
from scipy import ndimage
import matplotlib.pyplot as plt
face = misc.face()          # face是测试图像之一
plt.figure()                      # 创建图形
plt.imshow(face)            # 绘制测试图像
blurred_face1 = ndimage.gaussian_filter(face, sigma=1)         # 边缘锐化
blurred_face3 = ndimage.gaussian_filter(face, sigma=3)
sharp_face = blurred_face3 + 6*(blurred_face3-blurred_face1)
plt.imshow(sharp_face) 
plt.show()

四、总结

通过学习Numpy、Scipy、Pandas和Matplotlib这四个库,我们可以掌握Python数据分析和科学计算的核心技能。这些库不仅提供了强大的数据处理和科学计算功能,还能帮助我们进行高效的数据可视化和分析。

Pandas:专注于数据处理和分析,提供了灵活的索引和切片功能,适合处理结构化和时间序列数据。

Matplotlib:用于绘制数据图表,支持创建各种类型的静态和动态图形,是数据可视化的重要工具。

Scipy:基于Numpy,提供了高级数学函数和物理模型,适用于更复杂的科学计算任务。

通过系统地学习和实践这些库的基本函数和具体应用,我们可以在数据分析和科学计算领域取得显著的进步。

  • 29
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值