pandas学习笔记11

DataFrame结构
DataFrame 一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等。其结构图示意图,如下所示:
请添加图片描述

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

data: 输入的数据,可以是 ndarray,series,list,dict,标量以及一个 DataFrame
index: 行标签,如果没有传递 index 值,则默认行标签是 RangeIndex(0, 1, 2, …, n),n 代表 data 的元素个数。
columns: 列标签,如果没有传递 columns 值,则默认列标签是 RangeIndex(0, 1, 2, …, n)。
dtype: 要强制的数据类型。只允许使用一种数据类型。如果没有,自行推断
copy: 从输入复制数据。对于dict数据,copy=True,重新复制一份。对于DataFrame或ndarray输入,类似于copy=False,使用的是试图

data = [1,2,3,4,5]#普通列表创建
df = pd.DataFrame(data)
print(df)
# 列表中每个元素代表一行数据
data = [['xiaowang',20],['Lily',30],['Anne',40]]#嵌套列表,有点像字典,其实与字典不同,就是列表中的元素是列表
# 未分配列标签
df = pd.DataFrame(data)
print(df)
data = [['xiaowang', 20, "男", 5000],['Lily', 30, "男", 8000],['Anne', 40, "女", 10000]]
# 分配列标签 
df = pd.DataFrame(data,columns=['Name','Age',"gender", "salary"], dtype=int)
# int满足某列特征,会自动使用, 不满足,则自动识别
print(df)

尽量别用dtype,不知道为什么,经常报错
可以在之后用astype调整

df['salary'] = df['salary'].astype(int)
#列表嵌套字典
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
#df = pd.DataFrame(data)
df = pd.DataFrame(data, index=['first', 'second'])print(df)

列操作

data = {'Name':['关羽', '刘备', '张飞', '曹操'],'Age':[28,34,29,42]}
# 定义行标签
index = ["rank1", "rank2", "rank3", "rank4"]
# 通过字典创建DataFrame
df = pd.DataFrame(data, index=index)
print(df)
print("=========df['Name']:取得Name列===============")
print(df['Name'])
print("=========df['Age']:取得Age列===============")
print(df['Age'])
# 注意列不是能使用切片选取多列
print("=========df不能使用切片选取多列===============")
print(df['Name': 'Age'])   # 空DataFrame
df[1]  # 会报错

在这一点上与series不同,列索引不能用位置索引

还可以使用 insert() 方法插入新的列

 df.insert(loc, column, value, allow_duplicates=False)

loc : 整型,插入索引,必须验证0<=loc<=len(列)
column : 插入列的标签,类型可以是(字符串/数字/散列对象)
value : 数值,Series或者数组
allow_duplicates : 允许重复,可以有相同的列标签数据,默认为False

info=[['王杰',18],['李杰',19],['刘杰',17]]
df=pd.DataFrame(info,columns=['name','age'])
print(df)
#注意是column参数
#数值1代表插入到columns列表的索引位置 :loc : 整型,插入索引,必须验证0<=loc<=len(列)
df.insert(1,column='score',value=[91,90,75])
print("=====df.insert插入数据:=======")
print(df)
# 可以添加重复列标签数据
df.insert(1,column='score',value=[80,70,90],allow_duplicates=True)
print(df)

通过 del 和 pop() 都能够删除 DataFrame 中的数据列,pop有返回值

import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']),'three' : pd.Series([10,20,30], index=['a','b','c'])}
df = pd.DataFrame(d)
print ("Our dataframe is:")
print(df)
#使用del删除
del df['one']
print("=======del df['one']=========")
print(df)
#使用pop方法删除
res_pop = df.pop('two')
print("=======df.pop('two')=========")
print(df)
print("=======res_pop = df.pop('two')=========")
print(res_pop)
# 标签为b的行到标签为d的行, 对应标签为one的列
df.loc['b':'d',"one"]   # 注意使用行标签切片,包含结束的行

loc使用的是标签
iloc使用的是位置索引

