pandas基础操作2

news2025/2/28 15:38:15

数据读取

我们想要使用 Pandas 来分析数据,那么首先需要读取数据。大多数情况下,数据都来源于外部的数据文件或者数据库。Pandas 提供了一系列的方法来读取外部数据,非常全面。下面,我们以最常用的 CSV 数据文件为例进行介绍。

读取数据 CSV 文件的方法是 pandas.read_csv(),你可以直接传入一个相对路径,或者是网络 URL

df = pd.read_csv("path/name.csv")
df
df.head()  # 默认显示前 5 条
df.tail(7)  # 指定显示后 7 条
df.describe() #escribe() 相当于对数据集进行概览,会输出该数据集每一列数据的计数、最大值、最小值等。
df.values #Pandas 基于 NumPy 开发,所以任何时候你都可以通过 .values 将 DataFrame 转换为 NumPy 数组。
df.columns  # 查看列名 结果:Index(['Zip Code', 'Total Population', 'Median Age', 'Total Males','Total Females', 'Total Households', 'Average Household Size'],dtype='object')
df.index  # 查看索引 结果:RangeIndex(start=0, stop=319, step=1)
df.shape  # 查看行列大小

由于 CSV 存储时是一个二维的表格,那么 Pandas 会自动将其读取为 DataFrame 类型。

pd.read_ 前缀开始的方法还可以读取各式各样的数据文件,且支持连接数据库。这里,我们不再依次赘述,你可以阅读 官方文档相应章节 熟悉这些方法以及搞清楚这些方法包含的参数。

通过上面的内容,我们已经知道一个 DataFrame 结构大致由 3 部分组成,它们分别是列名称、索引和数据。

img

df = pd.DataFrame([{'one': 1, 'two': 4},
                   {'one': 2, 'two': 5},
                   {'one': 3, 'two': 6},
                  {'777': 3, '888': 6}])
df
onetwo777888
01.04.0NaNNaN
12.05.0NaNNaN
23.06.0NaNNaN
3NaNNaN3.06.0

这个是输出结果,我们可以看到,相同的键就会合并,会在一列上面,然后根据索引位置摆放,不同的键就会单独做一列,然后更具索引位置摆放数据,有些地方没有数据,就是NaN,
一定要自己操作体验一下
在数据处理和分析中,NaN 是一个常见的术语,代表 “Not a Number”。它是一个特殊的浮点值,用于表示未定义或不可表示的值。在 Pandas 中,NaN 通常用来表示缺失或空缺的数据。

以下是关于 NaN 的几个要点:

  1. 数据缺失的表示:在 Pandas 的 DataFrameSeries 中,NaN 用于表示缺失的或未知的数据。
  2. 数学运算中的行为NaN 与任何数字进行数学运算的结果都是 NaN,这是为了避免给出错误的计算结果。
  3. 数据清洗:在数据分析过程中,经常需要处理 NaN 值。常用的方法包括删除含有 NaN 的行或列、用特定值填充 NaN(例如平均值、中位数等),或使用插值方法估算 NaN 的值。
  4. 检测和过滤:Pandas 提供了函数如 isna()notna() 来检测数据中的 NaN 值,以便进行过滤或其他处理。

数据选择

数据预处理过程中,我们往往会对数据集进行切分,只将需要的某些行、列,或者数据块保留下来,输出到下一个流程中去。这也就是所谓的数据选择,或者数据索引。

由于 Pandas 的数据结构中存在索引、标签,所以我们可以通过多轴索引完成对数据的选择。

基于索引数字选择

当我们新建一个 DataFrame 之后,如果未自己指定行索引或者列对应的标签,那么 Pandas 会默认从 0 开始以数字的形式作为行索引,并以数据集的第一行作为列对应的标签。其实,这里的「列」也有数字索引,默认也是从 0 开始,只是未显示出来。

所以,我们首先可以基于数字索引对数据集进行选择。这里用到的 Pandas 中的 .iloc 方法。该方法可以接受的类型有:

  1. 整数。例如:5
  2. 整数构成的列表或数组。例如:[1, 2, 3]
  3. 布尔数组。
  4. 可返回索引值的函数或参数。

