详细介绍pandas 在python中的用法
Pandas 是 Python 中非常流行的数据分析和处理库,特别适用于处理结构化数据。它构建在 NumPy 之上,提供了更高级的功能,例如数据清理、整理、筛选和统计分析。Pandas 的核心数据结构是 Series 和 DataFrame,分别用于处理一维数据和二维数据。
下面是 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) 选择行:使用loc和iloc
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”
问题: 给定单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 输入:head [1,2,3,4,5], left 2, right 4 输出…...
15分钟学 Python 第35天 :Python 爬虫入门(一)
Day 35 : Python 爬虫简介 1.1 什么是爬虫? 网页爬虫(Web Crawler)是自动访问互联网并提取所需信息的程序。爬虫的主要功能是模拟用户通过浏览器访问网页的操作,从而实现对网页内容的批量访问与信息提取。它们广泛应用于数据收集…...
【Qt】Qt学习笔记(一):Qt界面初识
Qt 是一个跨平台应用程序和 UI 开发框架。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。Qt Creator是跨平台的Qt集成开发环境。 创建项目 Qt的一些界面,初学时一般选择Qt Widgets …...
Unity3D游戏的内存控制详解
前言 Unity3D是一款流行的游戏引擎,支持多种平台,包括PC、移动设备和VR等。随着游戏的复杂性不断提高,Unity3D的内存管理变得尤为重要。本文将详细介绍Unity3D游戏中的内存控制技术,包括自动内存管理、对象池、延迟加载资源和手动…...
《数据结构》--栈【概念应用、图文并茂】
本节讲完栈下次再讲一下队列,最后补充一个串,我们的线性结构基本就完事了。下图中黄色框框圈中的是我们今日份内容(分为两篇博客): 知识体系图 栈(Stack-LIFO)结构 栈的基础概念 栈(Stack)是一个后进先出(Last-In-First-Out)的一个特殊数据…...
国外电商系统开发-运维系统文件下载
文件下载,作者设计的比较先进,如果下载顺利,真的还需要点两次鼠标,所有的远程文件就自动的下载到了您的PC电脑上了。 现在,请您首选选择要在哪些服务器上下载文件: 选择好了服务器以后,现在选择…...
【CSS in Depth 2 精译_045】7.1 CSS 响应式设计中的移动端优先设计原则(上)
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对…...
在线教育新篇章:SpringBoot系统开发策略
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
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! 前言介绍Kimi为什么选择Kimi如何使用Kimi在线编辑PPT下载生成的PPT自己编辑 结语 😀大家好!我是向阳🌞,一个想成为优秀全栈开发工程师的有志青年! 📔今天不来讨论前后…...
java.lang.NoClassDefFoundError: kotlin/Result解决方案
问题 在控制窗口上虽然报错是找不到对应的class,但是呢在我们导入kotlin的后,还是报相同的异常,在网上查找了各种资料,都没有解决方案。 问题分析 在idea2021之后,kotlin都使用远程仓库(kotlinx-coeouti…...
LSTM的变体
一、GRU 1、什么是GRU 门控循环单元(GRU)是一种循环神经网络(RNN)的变体,它通过引入门控机制来控制信息的流动,从而有效地解决了传统RNN中的梯度消失问题。GRU由Cho等人在2014年提出,它简化了…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
