当前位置:首页>python>零基础入门Python数据分析:环境搭建+Numpy核心功能实战全指南

零基础入门Python数据分析:环境搭建+Numpy核心功能实战全指南

  • 2026-09-10 13:27:31
零基础入门Python数据分析:环境搭建+Numpy核心功能实战全指南

前言

这篇博客就是专门写给零基础小白的入门干货,全程踩坑预警+实操演示,帮你跨过数据分析的最高门槛。我们会先带你搞懂Python数据分析到底能做什么、适合哪些应用场景,再一步步教你搭建最省心的开发环境,避开版本冲突、依赖缺失等90%的新手常见问题,最后聚焦所有数据分析库的底层基石——Numpy,从核心概念到高频内置函数、典型运算逻辑全部配可运行代码示例,哪怕你之前从来没有接触过编程,跟着走也能快速上手。


Python数据分析简介

使用Python进行数据分析的优势

Python作为当下最为流行的编程语言之一

  • 可以独立完成数据分析的各种任务
  • 数据分析领域里有海量开源库
  • 机器学习/深度学习领域最热门的编程语言
  • 在爬虫,Web开发等领域均有应用

与Excel,PowerBI,Tableau等软件比较

  • Excel有百万行数据限制
  • PowerBI ,Tableau在处理大数据的时候速度相对较慢
  • Excel,Power BI 和Tableau 需要付费购买授权
  • Python功能远比Excel,PowerBI,Tableau等软件强大
  • Python跨平台,Windows,MacOS,Linux都可以运行

与R语言比较

  • Python在处理海量数据的时候比R语言效率更高
  • Python的工程化能力更强,R专注于统计与数据分析领域
  • Python在非结构化数据(文本,图像)和深度学习领域比R更有优势
  • 在数据分析相关开源社区,python相关的内容远多于R语言

常用Python数据分析开源库介绍

Numpy

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库。 是一个运行速度非常快的数学库,主要用于数组计算 包含:

  • 一个强大的N维数组对象 ndarray
  • 广播功能函数
  • 整合 C/C++/Fortran 代码的工具
  • 线性代数、傅里叶变换、随机数生成等功能

Pandas

Pandas是一个强大的分析结构化数据的工具集 它的使用基础是Numpy(提供高性能的矩阵运算) 用于数据挖掘和数据分析,同时也提供数据清洗功能 Pandas利器之 Series,是一种类似于一维数组的对象 Pandas利器之 DataFrame,是Pandas中的一个表格型的数据结构

Matplotlib

Matplotlib 是一个功能强大的数据可视化开源Python库 Python中使用最多的图形绘图库 可以创建静态, 动态和交互式的图表

Seaborn

Seaborn是一个Python数据可视化开源库

  • 建立在matplotlib之上,并集成了pandas的数据结构
  • Seaborn通过更简洁的API来绘制信息更丰富,更具吸引力的图像
  • 面向数据集的API,与Pandas配合使用起来比直接使用Matplotlib更方便

Sklearn

Sklearn scikit-learn 是基于 Python 语言的机器学习工具 简单高效的数据挖掘和数据分析工具 可供大家在各种环境中重复使用 建立在 NumPy ,SciPy 和 matplotlib 上

Jupyter Notebook/Jupyter Lab

Jupyter Notebook是一个开源Web应用程序 可以创建和共享代码、公式、可视化图表、笔记文档 是数据分析学习和开发的首选开发环境 用途

  • 数据清理和转换
  • 数值模拟
  • 统计分析
  • 数据可视化
  • 机器学习等

Python数据分析环境搭建

开发环境搭建

Anaconda简介

Anaconda 是最流行的数据分析平台,全球两千多万人在使用

  • Anaconda 附带了一大批常用数据科学包
  • Anaconda 是在 conda(一个包管理器和环境管理器)上发展出来的
  • 可以帮助你在计算机上安装和管理数据分析相关包
  • 包含了虚拟环境管理工具

Anaconda安装

Anaconda 可用于多个平台( Windows、Mac OS X 和 Linux)

  • 可以在官网上下载对应平台的安装包
  • 如果计算机上已经安装了 Python,安装不会对你有任何影响
  • 安装的过程很简单,一路下一步即可
  • https://www.anaconda.com/products/individual

 也可以通过清华镜像源下载 打开anaconda prompt,输入

