Python中Pandas详解之数据结构

news2025/2/23 14:18:16

文章目录

    • Pandas 数据分析
      • Pandas 简介
      • Pandas 安装
      • Series 类型数据
        • Series的创建
        • Series的访问
        • Series 中向量化操作与布尔索引
        • Series的切片
        • Series的缺失值
        • Series的增与删
        • Series的name
      • DataFrame 数据类型
        • DataFrame的创建
        • DataFrame的访问
        • DataFrame的删除
        • DataFrame的添加
          • 添加行
          • 添加列

Pandas 数据分析

Pandas 简介

Pandas是Python生态下的一个数据分析包,他对于Python数据分析的意义是十分重大的,他与NumPy的不同之处是支持图标和混杂数据运算的,而NumPy是基于数组构建的内容,他的各种图像生成也十分方便,并且支持各种数据存储文件、数据库、甚至Web中读取数据

Pandas 安装

和NumPy的安装一样使用

pip install pandas

命令安装即可

Series 类型数据

Series是Pandas的核心数据结构之一,也是理解DataFrame的基础

Series的创建

Series的中文翻译是系列,是一种类似于一维数组的结构,是数组和索引构成的

import pandas as pd
pd.Series(data, index = index)

在这两个参数中,data是数据源,可以是整数,字符串等,而默认索引就是数据的标签(label)

例如

a = pd.Series([1, 2, 5, 3, 2])
print(a)

屏幕截图 2023-12-25 170012.png

需要注意的是Series的内部是基于NumPy的N维数组构建的,因此内部的数据需要统一

其次Series增加对应的label作为索引,如果没有显示添加索引,Python会自动添加一个0到n-1的索引值,通常都是索引在左,数值在右边

当然,其中的索引也可以被更改为其他的内容,是类似于Python中的字典

Series还提供了一些简单的统计方法,describe()

例如

print(a.describe())

屏幕截图 2023-12-25 171020.png

参数说明
count数据个数
mean均值
std均方差
min最小值
max最大值
25%前25%的数据分位数
50%前50%的数据分位数
75%前75%的数据分位数
Series的访问

第一种最简单的访问方式就是通过下标存取Series对象内部的元素

当然也可以用label进行访问

需要说明的是,可以按照任意顺序一次访问多个数据

例如

print(a[[1,2,3]])

需要说明的是,同时访问多个数值就需要以列表的形式出现

对于两个Series对象还可以通过append()方法进行叠加操作,用来合并对象

但是当叠加对象时,索引就会混乱,因此当叠加时可以采用ignore_index=True,这样就可以重新添加索引

例如

a1.append(a2,ignore_index=True)
Series 中向量化操作与布尔索引

类似于NumPy,Pandas也支持广播操作,也就是加减乘除一个标量,

同样的Series也支持用布尔表达式提取符合条件的数值,而且Series也可以作为NumPy函数的一个参数进行数据运算

Series的切片

对于Series也可以使用切片操作选取处理其中的值,返回值依然是Series的对象

需要注意的时,与数字的切片不同,用label切片不是左闭右开,而是两边都是闭区间

Series的缺失值

在数据处理中会遇到缺失值,在Pandas会用NaN来表示

我们可以使用Pandas中的isnull()和notnull()来检测是否含有缺失值

对于isull()方法,他的返回值是一个布尔值Series对象,True表示为缺失值,False表示不是缺失值,notnull正好与之相反

这对海量数据的操作是十分友好的

Series的增与删

当我们要删除Series中的数据时,使用drop方法即可,他的参数就是label,也可以是列表,用于删除多项元素

添加数据就可以使用我们之前所说的append方法即可

Series的name

除了index和value,还有两个属性,是name和index.name

name可以立即为数值(value)列的名称,index可以理解为一个特殊的索引列,index.name就是索引列(index)的名称,就相当于是列名的作用

默认情况下都被设置为None,我们也可以通过代码进行直接赋值

DataFrame 数据类型

如果Series是Excel中的一列,那DataFrame就是Excel中的一张表

DataFrame的创建

DataFrame实际上可以理解为数据结构中带标签的二维数组,他由若干个Series构成

构建DataFrame的最常用的方法是先构建一个由列表或NumPy数组组成的字典,再将字典作为DataFrame中的参数

例如

df = pd.DataFrame({'name':['summer','morty','rick','jerry']})
print(df)

屏幕截图 2023-12-25 174125.png

这样我们就可以用若干字典的项来构建一张表了,左边的数字就是行数

