Python 数据科学三巨头:Pandas、NumPy 与 Matplotlib 基础理解
NumPy、Pandas和Matplotlib作为Python数据科学的三大核心库,各自在数值计算、数据处理和可视化方面发挥着重要作用:- NumPy提供了高效的数组操作和数学运算,是科学计算的基础- Pandas提供了灵活的数据结构和数据分析工具,简化了数据处理流程- Matplotlib提供了丰富的可视化功能,帮助我们直观地理解数据掌握这三个库,将为你的数据科学之旅打下坚实的基础。
在数据科学和数据分析领域,Python 凭借其丰富的库生态系统占据了重要地位。其中,NumPy、Pandas 和 Matplotlib 被称为数据科学的 "三巨头",它们分别负责数值计算、数据处理和数据可视化,共同构成了数据科学工作流的核心工具链。
本文便是我对NumPy、Pandas 和 Matplotlib的理解,主要介绍关于这三个库的安装,导入方法,基本结构及案例。
一.安装与导入
在运行这三个库之前需要我们做一些准备工作,需要在python,jupyter notebook等平台上将三个库进行安装.
1.安装
以下便是安装三个库的代码:
pip install numpy
pip install pandas
pip install Matplotlib
2.导入
安装完成后,在运用的时候也需要把库导入,以下便是这三个库的导入命令:
import numpy as np #numpy通常简写为np
import pandas as pd #pandas通常简写为pd
import Matplotlib as plt #Matplotlib通常简写为plt
二.Numpy:数值计算的基石
NumPy(Numerical Python)是Python科学计算的基础库,提供了高性能的多维数组对象和数学运算工具。
1.创建数组
创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print("一维数组:", arr1)
print("数组形状:", arr1.shape) # 输出 (5,)
print("数组维度:", arr1.ndim) # 输出 1
print("元素类型:", arr1.dtype) # 输出 int64
创建二维数组(矩阵)array
import numpy as np
data=np.array([[1,2,3,4],[4,5,6,7]])
print(data)
创建全0数组
shape属性代表形状 shape(3,5) 就代表创建3行5列的全零数组
import numpy as np
data=np.zeros(shape=(3,5))#一个三行五列的二维数组
print(data)
创建全1数组
创建全1数组的用途是初始化一个具有特定形状和大小的数组,其中所有元素都设置为1。
import numpy as np
# 创建一个1行5列的全1数组
ones_1d = np.ones(5)
print("1维全1数组:")
print(ones_1d)
print("数组形状:", ones_1d.shape)
创建全空数组
创建出来的全空数组中的数据都是无限小的、无限接近于0但不是0
import numpy as np
# 使用NumPy创建空数组(未初始化的值)
# 1维空数组
empty_1d = np.empty(5)
print("NumPy 1维空数组:")
print(empty_1d)
print("形状:", empty_1d.shape)
2.实用示例
# 生成0到10之间的5个均匀分布的数
x = np.linspace(0, 10, 5)
print("linspace生成的数组:", x) # 输出 [ 0. 2.5 5. 7.5 10. ]
数组运算
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print("a + b =", a + b) # 输出 [5 7 9]
print("a * b =", a * b) # 输出 [4 10 18]
print("a的平方 =", a **2) # 输出 [1 4 9]
矩阵运算
matrix = np.array([[1, 2], [3, 4]])
print("矩阵转置:\n", matrix.T)
print("矩阵的逆:\n", np.linalg.inv(matrix))
NumPy提供了大量的数学函数和线性代数运算,是处理数值数据的高效工具。
三.Pandas:数据分析中的瑞士军刀
Pandas有两个核心数据结构:
Series :一维带标签的数组,类似带索引的列表
DataFrame :二维表格数据结构,类似Excel表格或数据库表