conda --version

 修改默认环境保存路径和下载源修改,输入

conda info

 环境和包在电脑中的目录

Anaconda的使用

Anaconda的界面 Anaconda的包管理功能-可以通过管理界面安装

Anaconda的包管理功能-可以通过命令安装

conda install 包名字pip install 包名字

注意,使用pip时最好指定安装源: 阿里云:https://mirrors.aliyun.com/pypi/simple/ 豆瓣:https://pypi.douban.com/simple/ 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/ 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

pip install 包名 -i https://mirrors.aliyun.com/pypi/simple/  #通过阿里云镜像安装

Anaconda的虚拟环境管理

虚拟环境的作用

  • 很多开源库版本升级后API有变化,老版本的代码不能在新版本中运行
  • 将不同Python版本/相同开源库的不同版本隔离
  • 不同版本的代码在不同的虚拟环境中运行

创建自己的虚拟环境 填写虚拟环境名字,选择python的版本 通过命令行创建虚拟环境 conda create -n 虚拟环境名字 python=python版本  #创建虚拟环境 conda activate 虚拟环境名字 #进入虚拟环境 conda deactivate 虚拟环境名字 #退出虚拟环境 conda remove -n 虚拟环境名字 --all  #删除虚拟环境

Jupyter Notebook的使用

选择虚拟环境

通过终端启动

Jupyter Notebookconda activate 虚拟环境名字jupyter notebook

新建notebook文档 新建文件之后会打开Notebook界面 Jupyter Notebook的cell(单元格),代码的输入框和输出显示的结果就是cell

 常用快捷键 命令模式,按ESC进入

  • Y,cell切换到Code模式
  • M,cell切换到Markdown模式
  • A,在当前cell的上面添加cell
  • B,在当前cell的下面添加cell
  • 双击D:删除当前cell

用快捷键 编辑模式,按Enter进入

  • 多光标操作:Ctrl键点击鼠标(Mac:CMD+点击鼠标)回退:Ctrl+Z(Mac:CMD+Z)
  • 重做:Ctrl+Y(Mac:CMD+Y)
  • 补全代码:变量、方法后跟Tab键
  • 为一行或多行代码添加/取消注释:Ctrl+/(Mac:CMD+/)

常用快捷键 两种模式通用快捷键

  • Shift+Enter,执行本单元代码,并跳转到下一单元
  • Ctrl+Enter,执行本单元代码,留在本单元
  • cell行号前的 * ,表示代码正在运行

Jupyter notebook的功能扩展 安装jupyter_contrib_nbextensions库

#进入到虚拟环境中conda activate 虚拟环境名字

在命令模式中,按M即可进入到Markdown编辑模式 使用Markdown语法可以在代码间穿插格式化的文本作为说明文字或笔记

Pycharm集合Jupyter

conda的执行文件的路径为:D:\soft\anaconda3\Scripts\conda.exe

Numpy简介

NumPy(Numerical Python)是Python数据分析必不可少的第三方库 NumPy的出现一定程度上解决了Python运算性能不佳的问题,同时提供了更加精确的数据类型,使其具备了构造复杂数据类型的能力。 本身是由C语言开发,是个很基础的扩展,NumPy被Python其它科学计算包作为基础包,因此理解np的数据类型对python数据分析十分重要。 NumPy重在数值计算,主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多

NumPy重要功能如下:

  1. 高性能科学计算和数据分析的基础包

  2. ndarray,多维数组,具有矢量运算能力,快速、节省空间

  3. 矩阵运算,无需循环,可完成类似Matlab中的矢量运算

  4. 用于读写磁盘数据的工具以及用于操作内存映射文件的工具

NumPy的数组类被称作ndarray,通常被称作数组。 ndarray对象属性有:

  • ndarray.ndim
  • ndarray.shape
  • ndarray.size
  • ndarray.dtype
  • ndarray.itemsize
  • 数组的维度。这是一个指示数组在每个维度上大小的整数元组。例如一个n排m列的矩阵,它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或者ndim属性。
import numpy as npresult = np.arange(15).reshape(3, 5) # 生成 0~14 的一维数组,长度为 15。print ("数组的维度:", result.shape)          # 输出 (3, 5)print ("数组轴的个数:", result.ndim)         # 输出 2(二维数组)print ("数组元素类型:", result.dtype)        # 输出 int64(取决于平台,也可能是 int32)print ("数组中每个元素的字节大小:", result.itemsize) # int64 为 8 字节print ("数组元素的总个数:", result.size)     # 输出 15(3*5)print ("类型查询:", type(result))            # 输出 <class 'numpy.ndarray'>

