python的pandas库

什么是pandas

Pandas是一个开源的第三方Python库,它从Numpy和Matplotlib的基础上构建而来,享有数据分析“三剑客之一”的盛名。Pandas已经成为Python数据分析的必备高级工具,目标是成为强大、灵活、可以支持任何编程语言的数据分析工具。

数据结构

Pandas中除了Panel数据结构,还引入了两种新的数据结构——Series和DataFrame,这两种数据结构都建立在NumPy的基础之上。

(1)Series:一维数组系列,也称序列,与Numpy中的一维array类似。二者与Python基本的数据结构list也很相近。

(2)DataFrame:二维的表格型数据结构。可以将DataFrame理解为Series的容器。以下的内容主要以DataFrame为主。、

(3)Panel:三维数组,可以理解为DataFrame的容器。

数据类型

Logical(逻辑型)

Logical又叫布尔型,只有两种取值:0和1,或者真和假(True和False)。逻辑运算符有:& (与,两个逻辑型数据中,有一个为假,则结果为假) , | (或,两个逻辑型数据中,有一个为真,则结果为真) ,not(非,取反)。

Numeric(数值型)

数值运算符有:+ -*和/。

Character(字符型)

字符型数据一般使用单引号(' ' )或者双引号(" ")包起来。

Python数据类型变量命名规则如下:

(1)变量名可以由a~z A~Z,数字,下划线组成,首字母不能是数字和下划线;

(2)大小写敏感,即区分大小写;

(3)变量名不能为Python中的保留字,如and continue lambda or等。

数据结构

数据结构是指相互之间存在的一种或多种特定关系的数据类型的集合。Pandas中主要有Series(系列)和Dataframe(数据框)两种数据结构。、

Series

Series(系列,也称序列)用于存储一行或一列的数据,以及与之相关的索引的集合。

from pandas import Series
x=Series(['a',2,'狗狗'],index=['a','b','c'])
print(x)
print(x['a'])
a     a
b     2
c    狗狗
dtype: object
a

Series的index如果省略,索引号默认从0开始,也可以指定索引名。

为了方便后面的使用和说明,此处定义可以省略的index,也就是默认的索引号从0开始计数,赋值给定的index,我们称为索引名,有时也称为行标签。

补充:

dtype:object为列中的数据类型

数值类型:
int64:64位整数。
float64:64位浮点数。
int32, int16, int8:不同位数的整数,根据数据的大小和内存使用情况来选择。
float32:32位浮点数。
时间类型:
datetime64[ns]:用于存储日期和时间的数据类型,精度为纳秒。
timedelta[ns]:用于存储时间间隔的数据类型,同样精度为纳秒。
文本类型:
str:用于存储字符串数据。
类别类型:
categorical:用于存储分类数据的数据类型,可以有效地减少存储空间并提高性能。
稀疏类型:
sparse:用于存储包含很多零值的稀疏数据,可以减少存储空间。
其他:
bool:布尔类型,用于存储真/假值

当Pandas无法确定列中所有元素的共同数据类型时,它通常会默认将列的数据类型设置为object

那这个与上面的数据类型是什么关系呢?

在Pandas中,dtype(数据类型)与逻辑型、数值型和字符型这些概念是密切相关的。dtype是Pandas用来表示数据列中元素类型的一个属性,而逻辑型、数值型和字符型是这些数据类型中的具体分类。

相关功能函数

from pandas import Series
import pandas as pd
#定义序列
x=Series(['a',True,1],index=['first','second','third'])
print(x)
#索引访问
print(x['second'])#索引名
#追加系列
n = Series(['2'], index=['fourth'])  # 追加时需要指定索引
x = pd.concat([x, n])
print(x)
#判断值,数字和逻辑值是不需要加引号
print(2 in x.values)
print('2' in x.values)
#切片
print(x.loc['second':'third'])  # 使用标签切片
#删除
x=x.drop("first")#索引名
print(x)
x=x[2!=x.values]
print(x)
first        a
second    True
third        1
dtype: object
True
first        a
second    True
third        1
fourth       2
dtype: object
False
True
second    True
third        1
dtype: object
second    True
third        1
fourth       2
dtype: object
second    True
third        1
fourth       2
dtype: object

Series的sort_index(ascending=True)方法可以对index进行排序操作,ascending参数用于控制升序或降序,默认为升序。也可使用reindex方法重新排序。在Series上调用reindex重排数据,使得它符合新的索引,如果索引的值不存在就引入缺失的数据值。

from pandas import Series
import pandas as pd
obj=Series([4.5,7.2,-5.3,3.6],index=['b','d','a','c'])
print(obj)
obj1=obj.reindex(['a','b','c','d','e'])
print(obj1)
obj2=obj.reindex(['a','b','c','d','e'],fill_value=0)
print(obj2)
b    4.5
d    7.2
a   -5.3
c    3.6
dtype: float64
a   -5.3
b    4.5
c    3.6
d    7.2
e    NaN
dtype: float64
a   -5.3
b    4.5
c    3.6
d    7.2
e    0.0
dtype: float64