两者不能混用,比如在loc中使用位置索引,或者在iloc中使用标签索引
1.列表/元组出发:—>表示的一行一行数据
1.列表嵌套列表:[[‘xiaowang’,20],[‘Lily’,30],[‘Anne’,40]]
((‘xiaowang’,20),(‘Lily’,30),(‘Anne’,40))
– 使用默认的列表标签
2.列表嵌套字典:[{‘a’: 1, ‘b’: 2},{‘a’: 5, ‘b’: 10, ‘c’: 20}]
({‘a’: 1, ‘b’: 2},{‘a’: 5, ‘b’: 10, ‘c’: 20})
— 使用字典的key作为标签
2.字典出发: ----> 表示一列一列数据
1.字典对应值是列表:{‘Name’:[‘关羽’, ‘刘备’, ‘张飞’, ‘曹操’],‘Age’:[28,34,29,42]}
– 行使用默认标签
2. 字典对应值是Series
{‘one’ : pd.Series([1, 2, 3], index=[‘a’, ‘b’, ‘c’]),
‘two’ : pd.Series([1, 2, 3, 4], index=[‘a’, ‘b’, ‘c’, ‘d’])}
– 行和列都是设置的标签,并且还可以指定列的数据类型4
操作:
1.列操作
1).取(查)
- df[“列标签”] — 单列数据
- df[[“列标签1”,“列标签2”]] - 多列数据

		注意:①.不能使用位置下标②.不能使用标签切片2).添加:df["新列标签"] = 值   序列或Seriesinsert(loc<位置>,column<列名>,value<值>)- loc取值范围:0<=loc<=len(列)3).删除: del :python原始的删除操作,直接就销毁pop : 也销毁,不同在于有返回值,返回值是需要删除的内容4).改:df["源列标签"] = 值2.行操作1).取(查)loc: 使用行标签df.loc["行标签"]  ---单行df.loc[["行标签1"],["行标签2"]] - 多行iloc:使用行标签位置索引df.loc[位置索引]  ---单行df.loc[[位置索引1],[位置索引2]]还可以使用切片:df.iloc[位置索引1:位置索引3]  ---切片,不包含结束行注意:不能行标签和行位置索引 混用2)增加:行追加:append1).追加字典-注意添加ignore_index=True,或者将字典转化为Series并且设置name参数2).追加列表									如果list是一维的,则以列的形式追加如果list是二维的,则以行的形式追加如果list是三维的,只添加一个值删除:drop("行标签") 和 Series一样操作-注意:标签找不到会被报错- 默认不改变源数据
3.DataFrame属性和常用函数
a_l = [[10],[20]]
df3 = df.append(a_l) # 需要添加 
print(df3)

和下面相同

a_l = [10,20]df3 = df.append(a_l) # 需要添加 
print(df3)

三维数组加入时,将它看作二维数组加入,因此只加入一个值
s = [[[1,2,3,4]]]
df.append(s)
[1,2,3,4]将这个看作一个元素并插入
您可以使用行索引标签,从 DataFrame 中删除某一行数据。如果索引标签存在重复,那么它们将被一起删除。

常用属性和方法汇总
名称 属性&方法描述
T 行和列转置。
axes 返回一个仅以行轴标签和列轴标签为成员的列表。
dtypes 返回每列数据的数据类型。
empty DataFrame中没有数据或者任意坐标轴的长度为0,则返回True
columns 返回DataFrame所有列标签
shape 返回一个元组,获取行数和列数,表示了 DataFrame 维度。
size DataFrame中的元素数量。
values 使用 numpy 数组表示 DataFrame 中的元素值。
head() 返回前 n 行数据。
tail() 返回后 n 行数据。
rename() rename(columns=字典) ,修改列名
info() 可以显示信息,例如行数/列数,总内存使用量,每列的数据类型以及不缺少值的元素数
sort_index() 默认根据行标签对所有行排序,或根据列标签对所有列排序,或根据指定某列或某几列对行排序。
sort_values() 既可以根据列数据,也可根据行数据排序

info()函数
用于打印DataFrame的简要摘要,显示有关DataFrame的信息,包括索引的数据类型dtype和列的数据类型dtype,非空值的数量和内存使用情况。

df. sort_index()

sort_index(axis=0, ascending=True, inplace=False)

注意:df.sort_index()可以完成和df.sort_values()完全相同的功能,但python更推荐用只用df.sort_index()对“根据行标签”和“根据列标签”排序,其他排序方式用df.sort_values()。

