
只会写Python基础,做数据分析还是不够。数据清洗、计算、画图,这三件事基本绕不开NumPy、Pandas和Matplotlib。有人管它们叫三剑客,其实就是一套顺手的工具链。
一、NumPy:底层算数的加速器
NumPy全称Numerical Python,是Python科学计算的地基。它的核心是ndarray,也就是N维数组。这玩意儿比Python原生的列表快几十倍,因为底层是C写的,数据在内存里连续存放。
看一眼基本用法:
```pythonimport numpy as nparr = np.array([1, 2, 3, 4, 5])matrix = np.array([[1, 2], [3, 4], [5, 6]])print(matrix.shape) # (3, 2)print(arr.mean()) # 3.0print(arr.sum()) # 15```
NumPy有几个好用的特性:
广播机制:形状不同的数组做运算时自动匹配
丰富的数学函数:线性代数、随机数、傅里叶变换都有
性能:比纯Python循环快10倍以上
它主要用在科学计算、机器学习特征处理、图像处理这些场景,同时也是Pandas、SciPy等库的底层依赖。
二、Pandas:最顺手的表格工具
Pandas提供了DataFrame和Series两种数据结构,处理表格数据非常舒服。
读数据、看概况
```pythonimport pandas as pddf = pd.read_csv('sales.csv')print(df.head()) # 前5行print(df.info()) # 每列类型、缺失值情况print(df.describe()) # 数值列的均值、标准差、分位数等```
清洗缺失值
```python# 先看看每列缺了多少df.isnull().sum()# 数值列,用均值填上df['price'].fillna(df['price'].mean(), inplace=True)# 分类列,用出现次数最多的值填df['category'].fillna(df['category'].mode()[0], inplace=True)```
分组聚合和透视表
```python# 按区域分组求总销售额region_sales = df.groupby('region')['total_sales'].sum()# 透视表:行是区域,列是品类,值是对应的销售额pivot = pd.pivot_table(df,values='total_sales',index='region',columns='category',aggfunc='sum')```
处理大文件的小技巧
文件太大一次性读不进内存怎么办:
```python# 分块读,每次处理1万行for chunk in pd.read_csv('big.csv', chunksize=10000):process(chunk)# 或者只读需要的列df = pd.read_csv('data.csv', usecols=['id', 'date', 'value'])```
三、Matplotlib:把数据画出来
Matplotlib是Python最全的可视化库,几乎什么图都能画。实际工作中经常搭配Seaborn一起用,Seaborn基于Matplotlib,语法更简单,统计图表更漂亮。
常用的图就那么几种:
折线图:看趋势,比如每天访问量变化
柱状图:比大小,比如不同品类销售额
散点图:看两个变量之间的关系
直方图:看数据分布
热力图:看相关性矩阵
举个例子,画一张相关性热力图:
```pythonimport matplotlib.pyplot as pltimport seaborn as snscorr = df.corr()sns.heatmap(corr, annot=True, cmap='coolwarm')plt.title('特征相关性热力图')plt.show()```
四、三个东西怎么配合的
NumPy在最底层,干脏活累活(高性能数组计算)。Pandas坐在NumPy上面,提供方便的表格操作接口。Matplotlib把Pandas处理完的数据画成图。
用NumPy算得快,用Pandas用得爽,用Matplotlib看得清。
五、一个完整的例子:电商销售数据
假设你有一张销售订单表,想看看各个地区的销售额对比。
```pythonimport pandas as pdimport numpy as npimport matplotlib.pyplot as plt# 读数据df = pd.read_csv('sales_data.csv')# 简单清洗:丢掉空行,把价格转成数字df.dropna(inplace=True)df['price'] = df['price'].astype(float)# 算每个订单的总价,然后按地区汇总df['total_sales'] = df['quantity'] * df['price']region_sales = df.groupby('region')['total_sales'].sum()# 画柱状图region_sales.plot(kind='bar', figsize=(10, 6))plt.title('各地区销售额对比')plt.xlabel('地区')plt.ylabel('销售额(万元)')plt.show()```
这个流程覆盖了:加载 → 清洗 → 计算 → 可视化,日常分析基本就是这些步骤。
六、学习的顺序建议
先学NumPy:搞清楚怎么创建数组、索引、切片、广播,不用太深,够用就行。
再学Pandas:重点练read_csv、groupby、merge、fillna,这几个最常用。
最后学Matplotlib:先学会画折线图、柱状图、散点图,再看怎么调整样式、做多子图。
建议找个真实数据集,比如Kaggle上Titanic那个经典数据,完整跑一遍。从读数据开始,清洗几个字段,分组算点什么,最后画一两张图。走通一次,后面就顺了。
推荐一个受到超多好评的终生学习小程序「学习站」。
全网超火的课程资源:涵盖18个IT行业热门课程,3000G精品授课视频,从入门到精通,理论+实战,小白适用! 全网超牛的公开课:定期邀请一线大厂大佬来直播间宣讲,全程干货,福利满满,从基础理论到实战案例,分享实战IT技能,拒绝纸上谈兵! 全网超全的题库资源:1800个知识点练习,10万道面试真题,沉浸式刷题练习,帮助各位同学夯实基础,提升技术水平,为升职加薪保驾护航!