相关的错误点

1:对于字符或字符串型的数据要记得加上引号

2:索引的长度不能超过index的长度不然会报错

3:在追加数据时不能追加单个元素,要追加系列

4:需要一个变量来承载变化,例如在追加时需要用变量接收,即返回的是一个新的序列

特点

1:Series是一种类似于一维数组的(numpy)的对象。

2:Series的数据类型没有限制。

3:Series有索引,把索引当做数据的标签看待,类似于字典。

4:Series同时具有数组和字典的功能。

DataFrame

DataFrame数据框是用于存储多行和多列的数据集合,是Series的容器,类似于Excel的二维表格。

对于DataFrame的操作无外乎'增,删,改,查'。DataFrame使用方法如下:

from pandas import DataFrame,Series
import pandas as pd
df = DataFrame({'age':Series([26,29,24]),'name':Series(['ken','jerry','ben'])},index=[0,1,2])
print(df)
   age   name
0   26    ken
1   29  jerry
2   24    ben

访问方式

访问列        变量名[列名]              访问对应的列。如df[name]

访问行        变量名[n:m]               访问n行到m-1行的数据。如df[2:3]访问n 1到(n 2-1)行,m 1到(m 2-1)列的数据。

访问块(行和列)     变量名. iloc[n 1:n 2,m 1:m 2]     如df . iloc[0:3,0:2]

访问指定的位置     变量名.at[行名,列名]     访问(行名,列名)位置的数据。如df . at[1,'name']

from pandas import DataFrame,Series
import pandas as pd
df = DataFrame({'age':Series([26,29,24]),'name':Series(['ken','jerry','ben'])},index=[0,1,2])
print(df)
a=df['age']
print(a)
b=df[1:2]
print(b)
c=df.iloc[0:2,0:2]
print(c)
d=df.at[0,'name']
print(d)
   age   name
0   26    ken
1   29  jerry
2   24    ben
0    26
1    29
2    24
Name: age, dtype: int64
   age   name
1   29  jerry
   age   name
0   26    ken
1   29  jerry
ken

功能函数

from pandas import DataFrame,Series
import pandas as pd
df = DataFrame({'age':Series([26,29,24]),'name':Series(['ken','jerry','ben'])},index=[0,1,2])
df.columns=['age1','name1']#修改列名
print(df)
df.index=range(1,4)#修改索引
print(df.index)
df=df.drop(1,axis=0)#行索引删除,axis=0表示行轴
print(df)
df=df.drop('age1',axis=1)#列名删除
print(df)
#删除列del df['age1']
df['newColumn']=[2,4]#增加列
print(df)
df.loc[len(df)]=['keno',24]#增加行
print(df)
print(len(df))
   age1  name1
0    26    ken
1    29  jerry
2    24    ben
RangeIndex(start=1, stop=4, step=1)
   age1  name1
2    29  jerry
3    24    ben
   name1
2  jerry
3    ben
   name1  newColumn
2  jerry          2
3    ben          4
  name1  newColumn
2  keno         24
3   ben          4
2
合并DataFrame
from pandas import DataFrame, Series
import pandas as pd

df1 = DataFrame({
    'A': Series([1, 3]),
    'B': Series([2, 4])
}, index=[0, 1])

print(df1)

df2 = DataFrame({
    'A': Series([5, 7]),
    'B': Series([6, 8])
}, index=[0, 1])

print(df2)

# 只叠加数据,但保留原始索引
df_appended_with_index = df1.append(df2)
print(df_appended_with_index)

# 合并为一个新的数据框,并忽略原始索引,创建新的整数索引
df_appended_ignore_index = df1.append(df2, ignore_index=True)
print(df_appended_ignore_index)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TCP详解

2.1TCP 由IETF的RFC793定义的传输控制协议(Transmission Control Protocol,TCP)是一种基于字节流的传输层通信协议。在传输数据前需要在发送与接收者之间建立连接,通过相应机制保证其建立连接的可靠性。 TCP协议具备以下特性&am…

云备份项目->配置环境

升级gcc到7.3版本 sudo yum install centos-release-scl-rh centos-release-scl sudo yum install devtoolset-7-gcc devtoolset-7-gcc-c source /opt/rh/devtoolset-7/enable echo "source /opt/rh/devtoolset-7/enable" >> ~/.bashrc 安装Jsoncpp库 sud…

十、多模态大语言模型(MLLM)

1 多模态大语言模型(Multimodal Large Language Models) 模态的定义 模态(modal)是事情经历和发生的方式,我们生活在一个由多种模态(Multimodal)信息构成的世界,包括视觉信息、听觉信息、文本信息、嗅觉信…

STM32与Proteus的串口仿真详细教程与源程序

资料下载地址:STM32与Proteus的串口仿真详细教程与源程序 资料内容 包含LCD1602显示,串口发送接收,完美实现。 文档内容齐全,包含使用说明,相关驱动等。 解决了STM32的Proteus串口收发问题。 注意:每输…