下面,我们使用上方的示例数据进行演示。

首先,我们可以选择前 3 行数据。这和 Python 或者 NumPy 里面的切片很相似。

df.iloc[:3] #第一到第三行
df.iloc[5] #第五行
df.iloc[[1, 3, 5]] #单独选择需要的行

选择列是不是很简单几乎和切片一模一样

选择行学会以后,选择列就应该能想到怎么办了。例如,我们要选择第 2-4 列。

df.iloc[:, 1:4] #前面是不是全部的行都要呀,之后就是2-4列的切片

基于标签名称选择

除了根据数字索引选择,还可以直接根据标签对应的名称选择。这里用到的方法和上面的 iloc 很相似,少了个 idf.loc[]

df.loc[] 可以接受的类型有:

  1. 单个标签。例如:2'a',这里的 2 指的是标签而不是索引位置。
  2. 列表或数组包含的标签。例如:['A', 'B', 'C']
  3. 切片对象。例如:'A':'E',注意这里和上面切片的不同之处,首尾都包含在内
  4. 布尔数组。
  5. 可返回标签的函数或参数。
df.loc[0:2] #0,1,2行包含首尾
Zip CodeTotal PopulationMedian AgeTotal MalesTotal FemalesTotal HouseholdsAverage Household Size
091371173.50111.00
1900015711026.62846828642129714.40
2900025122325.52487626347117314.36

再选择 1,3,5 行:

df.loc[[0, 2, 4]]
Zip CodeTotal PopulationMedian AgeTotal MalesTotal FemalesTotal HouseholdsAverage Household Size
091371173.50111.00
2900025122325.52487626347117314.36
4900046218034.83130230878225472.73

然后,选择 2-4 列,是列,所以需要输入列名:

df.loc[:, 'Total Population':'Total Males']
Total PopulationMedian AgeTotal Males
0173.50
15711026.628468
25122325.524876
36626626.332631
46218034.831302
3143815828.418711
315213843.31121
3161891032.49491
31738844.5263
318728530.93653

最后,选择 1,3 行和 Median Age 后面的列:

df.loc[[0, 2], 'Median Age':]
Median AgeTotal MalesTotal FemalesTotal HouseholdsAverage Household Size
073.50111.00
225.52487626347117314.36

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

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

相关文章

前端笔记(一):HTML5 入门学习

前言: 在完成 Java 的 SpringBoot 学习并练习了几个项目后,出于对编程的兴趣和没有组织的局限性,为了开发一些个人的小项目,我将开始前端部分的学习,预计会学到 Vue 框架,同时会把自己的学习笔记发布成博客…

赤龙ERP项目

目录 ERP简介 (1)软件永久免费、持续迭代、gitee开源,github开源 (2)实现主流程的业务和财务闭环 (3)完备的文档,易于部署和二次开发 技术与平台 SpringBoot2MySQLRedisJDK1.8Tom…

鸿蒙是Android套壳么,当然不是,ArkTS还是很有意思的

前段时间看新闻,说是明年开始鸿蒙就要和andorid脱钩了。 大概就是这样的: 看到这个,我兴趣就来了。我有个华为P30,升级过鸿蒙系统,用起来也没啥变化,兼容andorid应用,然后就是开机去掉了Powere…

多表查询与子查询

问题的引出: 这里有一个留言板,其中一条评论包含了商品名称good(商品表),留言content(留言表)。 那么请问如将这个评论从数据库查询出来?这就涉及到了多表查询。 多表查询是指基于两个和两个以上的表查询.…

mediapipe+opencv实现保存图像中的人脸,抹去其他信息

mediapipeopencv MediaPipe本身不提供图像处理功能,它主要用于检测和跟踪人脸、手势、姿势等。如果您想要从图像中仅提取人脸主要信息并去除其他信息. # codingutf-8 """project: teatAuthor:念卿 刘file: test.pydate&…

【KPDK】概述

DPDK的主要目标是为数据平面应用程序中的快速数据包处理提供一个简单、完整的框架。用户可以使用代码来理解所采用的一些技术,构建原型或添加自己的协议栈。可提供使用DPDK的替代生态系统选项。 DPDK框架通过创建环境抽象层(EAL)为特定环境创…

