一文搞定Pandas核心概念之DataFrame

news2024/11/19 3:24:59

 

DataFrame概述

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。如下图所示:整个表格是DataFrame,每一列就是一个Series。关于Series可以参考文章: https://blog.csdn.net/liwenxiang629/article/details/128184091

 

DataFrame 构造方法如下:

pandas.DataFrame( data, index, columns, dtype, copy)

参数说明:

data:一组数据(ndarray、series, map, lists, dict 等类型)。

index:索引值,或者可以称为行标签。

columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。

dtype:数据类型。

copy:拷贝数据,默认为 False。

DataFrame获取元素的经典实例

实例1

import pandas as pd
data = [['kevin',40],['mike',40],['tony',50]]
df = pd.DataFrame(data,columns=['name','Age'])
print(df)

输出

<class 'pandas.core.frame.DataFrame'>

name Age

0 kevin 40

1 mike 40

2 tony 50

实例2

我们还可以使用字典创建DataFrame

data = [{'a': 40, 'b': 40},{'c': 50},{'a': 50, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print (df)

a b c

0 40.0 40.0 NaN

1 NaN NaN 50.0

2 50.0 10.0 20.0

注意这里没有对应的部分数据为 NaN。

实例3

我们可以改变用如下方法改变index的值,代码如下:

data1 = [['kevin',40],['mike',40],['tony',50]]
df = pd.DataFrame(data1,columns=['name','Age'],index = ["a", "b", "c"])
print(df)

输出

name Age

a kevin 40

b mike 40

c tony 50

默认索引值是0 1 2

实例4

Pandas 可以使用 loc 属性返回指定索引对应到某一行:

例如获取上面例子中kevin的值,可以通过如下方法

print(df.loc["a","name"])

kevin

实例5

获取a 行所有的值可以使用

print(df.loc["a"])

输出

name kevin

Age 40

Name: a, dtype: object

实例6

获取name列所有的值可以使用

print(df.loc[:,"name"])

输出

a kevin

b mike

c tony

Name: name, dtype: object

实例7

获取index a和b 所在的name列的值可以使用

print(df.loc["a":"b","name"])

输出

a kevin

b mike

Name: name, dtype: object

API的概要说明

数据清理

  • df.columns = ['a','b','c']:重命名列名
  • pd.isnull():检查DataFrame对象中的空值,并返回一个Boolean数组
  • pd.notnull():检查DataFrame对象中的非空值,并返回一个Boolean数组
  • df.dropna():删除所有包含空值的行
  • df.dropna(axis=1):删除所有包含空值的列
  • df.dropna(axis=1,thresh=n):删除所有小于n个非空值的行
  • df.fillna(x):用x替换DataFrame对象中所有的空值
  • s.astype(float):将Series中的数据类型更改为float类型
  • s.replace(1,'one'):用‘one’代替所有等于1的值
  • s.replace([1,3],['one','three']):用'one'代替1,用'three'代替3
  • df.rename(columns=lambda x: x + 1):批量更改列名
  • df.rename(columns={'old_name': 'new_ name'}):选择性更改列名
  • df.set_index('column_one'):更改索引列
  • df.rename(index=lambda x: x + 1):批量重命名索引

数据处理:Filter、Sort和GroupBy

  • df[df[col] > 0.5]:选择col列的值大于0.5的行
  • df.sort_values(col1):按照列col1排序数据,默认升序排列
  • df.sort_values(col2, ascending=False):按照列col1降序排列数据
  • df.sort_values([col1,col2], ascending=[True,False]):先按列col1升序排列,后按col2降序排列数据
  • df.groupby(col):返回一个按列col进行分组的Groupby对象
  • df.groupby([col1,col2]):返回一个按多列进行分组的Groupby对象
  • df.groupby(col1)[col2]:返回按列col1进行分组后,列col2的均值
  • df.pivot_table(index=col1, values=[col2,col3], aggfunc=max):创建一个按列col1进行分组,并计算col2和col3的最大值的数据透视表
  • df.groupby(col1).agg(np.mean):返回按列col1分组的所有列的均值
  • data.apply(np.mean):对DataFrame中的每一列应用函数np.mean
  • data.apply(np.max,axis=1):对DataFrame中的每一行应用函数np.max

数据合并

  • df1.append(df2):将df2中的行添加到df1的尾部
  • df.concat([df1, df2],axis=1):将df2中的列添加到df1的尾部
  • df1.join(df2,on=col1,how='inner'):对df1的列和df2的列执行SQL形式的join

数据统计

  • df.describe():查看数据值列的汇总统计
  • df.mean():返回所有列的均值
  • df.corr():返回列与列之间的相关系数
  • df.count():返回每一列中的非空值的个数
  • df.max():返回每一列的最大值
  • df.min():返回每一列的最小值
  • df.median():返回每一列的中位数
  • df.std():返回每一列的标准差

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

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

相关文章

麒麟系统下基于卫星的NTP网络授时服务器方案

麒麟系统下基于卫星的NTP网络授时服务器方案 1、 麒麟系统NTP授时方案 设计思路&#xff1a; 在通用的麒麟服务器内部固定一块北斗卫星接收模块并引出卫星天线接口&#xff0c;卫星模块接收北斗卫星数据并解码输出时间数据&#xff08;NMEA0183串口数据&#xff09;&#xff…

Linux编译静态库.a脚本(很low)

比如目录下有这几个源文件&#xff0c;我们要把其中带箭头的三个源文件编译打包成静态库文件 然后在当前目录创建脚本make_lib.sh&#xff0c;并赋可执行权限chmod 777 make_lib.sh #!/bin/bash # 在下面将需要编译成静态库的源文件名填进去 list"ky_ai_api ky_ai_pars…

基于PHP的旅游网站的开发与设计

目录 第1章 绪论 3 1.1 课题背景 3 1.2 电子商务的发展趋势 3 1.3企业网站的建立及电子商务的意义 4 第2章 电子商务简介 6 2.1 电子商务的来临 6 2.2 电子商务的概念 6 2.3 电子商务的分类 7 2.4 电子商务的特性 8 2.5 电子商务的结构 11 2.6 电子商务在中国的发展 11 2.7 本章…

Vue生命周期概述

Vue生命周期概述1 概述2 初始阶段3 挂载阶段4 更新阶段5 销毁阶段6 总结1 概述 每个Vue组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比如设置好数据侦听&#xff0c;编译模板&#xff0c;挂载实例到DOM&#xff0c;以及在数据改变时更新DOM。在此过程中&#xf…

微服务门神-网关了解

引言 书接上篇 微服务守护神-Sentinel-其他 &#xff0c;讲完微服务守护神-Sentinel之后&#xff0c;接下来就是微服务门神-网关组件&#xff1a;Gateway 问题引入 小伙伴们都知道在微服务架构中&#xff0c;一个系统会被拆分为很多个微服务&#xff0c;每一个微服务都能对外…

风电场数字孪生的应用案例

在我国“十四五”现代能源中明确规划&#xff0c;要大规模发展风电能源。与此同时电力行业也在加紧通过数字孪生等新一代信息技术推动电力能源行业智能化改造和数字化建设&#xff0c;不夸张地说数字孪生技术&#xff0c;数字孪生的应用不仅能够提高风电场项目建设的设计、施工…

PPa-GO/NPs/PEG/DSPE焦脱镁叶绿酸-a修饰氧化石墨烯/纳米粒子/聚乙二醇/磷脂/细胞膜合成

小编分享了PPa-GO/NPs/PEG/DSPE焦脱镁叶绿酸-a修饰氧化石墨烯/纳米粒子/聚乙二醇/磷脂/细胞膜合成方法相关知识&#xff0c;来学习&#xff01; 焦脱镁叶绿酸-a衍生物合成方法: 通过酸解反应从叶绿素a得到焦脱镁叶绿酸a,羧基保护后插入Zn2形成金属配合物,采用2,3-二氯-5,6-二氰…

window.open跳转页面传参接参

<el-table-column fixed"right" header-align"center" align"center" prop"action" label"操作" width"180px"><template slot-scope"scope"><el-button type"primary" size&…

QT学习笔记(上)

QT学习笔记&#xff08;上&#xff09; 文章目录QT学习笔记&#xff08;上&#xff09;1. 窗口和按钮2. 创建一个自定义的QPushButton2.1 mypushbutton.h2.2 mypushbuttion.cpp2.3 mainwindow.cpp引用mypushbutton3. QT坐标原点4. 信号与槽5. 自定义信号和槽6. 信号和槽的重载P…

基于java(SSH)的数字迎新系统的设计与实现

目 录 摘 要 i Abstract ii 1 绪论 1 1.1 选题背景 1 1.2研究现状 1 1.3课题目的 1 1.4本文结构 2 2 设计技术与开发环境 3 2.1 相关技术介绍 3 2.1.1 Struts简介 3 2.1.2 Hibernate简介 3 2.1.3 spring简介 3 2.2.4 SSH的简介 3 2.2 开发环境介绍 5 2.2.1 Myeclipse简介 5 2.2…

linux只W25Q256驱动,使用m25p80,支持w25q系列nor flash

1.内核编译选项增加 (1&#xff09;Device Drivers/Memory Technology Device (MTD) support ---> (2)Device Drivers/Memory Technology Device (MTD) support /SPI-NOR device support ---> (3)Device Drivers/Memory Technology Device (MTD) support /SPI-NOR dev…

机器学习——期末复习

文章目录填空题第一章 机器学习基础第二章 数据预处理KNN算法支持向量机集成学习决策树聚类算法联结学习三种池化操作选择题计算题数据正规化Hopfield网络能量函数计算卷积、池化操作应用题决策树、朴素贝叶斯、聚类算法单层感知器构造&#xff08;连接神经元部分&#xff09;填…

unix 域套接字实现进程间通信

目录 1、认识域套接字 2、unix域套接字相关API及地址结构介绍 (1) 创建unix域套接字 (2) 填充地址结构 sockaddr_un 3、unix域套接字实现进程间通信&#xff08;以UDP为例&#xff09; 1、认识域套接字 和之前TCP / UDP 编程使用的套接字不同&#xff0c;域套接字常用于同…

01入门及简单应用-ReentrantReadWriteLock原理-AQS-并发编程(Java)

文章目录1 概述2 性质3 简单测试4 模拟数据缓存4.1 应用初始化无缓存4.2 加入缓存改造5 后记1 概述 ReentrantReadWriteLock 是读写锁&#xff0c;和ReentrantLock会有所不同&#xff0c;对于读多写少的场景使用ReentrantReadWriteLock 性能会比ReentrantLock高出不少。在多线程…

技术分享 | 测试平台开发-前端开发之数据展示与分析

测试平台的数据展示与分析&#xff0c;我们主要使用开源工具ECharts来进行数据的展示与分析。 ECharts简介与安装 ECharts是一款基于JavaScript的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表&#xff…

展锐Android 10平台OTA升级

OTA 整体升级包制作步骤&#xff08;以SC9863A平台为例&#xff09; 下载项目 AP 的代码。通过以下命令设置编译环境。 source build/envsetup.sh lunch kheader 通过 make 命令全编整个工程。进入“device/sprd/sharkle/sl8541e_1h10_32b/”目录&#xff08;board 对应目录&a…

5G无线技术基础自学系列 | 站点详细勘测

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 站点的勘测结果非常重要&#xff0c;直…

高压放大器在硅氧烷近晶相单体合成中的应用

实验名称&#xff1a;高压放大器在硅氧烷近晶相单体合成中的应用 研究方向&#xff1a;晶体材料 测试目的&#xff1a; 双稳态包括向列相双稳态、近晶&#xff21;相双稳态和胆甾相双稳态&#xff0c;目前主要的研究是在近晶&#xff21;相双稳态&#xff0c;由近晶&#xff21…

自动驾驶专题介绍 ———— 转向系统

文章目录转向系统转向器齿轮齿条式循环球式蜗杆曲柄指销式转向助力液压转向助力系统电动转向助力系统发展转向系统 转向系统是按照驾驶员的意图改变或保持汽车行驶方向的系统。根据转向能源的不同&#xff0c;可以将转向系统分为机械转向系统和动力转向系统。   1. 机械转向系…

188: vue+openlayers上传GeoJSON文件,导出CSV格式文件

第188个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers上传geojson文件,解析文件在地图上显示图形,同时利用上传的文件,获取features数据,整合重新配置格式,导出CSV(Comma Separated Values)形式的文件。如果文件仅包含点要素,则会添加经度和纬度列。 …