1.Series
Series 结构,也称 Series 序列,是 Pandas 常用的数据结构之一,它是一种类似于一维数组的结构,由一组数据值(value)和一组标签组成,其中标签与数据值之间是一一对应的关系。
Series 可以保存任何数据类型,比如整数、字符串、浮点数、Python 对象等,它的标签默认为整数,从 0 开始依次递增。
创建Series
可以用数组、字典、标量值或者 Python 对象来创建 Series 对象。
import pandas as pd
s=pd.Series( data, index, dtype, copy)
#参数说明:
#data 输入的数据,可以是列表、常量、ndarray 数组等。
#index 索引值必须是惟一的,如果没有传递索引,则默认为 #np.arrange(n)。
#dtype dtype表示数据类型,如果没有提供,则会自动判断得出。
#copy 表示对 data 进行拷贝,默认为 False。
2.DataFrame
DataFrame 一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等。
创建DataFrame结构
import pandas as pd
pd.DataFrame( data, index, columns, dtype, copy)
#参数说明:
data 输入的数据,可以是 ndarray,series,list,dict,标量以及一个 DataFrame。
index 行标签,如果没有传递 index 值,则默认行标签是 np.arange(n),n 代表 data 的元素个数。
columns 列标签,如果没有传递 columns 值,则默认列标签是 np.arange(n)。
dtype dtype表示每一列的数据类型。
copy 默认为 False,表示复制数据 data。
3.实用示例
数据处理
读取CSV文件(示例)
df = pd.read_csv('data.csv')
查看数据基本信息
print("前2行数据:\n", df.head(2))
print("\n数据统计信息:\n", df.describe())
数据筛选
print("\n年龄大于30的记录:\n", df[df['年龄'] > 30])
数据分组
# 假设我们有一个包含销售额的数据列
df['销售额'] = [1000, 2000, 1500, 3000]
city_sales = df.groupby('城市')['销售额'].sum()
print("\n各城市销售总额:\n", city_sales)
Pandas提供了丰富的数据操作功能,如数据清洗、转换、合并、分组等,是数据分析的得力助手。
四. Matplotlib:数据可视化的利器
Matplotlib是一个功能强大且非常流行的Python数据可视化库。Matplotlib可用于绘制折线图、散点图、条形图、直方图、饼图等,同时也支持部分3D绘图功能。通过图像,可以更加清晰、直观地展示数据,从而有利于数据分析。
1.图形对象
plt.figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True)
num:画布编号,默认值为1;
figsize:指定画布宽高,默认为(6.4,4.8);
dpi:图像分辨率,单位为pixel/inch,默认值为80;
facecolor:背景颜色,默认值为白色;
edgecolor:边框颜色;
frameon:是否显示边框,默认显示。
2.实用示例
1.绘制图表
import matplotlib.pyplot as plt
import numpy as np
# 设置中文显示
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
2.折线图
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.figure(figsize=(10, 6))
plt.plot(x, y, label='正弦曲线')
plt.title('正弦函数图像')
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.grid(True)
plt.legend()
plt.show()
3.柱状图
categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 56, 78, 32]
plt.figure(figsize=(10, 6))
plt.bar(categories, values, color='skyblue')
plt.title('类别数据对比')
plt.xlabel('类别')
plt.ylabel('数值')
plt.show()
4.散点图
np.random.seed(42)
x = np.random.randn(100)
y = 2 * x + np.random.randn(100) * 0.5
plt.figure(figsize=(10, 6))
plt.scatter(x, y, alpha=0.7)
plt.title('散点图示例')
plt.xlabel('x值')
plt.ylabel('y值')
plt.show()
Matplotlib支持绘制折线图、柱状图、散点图、直方图、饼图等多种图表,并且可以高度自定义图表的样式。
五、三库协同工作示例
在数据分析过程中,三个库经常一起协同工作,以下是三个库工作的案例:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
1. 使用NumPy生成数据
np.random.seed(42)
dates = pd.date_range(start='2023-01-01', periods=12, freq='M')
sales = np.random.randint(100, 500, size=12)
expenses = sales * np.random.uniform(0.6, 0.9, size=12)
2. 使用Pandas处理数据
data = {
'销售额': sales,
'支出': expenses,
'利润': sales - expenses
}
df = pd.DataFrame(data, index=dates)
# 计算月度增长率
df['销售额增长率'] = df['销售额'].pct_change() * 100
print("数据概览:\n", df.head())
3. 使用Matplotlib可视化
plt.figure(figsize=(12, 8))
# 子图1:销售额和支出趋势
plt.subplot(2, 1, 1)
plt.plot(df.index, df['销售额'], label='销售额', marker='o')
plt.plot(df.index, df['支出'], label='支出', marker='s')
plt.title('月度销售额与支出趋势')
plt.ylabel('金额(元)')
plt.legend()
plt.grid(alpha=0.3)
# 子图2:利润和增长率
plt.subplot(2, 1, 2)
plt.bar(df.index, df['利润'], label='利润', alpha=0.7)
plt.twinx()
plt.plot(df.index, df['销售额增长率'], label='销售额增长率', color='red', linestyle='--')
plt.title('月度利润与销售额增长率')
plt.ylabel('增长率(%)')
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()
这个示例展示了如何使用NumPy生成数据,Pandas进行数据处理和分析,最后用Matplotlib进行可视化展示,完整呈现了一个数据分析的工作流程。
六.总结
NumPy、Pandas和Matplotlib作为Python数据科学的三大核心库,各自在数值计算、数据处理和可视化方面发挥着重要作用:
NumPy提供了高效的数组操作和数学运算,是科学计算的基础
Pandas提供了灵活的数据结构和数据分析工具,简化了数据处理流程
Matplotlib提供了丰富的可视化功能,帮助我们直观地理解数据
掌握这三个库,将为你的数据科学之旅打下坚实的基础,不断扩展你的数据科学技能栈。
更多推荐


所有评论(0)