LeetCode Hot100 169.多数元素

题目: 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 方法一:哈希表 ​ class Solution {public int…

记录一次vscode markdown的图片路径相关插件学习配置过程

插件及说明查找过程 csdn搜索markdown图片路径,找到关于这一款插件的回答。打开vscode拓展搜索Paste Image这款插件,看到下载量挺高的,应该不赖。 点击仓库,进入该插件开源的github仓库,查看README文件阅读说明. 淡然在Vscode 插件项目下的细…

C语言之结构体

一.前言引入. 我们知道在C语言中有内置类型,如:整型,浮点型等。但是只有这些内置类 型还是不够的,假设我想描述学⽣,描述⼀本书,这时单⼀的内置类型是不⾏的。描述⼀个学⽣需要名字、年龄、学号、⾝⾼、体…

vue $nextTick 样式私有化

$nextTick 先updated中更新,再nextTick 状态更改做什么事情: updated $nextTick 同步执行完之后,把当前放到队列中 $forceUpdate->sub.update() // 把更新操作放在队列里面 队列机制 基于发布订阅模式,callbacks队列 更新完毕…

Java类的初始化顺序

类初始化顺序遵循以下三个原则(优先级依次递减) 1、静态对象(变量)优先于非静态对象(变量)初始化,其中静态对象(变量)只初始化一次,而非静态对象&…

揭秘原型链:探索 JavaScript 面向对象编程的核心(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

[UnityWebGL]修改webgl启动模板

首先了解什么是WEBGGL启动模板,如下图: 其次,启动模板在哪里设置,如下图: 最后,怎么改启动模板里面的内容(提供最简单的方式,直接改官方的): 1、首先在Asset…

Spring Cloud Gateway与spring-cloud-circuitbreaker集成与理解

官方文档 spring-cloud-gateway文档地址: https://spring.io/projects/spring-cloud-gateway#overview spring-cloud-circuitbreaker文档地址: https://spring.io/projects/spring-cloud-circuitbreaker 两者关系 首先spring-cloud-gateway集成了断路…

[c++]——string类____详细初步了解string类的运用

在成为大人的路上喘口气. 目录 🎓标准库类型string 🎓定义和初始化string对象 💻string类对象的常见构造 💻string类对象的不常见构造 💻读写string对象 🎓 string类对象的修改操作 &#x1f4…

Opencv制作电子签名(涉及知识点:像素过滤,图片通用resize函数,像素大于某个阈值则赋值为其它的像素值)

import cv2def resize_by_ratio(image, widthNone, heightNone, intercv2.INTER_AREA):img_new_size None(h, w) image.shape[:2] # 获得高度和宽度if width is None and height is None: # 如果输入的宽度和高度都为空return image # 直接返回原图if width is None:h_ratio …

git-6

1.如何用project管理issue? 用project看板管理issue 有五种类型:None、Basic kanban、Automated kanban、Automated kanban with reviews、Bug triage 首先选用Bug triage 利用看板就会很直观,很便捷,Issues也支持,有…

OpenTelemetry系列 - 第4篇 OpenTelemetry K8S生态

目录 一、【Helm】添加OTel Helm repo二、【Helm Chart】OTel Collector2.1 daemonset2.2 deloyment 三、【K8S Operator】OTel Operator3.1 安装OTel Operator3.2 部署OpenTelemetryCollector3.2.1 Deloyment Mode3.2.2 DeamonSet Mode3.2.3 StatefulSetMode3.2.4 Sidecar Mod…

思维模型 莫扎特效应

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。音乐激发无限潜能。 1 莫扎特效应的应用 1.1 莫扎特效应在教育领域的应用-Baby Einstein”公司 在美国,有一家名为“Baby Einstein”的公司,该公司生产和销售专门为…

SQL自学通之简介

目录 一、SQL 简史 二、数据库简史 1、Dr. Codds 对关系型数据库系统的十二条规则 2、设计数据库的结构 3、数据库的前景 4、对于什么是客户机/服务器型电脑系统 BernardH.Boar的定义如下: 5、交互式语言 6、易于实现 7、SQL 总览 三、流行的 SQL 开发工具…