创建ndarray

NumPy数组是一个多维的数组对象(矩阵),称为ndarray,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点。注意:ndarray的下标从0开始,且数组里的所有元素必须是相同类型。

arange ()

arange() 类似 python 的 range() ,创建一个一维 ndarray 数组。

import numpy as npnp_arange = np.arange(11, 22, 6, dtype=int)print ("arange创建np_arange:", np_arange)print("arange创建np_arange的元素类型:", np_arange.dtype)print("arange创建np_arange的类型:", type(np_arange))

np.arange(start, stop, step, dtype):生成从 start 开始,到 stop 结束(不包含 stop),步长为 step 的等差数列。

创建随机数矩阵

import numpy as np# 生成一个形状为 (5, 6) 的数组,元素是 [0, 1) 区间内均匀分布的随机浮点数(包含 0,不包含 1)arry = np.random.rand(5,6)print(arry)print(type(arry))# 生成一个形状为 (5, 6) 的数组,元素是 从 2 到 10 之间的随机整数(包含 2,不包含 10)arry = np.random.randint(2,10,size=(5,6))print(arry)print(type(arry))# 生成一个形状为 (5, 6) 的数组,元素是 从 2 到 10 之间的连续均匀分布随机浮点数(包含 2,不包含 10,但边界可能包含)arry = np.random.uniform(2,10,size=(5,6))print(arry)print(type(arry))

ndarray的数据类型

dtype参数,指定数组的数据类型,类型名+位数,如float64, int32 astype方法,转换数组的数据类型

import numpy as npfloat_arr = np.zeros((2,3),dtype=np.float64)print(float_arr)print(float_arr.dtype)int_arr = float_arr.astype(dtype=np.int32)print(int_arr)print(int_arr.dtype)

等比/等差数列

