9/2 pandas数据结构介绍

2024-09-03 05:44
文章标签 介绍 数据结构 pandas

本文主要是介绍9/2 pandas数据结构介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

5.1.2 DataFrame

1.是二维的矩形数据表,既有行索引又有列索引,从某一维度来看可看作Series

2.常用的创建方式是传入一个由列表或numpy数组组成的字典

data为一个字典

frame = pd.DataFram(data)

3.返回前5行:fram.head()  后五行:fram.tail()

4.可通过指定columns字段指定列索引字段顺序

frame = pd.DataFram(data,columns= )

5.可根据标签获取指定行列

frame[字段或序号]或frame.字段

6.当给frame某行或列赋值时,使用frame[标签]=标量/数组/列表进行赋值

也可将Series赋给frame某行或列,此时标签索引要匹配,若不匹配无法完成赋值

7.创建新列:frame[索引]

8.删除某列:del frame[索引]

9.DataFrame的index表示行索引,columns表示列索引

10.frame.to_numpy()将DataFrame形式以二维数组的形式返回

5.1.3索引对象

pandas的索引标签序列都属于是索引对象,不能对其进行修改

索引可包含重复标签

5.2 基本功能

5.2.1 重建索引

reindex方法

1.对Series重建索引

obj = pd.Series([1, 2, 3])
obj1 = obj.reindex([1, 2, 3], method="ffill")
obj2 = obj.reindex([4, 5, 6])
print(obj)
生成:
0    1
1    2
2    3
dtype: int64print(obj1)
生成:
1    2
2    3
3    3
dtype: int64print(obj2)

生成:

4   NaN
5   NaN
6   NaN
dtype: float64

注:重构时索引匹配才能得到相应的值,若不匹配得到空值

2.对DataFrame重建索引

DataFrame为矩形,重建时指明行列

f2 = f.reindex(index=[]或索引序列) 改变行标签

f2 = f.reindex(columns=[]或索引序列) 改变列标签

f2 = f.reindex(待改序列,axis="index") 改变行标签

f2 = f.reindex(待改序列,axis="columns") 改变列标签

注:在重构时,标签只含新的指定序列中的标签,新的和原来的匹配则保留,不匹配则删除原来的,添加新的。重构索引也可以用于删除某标签

5.2.2 删除指定轴上的项

drop()

1.对于Series

obj = pd.Series([1, 2, 3], index=["a", "b", "c"])

obj1 = obj.drop("a")

直接根据索引删除

2.对于DataFrame

需要指定删除的是index还是columns

data.drop(index=["a”,“b"])#删除a行和b行

data.drop(columns=["a”,“b"])#删除a列和b列

data.drop(["a”,“b"],axis="index或columns")

5.2.3 索引、选取和过滤

1.对series

1.1[]选取

obj = pd.Series([1, 2, 3], index=["a", "b", "c"])

obj["a"] == obj[0]

obj[:2] == obj[["a", "b"]]

即对Series元素进行提取可用指定的index标签,也可以数字序号

1.2 loc[]与iloc[]

loc运算符只能用标签

iloc只能用整数,就算标签不是整数,也能用整数调用

obj = pd.Series([1, 2, 3], index=["a", "b", "c"])

obj.loc["a"] == obj.iloc[0]

obj.loc["a": "b"] == obj.iloc[0:2]

注:loc切片包含末端,iloc不包含

2.对DataFrame

1.[]方式 p141

data1 = pd.DataFrame(np.arange(16).reshape((4, 4)),index=["a", "b", "c", "d"],columns=["one", "two", "three", "four"])

data1[]这种方式用于提取列,[]中一般放置列标签

loc和iloc可用于提取行

陷阱:

当Series的索引为整数索引时,不能用data[-i]来提取数据

担当索引不为整数索引时,可用data[-1]来提取最后一个数据

5.2.4 算术运算和数据对齐

1.对于Series :当对象相加时,如果存在不同的索引对,则结果的索引是所有索引的并集,对于不重叠的标签,会导致缺失值 obj1 + obj2

2.对于DataFrame:会将行和列的索引同时进行匹配,得到的行列索引是所有索引的并集,不重叠的标签,会导致缺失值

3.填充值

索引不匹配时会有缺失值NaN,可使用fill_value参数设置填充值

obj1.add(obj2, fill_value=0)

算术方法:p150