例如

df = pd.DataFrame({'name': ['summer', 'morty', 'rick', 'jerry'],
                   'age': [17 , 14, 60,35],
                   'gender': ['female', 'male', 'male', 'male']})
print(df)

屏幕截图 2023-12-25 174600.png

我们也可以通过NumPy的数组生成DataFrame,我们也可以在创建DataFrame时指定列名和行名

例如

df2 = pd.DataFrame(data,columns=['one','two'],index=['a','b'])

本质上,DataFrame是由若干个Series构成的,那么Series就是DataFrame的天然数据源,同样的DataFrame也支持NumPy转置操作,也可以使用transpose()方法完成转置

DataFrame的访问

访问DataFrame的列很方便,因为DataFrame提供了columns属性,可以通过具体的列名称进行访问

例如

df.columns # 访问列名
df.columns.values[0] # 访问元素

DataFrame的一个神奇的地方在于,他可以把列明当作为对象中的一个元素进行获取

例如

df.列名

想要获取切片就和NumPy的数组操作时一模一样的,这里不多赘述

DataFrame的删除

类似于Series,删除操作也是使用drop方法删除一行或一列

我们也可以使用全局内置函数del,直接在DF中删除某行某列,因为drop方法是生成新的DF

DataFrame的添加
添加行

我们直接创建一个空的DF对象,再利用for循环逐个添加新的行即可

例如

df = pd.DataFrame(columns = ['1','2'])
for index in range(5):
    df.loc[index] = ['name '+str(index)] + list(randint(10, size=2))

使用loc方法就可以添加一个新的行,index就是DF对象中原先没有的行索引,再进行赋值

我们还可以使用append方法,可以同时批量添加多行数据,类似于NumPy的vstack,垂直堆叠的效果

添加列

和添加行相比就更加简单,实际上就是添加了一个列的名称,再对其内容进行赋值,我们也可以使用concat方法,类似于hstack,水平堆叠,将两个DF对象进行拼接

对于以上两种添加方法,也可以设置忽略原有的索引,进行重新定义索引的编号

对于Pandas的操作指令还有非常多,我们需要在实践中不断掌握,慢慢摸索,越用越熟,越用越精 感谢各位的支持,如果你发现文章中有任何不严谨或者需要补充的部分,欢迎在评论区指出

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

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

相关文章

【WPF.NET开发】数据绑定应用场景

目录 1、实现属性更改通知 示例 2、双向绑定​​​更新源 示例 3、对分层数据使用主-从模式 示例 4、对分层 XML 数据使用主-从模式 示例 5、绑定两个控件的属性 示例 6、创建和绑定到 ObservableCollection 示例 7、使用 XMLDataProvider 和 XPath 查询绑定到 XML…

Nginx快速入门:return、rewrite重定向、重写详解(六)

0. 引言 我们在日常的生产过程中,常常有需要重定向转发的需求,比如企业更换了域名,但又要保证之前的域名能访问,这就需要做重定向的跳转。 我们在之前的章节中学习了Nginx的负载均衡、各类转发代理配置,今天继续来补…

本地部署Jellyfin影音服务器并实现远程访问内网影音库

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及,各种各样的使用需求也被开发出来&…

Python基础入门第六节课笔记

while循环 for循环用于针对序列中的每个元素的一个代码块。 while循环是不断的运行,直到指定的条件不满足为止。 while 条件: 条件成立重复执行的代码1 条件成立重复执行的代码2 …….. 当条件成立时,执行下方缩…

Nature | 大型语言模型(LLM)能够产生和发现新知识吗?

大型语言模型(LLM)是基于大量数据进行预训练的超大型深度学习模型。底层转换器是一组神经网络,这些神经网络由具有自注意力功能的编码器和解码器组成。编码器和解码器从一系列文本中提取含义,并理解其中的单词和短语之间的关系。通…

制作TikTok获客脚本必备源代码!

在这个数字时代,TikTok已成为全球最受欢迎的社交媒体平台之一,无数的品牌和企业都试图通过这个平台吸引潜在客户。 但是,要想在TikTok上获得更多关注和粉丝,除了制作有趣、有创意的内容外,还需要借助一些自动化工具来…

vmware虚拟机不显示网络图标没有网络解决办法

1、虚拟机终端执行命令 sudo service network-manager stop sudo rm /var/lib/NetworkManager/NetworkManager.state sudo service network-manager start即可出现网络图标并正常连接到网络 2、设置网络适配器为NAT 先移除网络适配器再添加网络适配器网络连接选择NAT模式

