当前位置: 首页 > article >正文

Python的那些事第十五篇:数据分析中的“三剑客”NumPy、Pandas与Matplotlib


数据分析中的“三剑客”:NumPy、Pandas与Matplotlib

在数据分析的世界里,有三位“大侠”常常携手并肩,共同应对各种复杂的数据挑战。它们就是NumPy、Pandas和Matplotlib。这三位“大侠”各怀绝技,相互配合,让数据分析变得轻松又有趣。今天,就让我们走进它们的“江湖”,一探究竟。


一、NumPy:数学运算的“大力士”

NumPy,全称为Numerical Python,是Python中用于科学计算的一个基础库。它就像是数据分析中的“大力士”,专门负责处理各种复杂的数学运算。

(一)数组操作:创建、索引与切片

1. 创建数组

NumPy的核心是数组(ndarray)。创建数组就像变魔术一样简单。我们可以使用numpy.array()函数,将普通的Python列表变成强大的NumPy数组。

Python列表NumPy数组
[1, 2, 3]array([1, 2, 3])
import numpy as np
my_list = [1, 2, 3]
numpy_array = np.array(my_list)
print(numpy_array)

输出结果:

[1 2 3]

2. 索引

数组的索引就像给每个元素贴上标签。在NumPy中,索引从0开始,就像给每个元素分配了一个座位号。例如,要获取数组中的第一个元素,只需要使用array[0]

索引012
数组123
print(numpy_array[0])  # 输出1
3. 切片

切片是NumPy的一大绝技。它可以让用户轻松地获取数组的一部分。比如,array[1:3]可以获取从索引1到索引2(不包括索引3)的元素。

索引012
数组123
切片23
print(numpy_array[1:3])  # 输出[2 3]

(二)数学计算:矩阵运算与统计函数

1. 矩阵运算

NumPy在矩阵运算方面可谓是“力大无穷”。它可以轻松地进行矩阵的加、减、乘、除运算。

假设我们有两个矩阵A和B:

A12
34
B56
78

矩阵相加就是将对应位置的元素相加:

A + B68
1012
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = A + B
print(C)

输出结果:

[[ 6  8]
 [10 12]]
2. 统计函数

NumPy还提供了丰富的统计函数,比如求和(np.sum())、平均值(np.mean())等。

假设我们有一个数组data = [1, 2, 3, 4, 5],求和就是将所有元素加起来。

数据12345
求和15
data = np.array([1, 2, 3, 4, 5])
sum_result = np.sum(data)
print(sum_result)  # 输出15

二、Pandas:数据处理的“智多星”

Pandas是数据分析中的“智多星”。它专注于数据的处理和分析,提供了强大的数据结构和操作功能。

(一)数据结构:DataFrame与Series

1. DataFrame

DataFrame是Pandas的核心数据结构之一,它就像是一个表格,可以存储多种类型的数据。每一列可以看作是一个Series。

假设我们有一个学生信息表:

学号姓名年龄
1小明18
2小红19
import pandas as pd
data = {'学号': [1, 2], '姓名': ['小明', '小红'], '年龄': [18, 19]}
df = pd.DataFrame(data)
print(df)

输出结果:

   学号  姓名  年龄
0   1  小明   18
1   2  小红   19
2. Series

Series是Pandas中的另一个重要数据结构,它是一个一维数组,可以存储任何类型的数据。

索引01
Series小明小红
series = pd.Series(['小明', '小红'])
print(series)

输出结果:

0    小明
1    小红
dtype: object

(二)数据清洗:处理缺失值与重复值

1. 处理缺失值

在数据分析中,缺失值是常见的“麻烦制造者”。Pandas提供了多种处理缺失值的方法,比如填充(fillna())和删除(dropna())。

假设我们的数据中有一个缺失值:

学号姓名年龄
1小明NaN
2小红19

我们可以用平均值填充缺失值:

df['年龄'].fillna(df['年龄'].mean(), inplace=True)
print(df)

输出结果:

   学号  姓名  年龄
