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

详细介绍pandas 在python中的用法

Pandas 是 Python 中非常流行的数据分析和处理库,特别适用于处理结构化数据。它构建在 NumPy 之上,提供了更高级的功能,例如数据清理、整理、筛选和统计分析。Pandas 的核心数据结构是 SeriesDataFrame,分别用于处理一维数据和二维数据。

下面是 Pandas 的详细用法介绍:

1. 导入Pandas

在使用 Pandas 之前,首先需要导入库,通常使用别名 pd

import pandas as pd

2. 数据结构

a) Series:一维数据结构

Series 是一种类似于 Python 列表或字典的对象,但每个数据项都有一个索引。

# 创建一个简单的Series
s = pd.Series([1, 3, 5, 7, 9])
print(s)
# 输出:
# 0    1
# 1    3
# 2    5
# 3    7
# 4    9
# dtype: int64

可以为 Series 自定义索引:

s = pd.Series([1, 3, 5, 7, 9], index=['a', 'b', 'c', 'd', 'e'])
print(s)
# 输出:
# a    1
# b    3
# c    5
# d    7
# e    9
# dtype: int64
b) DataFrame:二维数据结构

DataFrame 是 Pandas 中最常用的数据结构,可以理解为一个二维表格,类似于数据库中的表格或 Excel 表。

# 从字典创建DataFrame
data = {'Name': ['Tom', 'Jerry', 'Mickey'],'Age': [20, 22, 21],'Score': [88, 92, 95]}df = pd.DataFrame(data)
print(df)
# 输出:
#      Name  Age  Score
# 0     Tom   20     88
# 1   Jerry   22     92
# 2  Mickey   21     95

3. 读取数据

a) 读取CSV文件

Pandas 可以轻松地读取各种文件格式,比如 CSV 文件、Excel 文件、SQL 数据库等。

# 读取CSV文件
df = pd.read_csv('data.csv')
print(df.head())  # 查看前5行数据
b) 读取Excel文件
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df.head())

4. 数据选择

a) 选择列

你可以通过列名来选择 DataFrame 中的某一列或多列。

# 选择单列
print(df['Name'])# 选择多列
print(df[['Name', 'Score']])
b) 选择行:使用lociloc
  • loc 是通过标签进行索引。
  • iloc 是通过整数位置进行索引。
# 通过标签选择行
print(df.loc[0])  # 选择第1行# 通过整数位置选择行
print(df.iloc[1])  # 选择第2行# 选择多行多列
print(df.loc[0:2, ['Name', 'Age']])

5. 数据过滤和条件筛选

Pandas 提供了方便的方式来对数据进行条件筛选。

# 筛选年龄大于21的数据
filtered_df = df[df['Age'] > 21]
print(filtered_df)# 多条件筛选
filtered_df = df[(df['Age'] > 20) & (df['Score'] > 90)]
print(filtered_df)

6. 数据清理

a) 处理缺失值

缺失值在数据分析中非常常见,Pandas 提供了多种方法来处理它们。

# 查看缺失值情况
print(df.isnull())# 删除包含缺失值的行
df_cleaned = df.dropna()
print(df_cleaned)# 用指定值填充缺失值
df_filled = df.fillna(0)
print(df_filled)
b) 删除重复值
df_deduped = df.drop_duplicates()
print(df_deduped)
c) 修改列名
df.rename(columns={'Name': 'Student Name', 'Age': 'Student Age'}, inplace=True)
print(df)

7. 数据转换

a) 数据类型转换
# 将'Age'列转换为浮点数
df['Age'] = df['Age'].astype(float)
print(df.dtypes)
b) 应用函数:apply()map()
# 对DataFrame的列应用函数
df['Score'] = df['Score'].apply(lambda x: x + 5)
print(df)# 对Series应用函数
df['Name'] = df['Name'].map(lambda x: x.upper())
print(df)

8. 数据统计和分析

Pandas 提供了丰富的统计函数和聚合功能,方便进行快速的数据分析。