IP-guard getdatarecord 存在任意文件读取

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 一、产品介绍 IP-guard是由溢信科技股份有限公司开发的一款终端安全管…

揭秘被忽视的商业模式:全民拼购助力客户实现日销千万的惊人业绩

今天,我想和大家分享一个颇具潜力的模式与玩法,尽管它在外界看来可能略显陈旧。这个模式曾被忽视,但我的一位客户却巧妙运用,实现了惊人的业绩——日销售额接近五千万,日订单量高达300万单。 值得注意的是,…

一键搞定COX回归亚组森林图!快速生成顶级SCI论文的高清图!

现在亚组分析好像越来越流行,无论是观察性研究还是RCT研究,亚组分析一般配备森林图。 比如NEJM这张图: 比如Lancet这张图: 但是在使用R语言绘制时,简单的代码画不出好看的图,好看的图又需要许多代码参数来进…

[HUBUCTF 2022 新生赛]最简单的misc

有点简单, 要用到工具lsb,qr扫码 一般杂项先binwalk,不行的话在lsb 因为头是png所以save bin出二维码,用QR扫码 即可得出flag

知识分享之cookie

http协议中的cookie,什么是cookie如何获取cookie 一、什么是Cookie Cookie(曲奇,小甜饼的译名)在互联网技术领域中,是指一种小型文本文件,它由网站服务器发送给用户的浏览器,并被浏览器存储在用…

Linux--自主编写shell

目录 准备知识 shell原理 shell与用户互动的过程 实现shell 0.用到的头文件和宏定义 1.首先我们需要自己输出一个命令行 2.获取用户命令行字符 3.命令行字符串分割 4.执行命令 5.设置循环 6.检测内建命令 7.完善细节--获取工作目录而非路径 准备知识 Linux--环境…

太速科技-基于6 U VPX M.2 高带宽加固存储板

基于6 U VPX M.2 高带宽加固存储板 一、板卡概述 基于6 U VPX M.2 高带宽加固存储板,可以实现VPX接口的数据读写到PCI-E总线的NVME存储媒介上。采用PLX8732,上行链路提供带宽x16的PCI-E数据到VPX接口上;下行链路提供3路带宽x4的PCI-E接口…

重生之我是Nginx服务专家

nginx服务访问页面白色 问题描述 访问一个域名服务返回页面空白,非响应404。报错如下图。 排查问题 域名解析正常,网络通讯正常,绕过解析地址访问源站IP地址端口访问正常,nginx无异常报错。 在打开文件时,发现无法…

(学习日记)2024.05.04:UCOSIII第五十八节:User文件夹函数概览(uCOS-III->Source文件夹)第四部分

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

自制音频格式二维码的方法,适合多种音频格式使用

现在可以通过二维码的方法来传递音频文件是很常用的一种方式,可以将单个或者多个音频放入一个二维码,通过手机扫码来调取云端储存的音频文件来播放内容,这样可以让多人同时扫码获取内容,提升传播速度。 音频二维码制作的方法也比…

数据库 和 SQL 和 索引事务 和 Java数据库编程(JDBC)

一、初识数据库 什么是数据库?和数据结构有什么关系? 数据库是“一类软件”,能够针对数据进行管理。数据结构,也是针对数据进行管理。所以,数据库其实就是一个“基于数据结构”实现出来的软件。 有哪些常用数据库&…

Postman,一个功能强大的API开发和测试工具

最近有小伙伴说在找 postman 的使用教程,案例等文章。 那么今天我就来写一个。 Postman 是一个功能强大的 API 开发和测试工具,它提供了丰富的功能,帮助开发人员更好地管理、测试和文档化 API。无论是单独开发还是团队协作,Postma…

社交媒体数据恢复:MiChat

在数字化时代,我们的生活与社交媒体平台紧密相连,如MiChat等即时通讯应用成为沟通的桥梁。然而,数据丢失的风险始终存在,使得“及时备份”这一概念愈发重要。当用户不慎删除了珍贵的聊天记录时,他们可能会感到绝望。幸…

Xcode隐私协议适配

1. Privacy manifest files 1.1 简介 自己App或三方SDK(通过XCFrameworks|Swift packages|Xcode projects集成的)需要包含一个隐私清单文件(privacy manifest)叫作 PrivacyInfo.xcprivacy。它是一个属性列表,记录了A…

Spring一篇搞定!控制反转特性(IOC)详细笔记

控制反转(IOC) 是什么 控制反转(Inversion of Control,IoC)是一种设计思想,它的本质是将对象的创建、销毁、依赖关系的维护等控制权从程序代码中转移出去,交由容器来负责管理。在Java开发中&a…

多种方法求1+12+123+1234……

有网友出了一道题: 从键盘输入一个小于10的正整数n,计算1121231234……,即前n项之和。 第一眼看到题目,直觉告诉我必须使用嵌套的两个for循环,里面的循环生成每一项,外面的循环求和。错误的方向和思路让我…
最新文章