axis:0按照行名排序;1按照列名排序
ascending:默认True升序排列;False降序排列
inplace:默认False,否则排序之后的数据直接替换原来的数据

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')

作用:既可以根据列数据,也可根据行数据排序。
注意:必须指定by参数,即必须指定哪几行或哪几列;无法根据index名和columns名排序(由.sort_index()执行)

by:str or list of str;如果axis=0,那么by=“列名”;如果axis=1,那么by=“行名”。
axis:{0 or ‘index’, 1 or ‘columns’}, default 0,默认按照列排序,即纵向排序;如果为1,则是横向排序。
ascending:布尔型,True则升序,如果by=[‘列名1’,‘列名2’],则该参数可以是[True, False],即第一字段升序,第二个降序。
inplace:布尔型,是否用排序后的数据框替换现有的数据框。
na_position:{‘first’, ‘last’}, default ‘last’,默认缺失值排在最后面。

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

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

相关文章

目标检测算法YOLOv5简介

没有关于YOLOv5的直接论文&#xff0c;YOLOv5由Ultralytics维护&#xff0c;源码见&#xff1a;https://github.com/ultralytics/yolov5 &#xff0c;于2020年6月发布v1.0版本&#xff0c;最新发布版本为v7.0&#xff0c;License为AGPL-3.0. 以下内容主要来自&#xff1a; 1. U…

2024.4.29 Pandas day01 基础语法

pandas是python的一个数据库&#xff0c;在使用数据库的时候需要输入 import pandas as pd 引入&#xff0c; df pd.read.csv(文件路径“&#xff09;&#xff1a;这是利用pandas数据库读取CSV文件的方法&#xff0c;如果读取EXCEL文件或者其他文件&#xff0c;csv文件换成其他…

库存管理系统开源啦

软件介绍 ModernWMS是一个针对小型物流仓储供应链流程的开源库存管理系统。该系统的开发初衷是为了满足中小型企业在有限IT预算下对仓储管理的需求。通过总结多年ERP系统研发经验&#xff0c;项目团队开发了这套适用于中小型企业的系统&#xff0c;以帮助那些有特定需求的用户。…

Python-Socket编程实现tcp-udp通信

本文章是记录我准备大创项目时学的socket编程的用法&#xff0c;纯属记录生活&#xff0c;没有教学意义&#xff0c;视频我是看b站up主王铭东学的&#xff0c;讲的很详细&#xff0c;我只粗略学了个大概&#xff0c;我想要通过tcp&#xff0c;udp传输yolo目标检测中的物体坐标信…

C语言中的goto语句

goto label; C 语言中的 goto 语句允许把控制无条件转移到同一函数内的被标记的语句。 #include <stdio.h> int main(){goto first;printf("我是你好\n");first:printf("nihao\n");second:printf("This is 2\n");return 0; } 使用goto会…

== 和 equals()区别,equals()重写问题

对于引用类型&#xff1a;比较的是两个引用是否相同&#xff08;所指的是否为同一个对象&#xff09;&#xff0c;注&#xff1a;如果两个引用所指的对象内容一样&#xff0c;但是不是同一个对象&#xff08;hashcode不一样&#xff09;&#xff0c;依然返回false&#xff0c;随…

MYSQL数据目录结构上篇-表在文件系统中表示