0   1  小明  19.0
1   2  小红  19.0
2. 处理重复值

重复值也是数据分析中的“捣蛋鬼”。Pandas可以通过drop_duplicates()方法轻松地删除重复值。

假设我们的数据中有重复行:

学号姓名年龄
1小明18
2小红19
1小明18
df.drop_duplicates(inplace=True)
print(df)

输出结果:

   学号  姓名  年龄
0   1  小明   18
1   2  小红   19

(三)数据处理:筛选、排序与分组

1. 筛选

筛选是数据分析中的常用操作。Pandas可以通过布尔索引轻松地筛选出符合条件的数据。

假设我们想筛选出年龄大于18的学生:

filtered_df = df[df['年龄'] > 18]
print(filtered_df)

输出结果:

   学号  姓名  年龄
1   2  小红   19
2. 排序

排序可以让数据更有条理。Pandas可以通过sort_values()方法对数据进行排序。

假设我们想按照年龄从小到大排序:

sorted_df = df.sort_values(by='年龄')
print(sorted_df)

输出结果:

   学号  姓名  年龄
0   1  小明   18
1   2  小红   19
3. 分组

分组是数据分析中的高级操作。Pandas可以通过groupby()方法对数据进行分组。

假设我们想按照年龄分组,计算每个年龄的学生数量:

grouped_df = df.groupby('年龄').size()
print(grouped_df)

输出结果:

年龄
18    1
19    1
dtype: int64

三、Matplotlib:数据可视化的“艺术家”

Matplotlib是数据分析中的“艺术家”,它通过绘制各种图表,将数据以直观的方式呈现出来。

(一)绘制图表:折线图、柱状图与散点图

1. 折线图

折线图是Matplotlib的“拿手好戏”之一。它可以清晰地展示数据的变化趋势。

假设我们有一组数据,表示某公司每月的销售额:

月份1月2月3月
销售额100150200
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月']
sales = [100, 150, 200]
plt.plot(months, sales)
plt.xlabel('月份')
plt.ylabel('销售额')
plt.title('每月销售额')
plt.show()

输出结果:(一张折线图,横轴为月份,纵轴为销售额,清晰地展示了销售额的上升趋势)

2. 柱状图

柱状图是Matplotlib的另一个“杀手锏”。它可以直观地展示不同类别之间的数量差异。

假设我们有一组数据,表示不同产品的销售数量:

产品ABC
销售数量5080120
products = ['A', 'B', 'C']
sales = [50, 80, 120]
plt.bar(products, sales)
plt.xlabel('产品')
plt.ylabel('销售数量')
plt.title('产品销售数量')
plt.show()

输出结果:(一张柱状图,横轴为产品,纵轴为销售数量,直观地展示了不同产品的销售差异)

3. 散点图

散点图是Matplotlib的“秘密武器”。它可以展示两个变量之间的关系。

假设我们有一组数据,表示广告费用与销售额之间的关系:

广告费用100200300
销售额5008001200
ad_costs = [100, 200, 300]
sales = [500, 800, 1200]
plt.scatter(ad_costs, sales)
plt.xlabel('广告费用')
plt.ylabel('销售额')
plt.title('广告费用与销售额的关系')
plt.show()

输出结果:(一张散点图,横轴为广告费用,纵轴为销售额,清晰地展示了两者之间的正相关关系)


四、三位“大侠”携手作战:一个完整的数据分析案例

为了更好地展示NumPy、Pandas和Matplotlib的强大功能,让我们通过一个完整的数据分析案例来感受它们的“威力”。

假设我们有一份关于某公司员工的工资数据,包括员工的姓名、年龄、部门和工资。我们的任务是分析不同部门的工资分布情况。

(一)数据准备

首先,我们需要准备数据。这里我们使用Pandas的DataFrame来存储数据。

data = {
    '姓名': ['小明', '小红', '小李', '小张'],
    '年龄': [25, 30, 28, 35],
    '部门': ['销售', '市场', '技术', '销售'],
    '工资': [5000, 6000, 7000, 8000]
}
df = pd.DataFrame(data)
print(df)