a) 描述性统计
# 基本统计信息
print(df.describe())
b) 分组聚合
# 按'Age'列分组,计算'Score'的平均值
grouped_df = df.groupby('Age')['Score'].mean()
print(grouped_df)
c) 透视表(Pivot Table)
# 创建透视表
pivot_table = pd.pivot_table(df, values='Score', index='Age', aggfunc='mean')
print(pivot_table)

9. 数据的合并和连接

a) 合并数据

可以使用 merge() 函数将两个 DataFrame 进行合并,类似 SQL 中的 join

# 左连接合并
df1 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie']})
df2 = pd.DataFrame({'ID': [1, 2, 4], 'Score': [85, 90, 95]})merged_df = pd.merge(df1, df2, on='ID', how='left')
print(merged_df)
b) 连接数据

可以使用 concat() 函数进行数据的纵向或横向拼接。

# 纵向拼接
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})concatenated_df = pd.concat([df1, df2], axis=0)
print(concatenated_df)

10. 数据可视化

Pandas 可以与 Matplotlib 配合使用进行简单的数据可视化。

import matplotlib.pyplot as plt# 简单的折线图
df['Score'].plot()
plt.show()# 柱状图
df['Score'].plot(kind='bar')
plt.show()

11. 导出数据

a) 导出到CSV文件
df.to_csv('output.csv', index=False)
b) 导出到Excel文件
df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)

12. 时间序列处理

Pandas 提供了非常强大的时间序列功能,可以方便地进行时间戳数据的处理。

# 创建时间序列
date_range = pd.date_range('2024-01-01', periods=5, freq='D')
print(date_range)# 将时间戳作为索引
df_time = pd.DataFrame({'Value': [1, 2, 3, 4, 5]}, index=date_range)
print(df_time)

总结

Pandas 是一个强大而灵活的数据分析工具,能够处理从简单到复杂的数据操作,适合于处理表格数据、时间序列数据、统计分析等。Pandas 提供的高级数据结构和丰富的函数库使得数据分析任务变得更加高效。

相关文章:

详细介绍pandas 在python中的用法

Pandas 是 Python 中非常流行的数据分析和处理库,特别适用于处理结构化数据。它构建在 NumPy 之上,提供了更高级的功能,例如数据清理、整理、筛选和统计分析。Pandas 的核心数据结构是 Series 和 DataFrame,分别用于处理一维数据和…...

八字命理测算系统开发-源码搭建

八字命理测算系统的开发是一个结合了传统命理学与现代科技的项目,旨在为用户提供基于个人出生年、月、日、时等信息的个性化命理分析和预测。以下是开发此类系统时需要考虑的关键步骤和技术要点: 一、前期准备 1.确定需求和目标用户 与客户或团队讨论&am…...

Python批量读取mat文件

一、前言 使用Python中的h5py库实现同一目录下多个mat文件的批量读取功能,获取数据、lon、lat等信息,其他变量内容可根据自己的mat格式进行更改。 二、代码 def open_matfiles(dir, start_indexNone, end_indexNone,lev_indexNone,lev_valueNone):打开…...

UE4 材质学习笔记05(凹凸偏移和视差映射/纹理压缩设置)

一.凹凸偏移和视差映射 1.偏移映射 这需要一个高度图并且它的分辨率很低,只有256*256,事实上,如果高度图的分辨率比较低并且有点模糊,效果反而会更好 然后将高度图输出到BumpOffset节点的height插槽中, 之后利用得到…...

基于贝叶斯决策的 CAD 程序设计方案

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

算法: 二分查找题目练习