前言感悟:我个人是比较不喜欢只会用,不太懂为什么的这么用,而且有的时候很多官方术 语让人难以读懂, 这里我会用比较大白话的方式,让我自己也能让网友们更加理解,如果书写哪里有误,欢迎大家指出((,,•ω•)ノ"(っω•&#xff40;。)) 从入门开始啦推荐一个学习mysql的视频…

在GPU上加速RWKV6模型的Linear Attention计算

精简版&#xff1a;经过一些profile发现flash-linear-attention中的rwkv6 linear attention算子的表现比RWKV-CUDA中的实现性能还要更好&#xff0c;然后也看到了继续优化triton版本kernel的线索。接着还分析了一下rwkv6 cuda kernel的几次开发迭代以此说明对于不懂cuda以及平时…

基于Springboot的房屋租赁管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的房屋租赁管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

【机器学习】Ctrl-Adapter:视频生成领域的革新者

Ctrl-Adapter&#xff1a;视频生成领域的革新者 一、ControlNets的挑战与Ctrl-Adapter的应运而生二、Ctrl-Adapter的技术原理与实现三、Ctrl-Adapter的应用实例与性能表现四、Ctrl-Adapter的意义与未来展望 随着人工智能技术的飞速发展&#xff0c;图像与视频生成领域正经历着前…

【busybox记录】【shell指令】cksum

目录 内容来源&#xff1a; 【GUN】【cksum】指令介绍 【busybox】【cksum】指令介绍 【linux】【cksum】指令介绍 使用示例&#xff1a; 计算校验和 - 传统输出格式 默认输出 - 基础POSIX标准32位CRC校验和 其他校验指令对参数有更好的支持&#xff0c;请看其他校验指…

一篇文章带你深入了解“指针”

一篇文章带你深入了解“指针” 内存和地址了解指针指针类型const修饰指针指针的运算指针与整数之间的运算指针与指针之间的运算指针的关系运算 void* 指针传值调用和传址调用数组和指针的关系野指针野指针的形成原因规避野指针 二级指针字符指针指针数组数组指针数组传参一维数…

灌溉机器人 状压dp

灌溉机器人 题目描述 农田灌溉是一项十分费体力的农活&#xff0c;特别是大型的农田。小明想为农民伯伯们减轻农作负担&#xff0c;最近在研究一款高科技——灌溉机器人。它可以在远程电脑控制下&#xff0c;给农田里的作物进行灌溉。 现在有一片 N 行 M 列的农田。农田的土…

Java Jackson-jr 库是干什么用的

Jackson-jr 是一个轻量级的Java JSON 处理库。这个库被设计用来替代 Jackson 的复杂性。对比 Jackson 的复杂 API&#xff0c;Jackson-jr 的启动速度更快&#xff0c;包大小更小。 虽然Jackson databind&#xff08;如ObjectMapper&#xff09;是通用数据绑定的良好选择&#…

三维重建(SFM)与实时定位建图(SLAM)的区分与联系

1、SLAM SLAM是Simultaneous Location and Mapping&#xff0c;同时定位与地图构建。是指搭载特定传感器的主体&#xff0c;在没有环境先验信息的情况下&#xff0c;于运动过程中建立环境的模型&#xff0c;同时估计自己的运动。目的是解决自主机器人“定位”和“建图”两个问题…

OpenCV多张图片堆叠显示

OpenCV实现多张图片堆叠显示 程序思路效果代码 程序思路 读取两张或多张图片&#xff1b;获取图片尺寸&#xff1b;选择多张图片中较大的宽度和高度建立画布&#xff1b;合并图片到画布&#xff1b; 效果 代码 import cv2 import numpy as np# 读取两张图片 img1 cv2.imrea…

C# Web控件与数据感应之 TreeView 类

目录 关于 TreeView 一些区别 准备数据源 范例运行环境 一些实用方法 获取数据进行呈现 ​根据ID设置节点 获取所有结点的索引 小结 关于 TreeView 数据感应也即数据捆绑&#xff0c;是一种动态的&#xff0c;Web控件与数据源之间的交互&#xff0c;本文将继续介绍与…

mysql设置允许其他IP访问

文章目录 更改mysql配置文件登录mysql 更改mysql配置文件 查找.ini或者.cnf文件 更改bind-address为0.0.0.0 [mysqld] character-set-serverutf8mb4 bind-address0.0.0.0 default-storage-engineINNODB [mysql] default-character-setutf8mb4 [client] default-character-s…

redis集群-主从机连接过程

首先从机需要发送自身携带的replid和offset向主机请求连接 replid&#xff1a;replid是所有主机在启动时会生成的一个固定标识&#xff0c;它表示当前复制流的id&#xff0c;当从机第一次请求连接时&#xff0c;主机会将自己的replid发送给从机&#xff0c;从机在接下来的请求…

LAME及 iOS 编译

文章目录 关于 LAME编译 for iOS 关于 LAME 官网&#xff1a;https://lame.sourceforge.io LAME是根据LGPL许可的高质量MPEG音频层III&#xff08;MP3&#xff09;编码器。 LAME的开发始于1998年年中左右。Mike Cheng 最开始将它作为针对8hz-MP3编码器源的补丁。在其他人提出…