输出结果:

   姓名  年龄 部门  工资
0  小明  25  销售  5000
1  小红  30  市场  6000
2  小李  28  技术  7000
3  小张  35  销售  8000

(二)数据清洗

接下来,我们需要对数据进行清洗。检查是否有缺失值或重复值。

# 检查缺失值
print(df.isnull().sum())

# 检查重复值
print(df.duplicated().sum())

假设数据没有缺失值和重复值,我们可以继续下一步。

(三)数据分析

1. 筛选与分组

我们先筛选出销售部门的员工,然后对工资进行分组统计。

sales_df = df[df['部门'] == '销售']
grouped_sales = sales_df.groupby('姓名')['工资'].sum()
print(grouped_sales)

输出结果:

姓名
小明    5000
小张    8000
Name: 工资, dtype: int64
2. 数学计算

接下来,我们使用NumPy计算销售部门的平均工资。

average_salary = np.mean(grouped_sales)
print(f'销售部门的平均工资为:{average_salary}')

输出结果:

销售部门的平均工资为:6500.0

(四)数据可视化

最后,我们使用Matplotlib绘制柱状图,展示不同部门的工资分布情况。

departments = df['部门'].unique()
salaries = df.groupby('部门')['工资'].mean()
plt.bar(departments, salaries)
plt.xlabel('部门')
plt.ylabel('平均工资')
plt.title('不同部门的工资分布')
plt.show()

输出结果:(一张柱状图,横轴为部门,纵轴为平均工资,清晰地展示了不同部门的工资差异)


五、总结

通过以上分析,我们可以看到NumPy、Pandas和Matplotlib这三位“大侠”在数据分析中的强大功能。NumPy擅长数学运算,Pandas专注于数据处理,Matplotlib则通过可视化让数据更加直观。它们相互配合,为数据分析提供了强大的支持。

在实际工作中,我们可以根据具体需求灵活运用这三位“大侠”的技能,让数据分析变得更加轻松有趣。无论是在商业决策、科学研究还是日常生活中,数据分析都发挥着越来越重要的作用。而NumPy、Pandas和Matplotlib无疑是数据分析领域的“三剑客”,值得我们深入学习和应用。

希望这篇文章能帮助你更好地了解数据分析的世界,让你在数据分析的“江湖”中也能成为一位“大侠”。



http://www.kler.cn/a/542274.html

相关文章:

  • 本地部署DeepSeek R1 + 界面可视化open-webui
  • aspectFill(填充目标区域的同时保持图像的原有宽高比 (aspect ratio)图像不会被拉伸或压缩变形
  • IPD项目管理是什么?
  • 关于FANUC机器人示教器型号的说明
  • 【算法】动态规划专题⑪ —— 区间DP python
  • Qt文本处理【正则表达式】示例详解:【QRegularExpression】
  • 【Elasticsearch】 查询性能优化
  • win11 python opencv作图像匹配小结
  • idea插件开发,如何获取idea设置的系统语言
  • Render上后端部署Springboot + 前端Vue 问题及解决方案汇总
  • vscode关闭后如何恢复在远程服务器的终端程序运行界面
  • 无人机图像拼接数据的可视化与制图技术:以植被监测为例
  • MATLAB联动本地部署的DeepSeek模型
  • 关于FANUC机器人示教器型号的说明
  • 在Vue项目中Vuex和松花的作用和区别
  • JUnit断言方法详解与实战
  • Svelte前端框架
  • 活动预告 |【Part1】 Azure 在线技术公开课:迁移和保护 Windows Server 和 SQL Server 工作负载
  • 机器视觉3D的测量痛点
  • java基础6(黑马)
  • 使用itextpdf动态生成PDF
  • OpenCV 相机标定流程指南
  • 前端技术学习——ES6核心基础
  • 01.Docker 概述
  • vue3-01-初识vue3相对于vue2的提升与比较,使用vue-cli创建项目,使用vite构建工具创建项目
  • C++ -- vector的模拟实现