np.logspace等比数列

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
  • start:起始值的指数(即 base**start)
  • stop:结束值的指数(即 base**stop)
  • num:生成的元素个数(默认为 50)
  • base:对数的底数(默认为 10,可改为 2、e 等)
  • endpoint:是否包含结束值(默认为 True
arr = np.logspace(1,3,3)print(arr)
arr = np.logspace(1,3,3,base=3)print(arr)

 np.linspace等差数列

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
  • start:序列起始值。
  • stop:序列结束值(默认包含)。
  • num:生成的样本总数(默认 50)。
  • endpoint:是否包含终点(True则包含,False则不包含)。
  • retstep:设为 True 时,除了返回数组,还会返回公差 d。
arr = np.linspace(0,10,5)print(arr)

 linspace创建的数组元素是浮点型

Numpy内置函数

基本函数

np.ceil(): 向上最接近的整数,参数是 number 或 array np.floor(): 向下最接近的整数,参数是 number 或 array np.rint(): 四舍五入,参数是 number 或 array np.isnan(): 判断元素是否为 NaN(Not a Number),参数是 number 或 array np.multiply(): 元素相乘,参数是 number 或 array np.divide(): 元素相除,参数是 number 或 array np.abs():元素的绝对值,参数是 number 或 array np.where(condition, x, y): 三元运算符,x if condition else y

mport numpy as nparr = np.random.randn(2, 3)   # 生成 2x3 的标准正态分布随机数组(均值为0,方差为1)print(arr)                    # 打印原始数组print(np.ceil(arr))           # 向上取整(进一法)print(np.floor(arr))          # 向下取整(去尾法)print(np.rint(arr))           # 四舍五入到最近的整数(.5 时取偶数,即“银行家舍入”)print(np.isnan(arr))          # 检测每个元素是否为 NaN(此处全为 False,因为 randn 不会产生 NaN)print(np.multiply(arr, arr))  # 逐元素相乘(等价于 arr * arr 或 arr**2)print(np.divide(arr, arr))    # 逐元素相除(等价于 arr / arr),除自身得 1.0(但 0/0 会得到 NaN 或 inf?注意:这里 arr 可能包含 0,但标准正态连续分布,精确为0的概率极低,几乎不会出现)print(np.where(arr > 0, 1, -1)) # 条件判断:正数→1,非正数(0或负数)→ -1

统计函数

np.mean(), np.sum():所有元素的平均值,所有元素的和,参数是 number 或 array np.max(), np.min():所有元素的最大值,所有元素的最小值,参数是 number 或 array np.std(), np.var():所有元素的标准差,所有元素的方差,参数是 number 或 array np.argmax(), np.argmin():最大值的下标索引值,最小值的下标索引值,参数是 number 或 array np.cumsum(), np.cumprod():返回一个一维数组,每个元素都是之前所有元素的 累加和 和 累乘积,参数是 number 或 array 多维数组默认统计全部维度,axis参数可以按指定轴心统计,值为0则按列统计,值为1则按行统计。

import numpy as nparr = np.arange(12).reshape(3, 4)print(arr)# 输出:# [[ 0  1  2  3]#  [ 4  5  6  7]#  [ 8  9 10 11]]print(np.cumsum(arr))# 输出:[ 0  1  3  6 10 15 21 28 36 45 55 66]# (默认展平成一维后的逐项累加)print(np.sum(arr))# 输出:66# (所有元素总和 = 0+1+...+11)print(np.sum(arr, axis=0))# 输出:[12 15 18 21]# (按列求和:第1列0+4+8=12,第2列1+5+9=15...)print(np.sum(arr, axis=1))# 输出:[ 6 22 38]# (按行求和:第1行0+1+2+3=6,第2行4+5+6+7=22...)

去重函数

np.unique():找到唯一值并返回排序结果,类似于Python的set集合

import numpy as nparr = np.array([[1, 5, 8], [8, 5, 2]])values, counts = np.unique(arr, return_counts=True)print(values)print(counts)  print(np.sum(arr, axis=1)) #按行计算 1+5+8=14 8+5+2 = 15

排序函数

对数组元素进行排序

import numpy as np# 1. 定义原始数据(修改了数据内容和变量名)scores = np.array([6, 1, 9, 3, 7])print("原始数据 scores:", scores)# 2. 方式一:np.sort() —— 返回排序后的新数组,原数组不变sorted_scores = np.sort(scores)print("np.sort() 返回的排序副本:", sorted_scores)print("验证原数组未被修改:", scores)  # 原数组顺序依旧是 [6 1 9 3 7]# 3. 方式二:ndarray.sort() —— 直接在原数组上修改(原地排序)scores.sort()print("scores.sort() 原地排序后:", scores)# 4. 额外验证:之前生成的副本不受原地排序影响print("之前生成的副本不变:", sorted_scores)

Numpy运算

基本运算

数组的算数运算是按照元素的。新的数组被创建并且被结果填充

import numpy as np# 原始数据(改用不同的数值和变量名)x = np.array([5, 15, 25, 35])y = np.arange(4)  # 生成 [0, 1, 2, 3]# 执行减法运算(与原来相同,但数据变了)z = x - y# 打印结果(变量名和描述都改了)print("数组 x:", x)print("数组 y:", y)print("x - y 的结果:", z)

 矩阵乘法 矩阵对应元素的乘法(multiplication by element-wise)

import numpy as np# 定义两个用于演示“逐元素相乘”的矩阵(对应位置相乘,不是线性代数里的点积!)mat1 = np.array([[2, 4, 6], [3, 6, 9]])mat2 = np.array([[1, 3, 5], [2, 4, 6]])print("矩阵 mat1:")print(mat1)print("矩阵 mat2:")print(mat2)# 方式一:使用 '*' 运算符(最简洁的写法)result_star = mat1 * mat2print("\n使用 'mat1 * mat2' 的逐元素相乘结果:")print(result_star)# 方式二:使用 np.multiply() 函数(功能与 '*' 完全等价)result_multiply = np.multiply(mat1, mat2)print("\n使用 np.multiply(mat1, mat2) 的结果:")print(result_multiply)# 验证两种写法是否完全一致(纠正原图可能出现的“结果不同”的误导)print("\n两种写法结果是否完全相同?", np.array_equal(result_star, result_multiply))


总结

最后想和大家说:入门数据分析从来不需要你一开始就精通高数、统计学,先把基础工具用熟,能解决哪怕很小的问题,慢慢积累经验就能越走越远。遇到报错别慌,每个成熟的数据分析师都是从修无数个bug里成长起来的~

最新文章

随机文章