洛谷 CSP-J2020 优秀的拆分 + 直播获奖

第一道题目:优秀的拆分: 样例以及数据范围: 这道题目我个人一开始是并未做出来的,因为一开始我并没有去学习位运算,然后请教了一下他人,接下来我将对这道题的思路进行解答:首先我们看到n的范围是…

安捷伦Agilent 8720ES矢量网络分析仪

Agilent安捷伦8720ES S-参数矢量网络分析仪 50MHz至20GHz 100 dB 的动态范围 优异的测量精度 2个测量通道 4个显示通道 频率和功率扫描 快扫描和数据传输速度 通过/失败测试,强大的标记功能 电校准(ECal) 内部使用测试序列的自动化 可选时域…

【网络编程】基于UDP数据报实现回显服务器程序

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得,欢迎大家在评论区交流讨论💌 前言 我们如果…

自媒体短视频音效、配乐素材哪里找?

找短视频音乐、音效素材就上这5个网站,免费下载,建议收藏。 1、潮点视频 https://shipin520.com/shipin-yy/?from_code2510 一个专门分享高质量视频的网站,站内还有非常丰富的配乐素材,全部都有详细的分类,可以选择…

【深度学习-目标检测】02 - Fast R-CNN 论文学习与总结

论文地址:Fast R-CNN 论文学习 1. 摘要(Abstract) Fast R-CNN方法的提出: 论文提出了一种快速区域卷积网络的办法,基于之前的R-CNN网络进行改进。 效率和准确性的提升: Fast R-CNN 在之前的工作基础上&a…

CentOS环境下Nacos2.3集成PostgreSQL

title: CentOS环境下Nacos2.3集成PostgreSQL date: 2023-12-21 19:15:00 categories: Nacos description: CentOS环境下Nacos2.3集成PostgreSQL 1. 目录 1. 目录2. 简介3. 安装部署 3.1. 部署模式3.2. 环境准备3.3. 下载安装文件3.4. PostgreSQL插件 3.4.1. 下载地址3.4.2. 结…

南邮算法期末复习

算法复习 知识点 多项式时间复杂度是指在多项式阶内(例如,O(n^2), O(n^3))增长的算法。AOE网中的关键路径 ,就是完成整个网络所需的最短时间,亦最长路径 ,AOE网中,往往有若干项活动可以平行的…

ThunderSearch(闪电搜索器)_网络空间搜索引擎工具_信息收集

文章目录 ThunderSearch简介1 项目地址2 使用方式2.1 配置文件config.json说明2.2 构建和运行 3 使用式例 ThunderSearch简介 ThunderSearch(闪电搜索器)是一款使用多个(【支持Fofa、Shodan、Hunter、Zoomeye、360Quake网络空间搜索引擎】网络空间搜索引…

如何实现https密钥对登录方式

先安装docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo systemctl start docker.service systemctl enable docker.service yum install -y docker…

为何教育行业需要搭建自己的知识付费平台,而非入驻其他公域流量平台

在当今的知识经济时代,教育行业正面临着前所未有的机遇和挑战。随着知识付费市场的蓬勃发展,越来越多的教育机构和个人教师选择进入这一领域,以扩大影响力并实现知识变现。然而,在选择进入知识付费市场的路径时,教育行…

2023年12月【考试战报】|ORACLE OCP 19C考试通过

2023年10月【考试战报】|ORACLE OCP 19C考试通过-CSDN博客文章浏览阅读122次。自OCP认证进入中国以来,越来越被大多数DBA所认可,也越来越被企业所重视,90%以上DBA深造,都会选择OCP认证。随着OCP认证在全国范围内的普及&#xff0c…

【hacker送书第11期】Python数据分析从入门到精通

探索数据世界,揭示未来趋势 《Python数据分析从入门到精通》是你掌握Python数据分析的理想选择。本书深入讲解核心工具如pandas、matplotlib和numpy,助您轻松处理和理解复杂数据。 通过matplotlib、seaborn和创新的pyecharts,本书呈现生动直…

poi-tl之图表操作(基于模板)

poi-tl&#xff08;poi template language&#xff09;是Word模板引擎&#xff0c;使用Word模板和数据创建很棒的Word文档。 核心思想是在模板中放一个占位符&#xff0c;在代码中替换该占位符即可。 poi官网地址 点这里 基础工作 maven配置 <dependency><groupId&g…