文章目录 二分查找二分查找在排序数组中查找元素的第一个和最后一个位置搜索插入位置x 的平方根山脉数组的峰顶索引寻找峰值寻找旋转排序数组中的最小值点名 总结模版 二分查找 二分查找 没啥可说的,轻轻松松~ class Solution {public int search(int[] nums, int target) {i…...

Qt开发技巧(十三)QList插入操作,扩展类型的使用,关于QSS的坑,Qt的延时方法,Qt编译的三种版本,环境搭建多练练,指向Qt源码的报错

继续讲一些Qt开发中的技巧操作: 1.QList插入操作 关于QList队列的处理中,我们最常用的就是调用append函数添加item,往前插入item很多人第一印象就是调用insert(0,xxx)来插入,其实QList完全提供了往前追加item的函数prepend()、pus…...

docker快速上手

一个轻量的虚拟机,让程序员不再纠结于环境部署,更多集中于代码编写,基础建设,开发 作用: 打包:把你软件运行所需的所有东西打包到一起 分发:把你打包好的“安装包”上传到一个镜像仓库&#…...

JAVA学习-练习试用Java实现“反转链表 II”

问题&#xff1a; 给定单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出…...

15分钟学 Python 第35天 :Python 爬虫入门(一)

Day 35 : Python 爬虫简介 1.1 什么是爬虫&#xff1f; 网页爬虫&#xff08;Web Crawler&#xff09;是自动访问互联网并提取所需信息的程序。爬虫的主要功能是模拟用户通过浏览器访问网页的操作&#xff0c;从而实现对网页内容的批量访问与信息提取。它们广泛应用于数据收集…...

【Qt】Qt学习笔记(一):Qt界面初识

Qt 是一个跨平台应用程序和 UI 开发框架。使用 Qt 您只需一次性开发应用程序&#xff0c;无须重新编写源代码&#xff0c;便可跨不同桌面和嵌入式操作系统部署这些应用程序。Qt Creator是跨平台的Qt集成开发环境。 创建项目 Qt的一些界面&#xff0c;初学时一般选择Qt Widgets …...

Unity3D游戏的内存控制详解

前言 Unity3D是一款流行的游戏引擎&#xff0c;支持多种平台&#xff0c;包括PC、移动设备和VR等。随着游戏的复杂性不断提高&#xff0c;Unity3D的内存管理变得尤为重要。本文将详细介绍Unity3D游戏中的内存控制技术&#xff0c;包括自动内存管理、对象池、延迟加载资源和手动…...

《数据结构》--栈【概念应用、图文并茂】

本节讲完栈下次再讲一下队列&#xff0c;最后补充一个串&#xff0c;我们的线性结构基本就完事了。下图中黄色框框圈中的是我们今日份内容(分为两篇博客)&#xff1a; 知识体系图 栈(Stack-LIFO)结构 栈的基础概念 栈(Stack)是一个后进先出(Last-In-First-Out)的一个特殊数据…...

国外电商系统开发-运维系统文件下载

文件下载&#xff0c;作者设计的比较先进&#xff0c;如果下载顺利&#xff0c;真的还需要点两次鼠标&#xff0c;所有的远程文件就自动的下载到了您的PC电脑上了。 现在&#xff0c;请您首选选择要在哪些服务器上下载文件&#xff1a; 选择好了服务器以后&#xff0c;现在选择…...

【CSS in Depth 2 精译_045】7.1 CSS 响应式设计中的移动端优先设计原则(上)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…...

在线教育新篇章:SpringBoot系统开发策略

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

cmdsh

#!/bin/bash #set -x bindirname "$0" bincd "$bin"; pwd echo $bin if [ $# -lt 2 ] then echo “Usage: ./runRemoteCmd.sh Command MachineTag” echo “Usage: ./runRemoteCmd.sh Command MachineTag confFile” exit fi cmd$1 tag$2 if [ a’ 3 ′…...

一键生成PPT的AI工具-Kimi!

一键生成PPT的AI工具-Kimi&#xff01; 前言介绍Kimi为什么选择Kimi如何使用Kimi在线编辑PPT下载生成的PPT自己编辑 结语 &#x1f600;大家好&#xff01;我是向阳&#x1f31e;&#xff0c;一个想成为优秀全栈开发工程师的有志青年&#xff01; &#x1f4d4;今天不来讨论前后…...

java.lang.NoClassDefFoundError: kotlin/Result解决方案

问题 在控制窗口上虽然报错是找不到对应的class&#xff0c;但是呢在我们导入kotlin的后&#xff0c;还是报相同的异常&#xff0c;在网上查找了各种资料&#xff0c;都没有解决方案。 问题分析 在idea2021之后&#xff0c;kotlin都使用远程仓库&#xff08;kotlinx-coeouti…...

LSTM的变体

一、GRU 1、什么是GRU 门控循环单元&#xff08;GRU&#xff09;是一种循环神经网络&#xff08;RNN&#xff09;的变体&#xff0c;它通过引入门控机制来控制信息的流动&#xff0c;从而有效地解决了传统RNN中的梯度消失问题。GRU由Cho等人在2014年提出&#xff0c;它简化了…...

LeetCode讲解篇之852. 山脉数组的峰顶索引

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们可以采用二分查找&#xff0c;每次查询区间中点元素与中点下一个元素比较 如果中点元素大于其下一个元素&#xff0c;则表示从中点开始向右是递减趋势&#xff0c;那峰值索引一定小于等于中点&#xff0c;我…...

矿井人员数据集,用于目标检测,深度学习,采用txt打标签,即yolo格式,也有原文件可以自己转换。总共3500张图片的数据量,划分给训练集2446张,

矿井人员数据集&#xff0c;用于目标检测&#xff0c;深度学习&#xff0c;采用txt打标签&#xff0c;即yolo格式&#xff0c;也有原文件可以自己转换。总共3500张图片的数据量&#xff0c;划分给训练集2446张&#xff1a; ### 矿井人员数据集用于目标检测的详细说明 #### 1. …...

消息队列RabbitMQ

文章目录 1. 简介与安装2. 基本概念3. SpringAMQP4. 交换机类型5. 消息转换器5.1 默认转换器5.2 配置JSON转换器 6 生产者的可靠性6.1 生产者超时重连机制6.2 生产者确认机制 6. MQ的可靠性6.1 数据持久化6.2 惰性队列 Lazy Queue 7. 消费者的可靠性7.1 消费者确认机制7.2 失败…...

RabbitMQ概述

什么是MQ MQ (message queue)消息队列 MQ从字⾯意思上看,本质是个队列,FIFO先⼊先出&#xff0c;只不过队列中存放的内容是消息(message).消息可以⾮常简单,⽐如只包含⽂本字符串,JSON等,也可以很复杂,⽐如内嵌对象 RabbitMQ是MQ的一种实现,是Rabbit 企业下的⼀个消息队列产…...

Golang学习路线

以下是一条学习Golang&#xff08;Go语言&#xff09;的路线&#xff1a; 一、基础入门 1. 环境搭建 安装Go编译器&#xff0c;在官网&#xff08;https://golang.org/dl/&#xff09;下载适合操作系统的安装包并配置好环境变量。 2. 语法学习学习变量、数据类型&#xff08…...

Flink从ck拉起任务脚本

#!/bin/bashAPP_NAME"orderTest"CHECKPOINT_BASE_PATH"hdfs:///jobs/flink/checkpoints/aaa-test/"is_running$(yarn application -list | grep -w "$APP_NAME" | grep -c "RUNNING")if [ $is_running -gt 0 ]; thenecho "应用程…...

GADBench Revisiting and Benchmarking Supervised Graph Anomaly Detection

Neurips 23 推荐指数&#xff1a; #paper/⭐⭐⭐ 领域&#xff1a;图异常检测 胡言乱语&#xff1a; neurips 的benchmark模块的文章总能给人一些启发性的理解&#xff0c;这篇的insight真有意思。个人感兴趣的地方会加粗。此外&#xff0c;这篇文章和腾讯AIlab合作&#xff…...

某象异形滑块99%准确率方案

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 该文章模型已经上线ocr识别网站,欢迎测试!!,地址:https://yxlocr.windy-rain.cn/ocr/slider/6 所谓的顶象异形滑块,是指没有采用常规的缺口,使用各种形状的…...

CDN绕过学习

1.什么是CDN&#xff1f; CDN就是分布在各个地区的服务器&#xff0c;这些服务器储存着数据的副本。 哪些服务器比较接近你&#xff0c;当你发起请求时&#xff0c;提前就会快速为你提供服务。 总结来说就是&#xff1a; 其实就是用来加速访问的&#xff0c;以及缓解压力&a…...

SpringBoot日常:redission的接入使用和源码解析

文章目录 一、简介二、集成redissionpom文件redission 配置文件application.yml文件启动类 三、JAVA 操作案例字符串操作哈希操作列表操作集合操作有序集合操作布隆过滤器操作分布式锁操作 四、源码解析 一、简介 Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格…...