使用NumPy、Pandas和Matplotlib进行数据处理和可视化

前言

在数据科学和数据分析领域,NumPy、Pandas和Matplotlib是最常用的数据处理和可视化库。NumPy提供了高效的数组操作功能,Pandas则在NumPy的基础上增加了丰富的数据处理工具,而Matplotlib则是最流行的Python绘图库之一。本文将详细介绍如何使用这三个库进行数据处理和可视化。

环境准备

在开始之前,请确保已经安装了以下库:

  • NumPy
  • Pandas
  • Matplotlib

可以通过pip命令安装这些库:

 

Bash

深色版本

pip install numpy pandas matplotlib

NumPy基础

NumPy是Python中用于科学计算的基础库,特别擅长处理大型多维数组和矩阵。

创建数组

 

Python

深色版本

import numpy as np# 创建一维数组
a = np.array([1, 2, 3, 4, 5])
print(a)# 创建二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)

数组属性

 

Python

深色版本

# 数组的形状
print(b.shape)# 数组的维度
print(b.ndim)# 数组的元素类型
print(b.dtype)

数组操作

 

Python

深色版本

# 数组切片
print(a[1:3])# 数组重塑
c = b.reshape(3, 2)
print(c)# 数组拼接
d = np.concatenate((a, a))
print(d)

数学运算

 

Python

深色版本

# 元素级别的加法
e = a + 1
print(e)# 矩阵乘法
f = np.dot(b, c)
print(f)

Pandas基础

Pandas是基于NumPy构建的,提供了丰富的数据处理和分析工具,特别是DataFrame对象。

创建DataFrame

 

Python

深色版本

import pandas as pd# 从字典创建DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
print(df)# 从CSV文件读取数据
df = pd.read_csv('data.csv')
print(df)

数据选择与过滤

 

Python

深色版本

# 选择列
names = df['Name']
print(names)# 选择行
first_row = df.iloc[0]
print(first_row)# 过滤数据
filtered_df = df[df['Age'] > 30]
print(filtered_df)

数据处理

 

Python

深色版本

# 添加新列
df['Gender'] = ['Female', 'Male', 'Male']
print(df)# 组合和聚合
grouped = df.groupby('Gender').mean()
print(grouped)# 缺失值处理
df.fillna(0, inplace=True)
print(df)

Matplotlib基础

Matplotlib是Python中最常用的绘图库,支持多种图表类型。

创建简单图表

 

Python

深色版本

import matplotlib.pyplot as plt# 创建折线图
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.title('Simple Line Plot')
plt.show()

散点图

 

Python

深色版本

# 创建散点图
x = np.random.rand(10)
y = np.random.rand(10)
plt.scatter(x, y)
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.title('Scatter Plot')
plt.show()

直方图

 

Python

深色版本

# 创建直方图
data = np.random.randn(1000)
plt.hist(data, bins=30, alpha=0.7)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram')
plt.show()

多子图

 

Python

深色版本

# 创建多个子图
fig, axs = plt.subplots(2, 2, figsize=(10, 10))axs[0, 0].plot([1, 2, 3, 4], [1, 4, 9, 16])
axs[0, 0].set_title('Line Plot')axs[0, 1].scatter(x, y)
axs[0, 1].set_title('Scatter Plot')axs[1, 0].hist(data, bins=30, alpha=0.7)
axs[1, 0].set_title('Histogram')axs[1, 1].bar(['A', 'B', 'C', 'D'], [10, 20, 15, 25])
axs[1, 1].set_title('Bar Chart')plt.tight_layout()
plt.show()

实战案例:股票数据分析

假设我们有一个包含股票价格的CSV文件,我们将使用NumPy、Pandas和Matplotlib对其进行处理和可视化。

读取数据

 

Python

深色版本

df = pd.read_csv('stock_prices.csv')
print(df.head())

数据预处理

 

Python

深色版本

# 转换日期列为日期类型
df['Date'] = pd.to_datetime(df['Date'])# 设置日期列为索引
df.set_index('Date', inplace=True)# 检查缺失值
print(df.isnull().sum())# 填充缺失值
df.fillna(method='ffill', inplace=True)

数据分析

 

Python

深色版本

# 计算每日收益率
df['Return'] = df['Close'].pct_change()
print(df.head())# 计算滚动平均
df['MA50'] = df['Close'].rolling(window=50).mean()
df['MA200'] = df['Close'].rolling(window=200).mean()
print(df.head())

数据可视化

 

Python

深色版本

# 绘制收盘价和移动平均线
plt.figure(figsize=(12, 6))
plt.plot(df['Close'], label='Close Price')
plt.plot(df['MA50'], label='50-day MA')
plt.plot(df['MA200'], label='200-day MA')
plt.xlabel('Date')
plt.ylabel('Price')
plt.title('Stock Price and Moving Averages')
plt.legend()
plt.show()

总结

NumPy提供了高效的数组操作功能,Pandas则在NumPy的基础上增加了丰富的数据处理工具,而Matplotlib则是最流行的Python绘图库之一。希望本文对你有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/12811.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【STL栈和队列】:高效数据结构的应用秘籍

