python学习笔记(numpy的学习)
·
Python 数据分析入门:NumPy+Pandas+Matplotlib 学习笔记
作为 Python 数据分析入门的核心三剑客,NumPy、Pandas、Matplotlib是数据处理、分析与可视化的必备工具。本篇笔记整理了基础核心用法,从数组操作、数据处理到图表绘制,全是干货,适合新手快速上手!
一、NumPy 基础操作(数值计算核心库)
NumPy 是 Python 用于数值计算的基础库,核心是ndarray 数组,支持多维数组操作、数学运算、数据拼接 / 切割、随机数生成等,是数据分析的基石。
1. 基础数学函数与数组创建
import numpy as np
# 基础数学函数:正弦、绝对值
print(np.sin(1)) # 正弦值
print(np.abs(-1)) # 绝对值
# 列表转数组 + 维度变换
list1 = [1,2,3,4,5,6,7,8]
v = np.array(list1)
v = v.reshape(2,2,2) # 转为3维数组
print(v)
print("数组维度:", v.ndim)
2. 数组降维(核心:ravel () vs flatten ())
# 三维降二维
r1 = v.reshape(1,8)
print(r1, r1.ndim)
# 高维转一维(重点区分)
r2 = v.ravel() # 返回原数组视图,修改会影响原数组
r3 = v.flatten() # 返回原数组副本,修改不影响原数组(推荐使用)
print(r2, r3)
# shape属性直接修改维度
v.shape = (2,4)
print(v)
3. 特殊数组创建
# 全0数组
a = np.zeros(5) # 一维
b = np.zeros((2,2)) # 二维
c = np.zeros((3,2,2)) # 三维
# 全1数组
d = np.ones((2,2))
# 全指定值数组
g = np.full((2,2,2), 5) # 填充5
# 单位矩阵
h = np.eye(5,7) # 5行7列对角线为1
4. 数组索引与修改
array1 = np.arange(48).reshape(2,4,6)
# 选取元素
a = array1[1,0,0] # 三维索引
b = array1[0,1,:] # 取某一行
c = array1[0,1:3,:] # 取多行
e = array1[1,:,1] # 取某一列
# 直接修改元素
array1[1,0,0] = 100
5. 数组拼接与切割
array1 = np.arange(9).reshape(3,3)
array2 = 2*array1
# 水平拼接
a3 = np.hstack((array1,array2))
a6 = np.concatenate((array1,array2),axis=1)
# 垂直拼接
a7 = np.vstack((array2,array1))
a8 = np.concatenate((array1,array2),axis=0)
# 数组切割
arr = np.arange(16).reshape(4,4)
a = np.hsplit(arr,2) # 水平二等分
c = np.vsplit(arr,2) # 垂直二等分
# 不等分切割
e = np.array_split(arr,3,axis=1)
6. 数组赋值与拷贝(深浅拷贝)
array1 = np.array([1,2,3])
# 直接赋值:指向同一内存,修改互相影响
array2 = array1
array2[0] = 100
# 浅拷贝:copy(),独立内存,修改不影响原数组
array3 = array1.copy()
array3[0] = 10
7. 随机数生成
# 固定随机种子(结果可复现)
np.random.seed(1000)
# 整数随机数
r1 = np.random.randint(0,10,size=100)
# 0~1浮点数
r4 = np.random.rand(5,5)
# 正态分布随机数
r5 = np.random.normal(loc=5, scale=10, size=(5,5))
8. 数组统计函数
array1 = np.random.normal(size=(3,3))
print("方差:", array1.var())
print("标准差:", array1.std())
print("均值:", array1.mean())
print("中位数:", np.median(array1))
# 按行/列求和
print("行和:", array1.sum(axis=1))
print("列和:", array1.sum(axis=0))
9. 矩阵运算
a = np.arange(4).reshape(2,2)
# 矩阵点乘
a1 = a.dot(a)
# 矩阵求逆
a3 = np.linalg.inv(a)
10. 文件读写
# 读取文本文件
data = np.loadtxt('datingTestSet2.txt', delimiter='\t')
# 保存数组到txt
array = np.array([[1,2,3],[4,5,6]])
np.savetxt('array.txt', array)
二、Pandas 基础操作(数据处理核心库)
Pandas 基于 NumPy,提供DataFrame(表格型数据结构),专门用于数据清洗、筛选、合并、去重等操作,是处理表格数据的神器。
1. 数据合并(concat)
import pandas as pd
import numpy as np
df_1 = pd.DataFrame(np.arange(12).reshape(3,4))
df_2 = 2*df_1
# 竖向合并(默认)
new_df1 = pd.concat([df_2, df_1])
# 横向合并(axis=1)
new_df2 = pd.concat([df_1, df_2], axis=1)
# 内连接/外连接
new_df3 = pd.concat([df_1, df_3], axis=1, join='inner') # 交集
new_df4 = pd.concat([df_1, df_3], axis=1, join='outer') # 并集
2. 重复值处理
df = pd.read_csv(r"data1.csv",encoding='gbk')
# 判断重复行
result1 = df.duplicated() # 全列判断
result2 = df.duplicated('gender') # 单列判断
result3 = df.duplicated(['gender','name']) # 多列判断
# 提取重复行
repeat_df = df[df.duplicated()]
# 删除重复行
new_df1 = df.drop_duplicates() # 全列去重
new_df2 = df.drop_duplicates(['name','gender']) # 按列去重
3. 数据筛选(条件查询)
# 数值条件筛选
df1 = df[df['好评数'] > 17000] # 大于
df2 = df[df['好评数'].between(15000,17000)] # 区间
# 字符串匹配
df3 = df[df['品牌'].str.contains('苹果',na=False)] # 包含指定字符
# 多条件逻辑运算
df5 = df[(df['价格']<7000) & (df['好评数']>16000)] # 且
df6 = df[(df['价格']<6000) | (df['好评数']>18000)] # 或
三、Matplotlib 基础操作(数据可视化核心库)
Matplotlib 是 Python 最经典的绘图库,支持折线图、直方图、子图等,用于数据直观展示。
1. 基础折线图
import matplotlib.pyplot as plt
import numpy as np
x = np.array([1,2,3,4,5])
y = np.array([10,20,25,30,40])
# 绘图:颜色、标记点
plt.plot(x,y,color='r',marker="*")
# 标题+坐标轴
plt.title('Scatter Plot Example')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.show()
2. 多子图绘制
x = np.linspace(0,10,10000)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.sin(x**2)
# 创建2行2列子图
fig, axs = plt.subplots(2,2,figsize=(10,8))
# 分别绘图
axs[0,0].plot(x,y1,'r')
axs[0,0].set_title('sin(x)')
axs[0,1].plot(x,y2,'g')
axs[0,1].set_title('cos(x)')
axs[1,0].plot(x,y3,'b')
axs[1,0].set_title('tan(x)')
axs[1,1].plot(x,y4,'m')
axs[1,1].set_title('sin(x^2)')
plt.show()
3. 直方图绘制
# 随机数直方图
a = [np.random.randint(0,10) for i in range(100)]
plt.hist(a,color='r')
plt.show()
四、核心知识点总结
- NumPy:核心是 ndarray 数组,掌握维度变换、拼接 / 切割、拷贝、统计函数、矩阵运算,是数值计算基础;
- Pandas:核心是 DataFrame,重点掌握数据合并、去重、条件筛选,高效处理表格数据;
- Matplotlib:基础绘图 + 子图布局,快速实现数据可视化,直观展示分析结果。
这三个库是 Python 数据分析的入门必备,熟练掌握基础用法后,就能处理大部分简单数据分析任务啦!后续会继续更新进阶用法,欢迎关注~
更多推荐

所有评论(0)