4.DataFrame与Series间的运算

1.匹配对应的索引值,对匹配的索引的值进行运算,若索引不匹配则会重构索引,缺失的值出现NaN

一般用[]形式获取一列数据(由多行组成),loc或iloc方式获取一行数据(由多列组成)

当获得一行数据作为Series进行运算实际上是对各列进行运算

1.1取一行作为Series

data1 = pd.DataFrame(np.arange(16).reshape((4, 4)),index=["a", "b", "c", "d"],columns=["one", "two", "three", "four"])
s1 = data1.iloc[0] #获得一行数据
print(s1)
print(data1 - s1)
==print(data1.sub(s1, axis="columns"))

出现:

s1为:

one      0
two      1
three    2
four     3

我感觉把Series看做横向排列的可能会更有助于理解

 one  two  three  four
a    0    0      0     0
b    4    4      4     4
c    8    8      8     8
d   12   12     12    12

相当于DataFrame的one列各值都减去Series的one值,各列以此类推

1.1取一列作为Series

data1 = pd.DataFrame(np.arange(16).reshape((4, 4)),index=["a", "b", "c", "d"],columns=["one", "two", "three", "four"])
s1 = data1["one"]
print(s1)
print(data1 - s1)
print(data1.sub(s1, axis="index"))

s1:

a     0
b     4
c     8
d    12

还是把获取的Series看作横向

类似:

a  b  c  d

0  4  8  12

此时,print(data1 - s1)出现索引不匹配情况,索引重构

a   b   c   d  four  one  three  two
a NaN NaN NaN NaN   NaN  NaN    NaN  NaN
b NaN NaN NaN NaN   NaN  NaN    NaN  NaN
c NaN NaN NaN NaN   NaN  NaN    NaN  NaN
d NaN NaN NaN NaN   NaN  NaN    NaN  NaN

而data1.sub(s1, axis="index")表示对各行进行操作

one  two  three  four
a    0    1      2     3
b    0    1      2     3
c    0    1      2     3
d    0    1      2     3

a行减a值,b行减b值,c行减c值

5.2.5 函数应用和映射

1.numpy很多函数可用于pandas对象

2.可自定义许多函数,用apply方法将函数运用于各行各列

运用于行还是列用axis参数指定

3.将Frame中的浮点数格式化可用applymap函数

5.2.6 排序与排名

1.排序

1.1 sort_index方法

根据索引进行排序,默认升序,可用参数ascending=False实现降序

s指代一个Series,f指代一个DataFrame

s.sort_index() 根据索引标签排序

f.sort_index() 根据index排序

f.sort_index(axis="columns", ascending=False) 根据columns排序

1.2 sort_values方法

根据值对对象进行排序

s.sort_values()

缺失值会被排到最后,设置na_position参数将缺失值放在最前面

对DataFrame排序时,可用一列或多列作为排序键

f.sort_values(列标签)

f.sort_values([列标签,列标签])  #多列

2.排名 p157

rank方法

排名是从数组中的最小值开始,从一开始给各数据进行排名,相同的值会平级,可通过设置method参数打破平级

5.2.7 带有重复标签的轴索引

pandas对象的索引不要求唯一,可用is_unique属性来说明索引值是否唯一

s.index.is_unique #true或false

5.3 描述性统计的汇总和计算 p159

1.sum方法

f.sum() #求竖着的总和

f.sum(axis="columns") #求横着的总和

关于NA值,若某行某列全为NA值则和为0,若有NA值也有其他值则跳过NA值,若不跳过设置参数skipna来改变

f.sum(axis="columns",skipna=False ) #设置后只要有na值就为na

2.mean方法

求平均值

f.mean() #通过设置axis来表示求行还是求列

3.idmax和idmax:返回最大最小值索引

f.idmax()

4.describe方法

f.describe() #对f的状况进行描述

这篇关于9/2 pandas数据结构介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132187

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

pandas数据过滤

Pandas 数据过滤方法 Pandas 提供了多种方法来过滤数据,可以根据不同的条件进行筛选。以下是一些常见的 Pandas 数据过滤方法,结合实例进行讲解,希望能帮你快速理解。 1. 基于条件筛选行 可以使用布尔索引来根据条件过滤行。 import pandas as pd# 创建示例数据data = {'Name': ['Alice', 'Bob', 'Charlie', 'Dav

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G