前言: C 标准模板库(STL)为我们提供了多种容器,其中 stack(栈)和 queue(队列)是非常常用的两种容器。 根据之前C语言实现的栈和队列,(如有遗忘,…

香江电器从A股到港股7年漫长上市路,收入后退停滞不前

《港湾商业观察》施子夫 9月29日,湖北香江电器股份有限公司(以下简称,香江电器)递表港交所引起外界关注,公司的独家保荐机构为国金证券。 回顾香江电器的IPO之旅,可以说是颇为坎坷,多次尝试A股…

从python源码到可自动更新软件

相关阅读 标题链接如何打包python程序为exebczl【auto-py-to-exe 可视化打包python到exe】51CTO ZATA 1. python源码 打包时需要特别注意的源码编写规范 除了基本的 Python 编码规范之外,在准备程序进行打包时,还需要特别注意以下几点: 1.1 依赖管理 确保 requirements.t…

2024智能视觉与数据建模国际学术会议(ICIVD 2024)

重要信息 主会官网:www.iccaid.net 大会时间:2024年12月13-15日 大会地点:中国南昌 大会简介 2024智能视觉与数据建模国际学术会议(ICIVD 2024)作为第四届计算机图形学、人工智能与数据处理国际学术会议&#xff…

Linux磁盘分区

文章目录 磁盘分区 🏡作者主页:点击! 🤖Linux专栏:点击 ⏰️创作时间:2024年11月12日13点20分 磁盘分区 MBR 主启动记录分区方案指定了运行BIOS固件的系统上应如何对磁盘进行分区,存在与驱动开…

2. Spring Cloud 微服务基础环境搭建

2. Spring Cloud 微服务基础环境搭建 文章目录 2. Spring Cloud 微服务基础环境搭建前言1. 微服务需求解析2. 具体搭建微服务步骤:2.1 创建父工程 ,用于聚合其它微服务模块2.1.1 需求说明/图解2.1.2 具体实现步骤2.1.3 注意事项和具体细节 2.2 创建会员中…

微信朋友圈营销

朋友圈营销4567法则

【赵渝强老师】MySQL InnoDB的表空间

InnoDB存储引擎目前是MySQL默认的存储引擎,它主要由三部分组成,分别是:存储结构、内存结构和线程结构。InnoDB的存储结构又可以分为逻辑存储结构和物理存储结构。InnoDB存储引擎的逻辑存储结构和Oracle大致相同,所有数据都被逻辑地…

docker安装redis

1、拉取镜像 docker pull redis:latest运行之前需要再/data/redis创建redis.conf配置文件 内容如下 # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 ::1 #bind 127.0.0.1protected-mode noport 6379tcp-backlog 511requirepass roottimeout 0tcp-keepalive 300daemonize no…

vue项目多入口文件。vue.config.js如何修改配置

我们知道vue项目是单入口。指定一个入口文件去加载他所有的依赖。如果我们希望他有多个入口文件怎么办呢? 我们可以在public下面新建一个html的文件 然后src下新增一个文件夹,用来放APP.vue和 main.js。 然后修改vue.config.js。把他的pages改成2个入…

NCC前端调用查询弹框

系统自带的查询模板 弹框 调启使用默认的 查询模板 是在 单据模板的 列表模板中,有个查询区域 ,查询区域就是查询模板内容如果在列表页做客开 新增按钮 调启查询模板 无问题,但是目前需求是需要再卡片页面下调启系统标准的调启模板代码 //调…

SpringBoot中的注解详解(二)

四、Param() (mapper包 Dao层) Param(): 功能: 用于在Mapper接口的方法参数上标记参数名称,以便在SQL语句中引用这些参数。 参数命名:在Mapper接口的方法参数上使用Param注解,可以为参数指定一…

一文1800字使用Jmeter进行http接口性能测试!

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 为什么要做接口测试? 越底层发现b…

新版flask pin码计算

Python debug pin码计算 需开启debug from flask import Flask app Flask(__name__) app.route("/") def index():return "Hello World" app.run(debugTrue) /console路由填入上方控制台的 PIN 码即可执行 Python 命令 Flask 的 PIN 码计算仅与 werkze…

比 PyTorch 更快的嵌入Python库:FastEmbed

嵌入生成 已成为自然语言处理(NLP)中不可或缺的一部分。 无论是智能推荐、文本相似度计算,还是聊天机器人,嵌入技术都扮演着重要角色。然而,我们常常会陷入繁重的库和庞大的模型中,耗时费力。 今天&#…

大模型部署解决方案之TorchServe+vLLM

TorchServe 是PyTorch 中将模型部署到生产环境的一个解决方案。它用HTTP 或HTTPS API 封装模型,可以处理多种任务,包括为部署模型分配workers、负责客户端和服务器之间通信等。 10月份发布的TorchServe 0.12 增加了对GenAI的支持,简化了大语…

博弈论(零和博弈)英文版题解

翻译: 假设我们有一个两人零和游戏,每个玩家有两种行动,行收益矩阵如下: 计算行和列玩家的最小最大最优策略以及游戏的价值。 X Y A a11 a12 B a21 a22 选项: 1. 行玩家&#x…

虚拟现实辅助工程技术应用于员工培训

你还在使用传统的入职方法吗,比如印刷指南、演示、课堂培训、讲座等等?是时候改变了。虚拟现实辅助工程技术提供了一个机会,可以让新员工的入职过程更高效、更有趣,也更令人兴奋。想象一下这样一个场景,新员工可以在第…

【健康警钟】胆已切除,生活调理有“胆”更精彩!必看指南!

在现代社会,由于生活习惯、饮食习惯等多种因素,一些人可能不得不面对胆囊切除手术。虽然手术能够有效解决胆囊结石、胆囊炎等问题,但胆囊作为人体的一部分,其功能的丧失无疑会对生活带来一定影响。那么,胆被割了之后&a…

windows NGIMX配置WebSocket反向代理

linux下 据说nginx是要有 stream的模块 Linux安装Nginx步骤之后续,带stream模块-CSDN博客 Nginx从1.3.13版本就开始支持WebSocket linux 下参考如下链接 配置 Nginx 反向代理 WebSocket - 哈喽哈喽111111 - 博客园 (cnblogs.com) SSL的配置参考 【Linux】采用…