Pandas库学习Day20

Pandas库

1. 数据结构

数据结构维度说明
Series1该结构能够存储各种数据类型,比如字符数、整数、浮点数、Python 对象等,Series 用 name 和 index 属性来描述数据值。Series 是一维数据结构,因此其维数不可以改变
DataFrame2DataFrame 是一种二维表格型数据的结构,既有行索引,也有列索引。行索引是 index,列索引是 columns。 在创建该结构时,可以指定相应的索引值

1.1 Series

Pandas Series 类似表格中等一个列(column),类似于一维数组,可以保存任何数据类型 Series 由索引(index)和列组成,函数:

函数名参数
pandas.Series(data,index,dtype)data:一组数据(ndarray 类型)
index:数据索引标签,如果不指定,默认从 0 开始
dtype:数据类型,默认会自己判断
copy:表示对 data 进行拷贝,默认为 False

1.2 创建Series对象

import pandas as pd
import numpy as np
from pandas.core.interchange.dataframe_protocol import DataFramedef pd_series():#创建一个空Series对象s = pd.Series()print(s)#创建一个Series对象,用python列表初始化s1 = pd.Series(['张三','李四','王五'])print(s1)print(s1[0])#创建Series对象,使用指定索引s2 = pd.Series([1,2,3],index=['a','b','c'])print(s2)print(s2['a'])print(s2[2])#也可以取,但是会报警告#根据ndarray创建Series对象arr = np.array([1,2,3,4])s3 = pd.Series(arr)print(s3)#根据字典创建Series对象dic = {'name':'zhangsan','age':18,'sexual':0}s4 = pd.Series(dic)print(s4)#通过标量创建对象,如果不指定index,则创建一行,如果指定index,则按照index数量进行创建行,每行都是标量值s5 = pd.Series(5,index=[0,1,2,3,4,5])print(s5)
pd_series()

1.3 Series常见属性

名称属性
axes以列表的形式返回所有行索引标签
dtype返回对象的数据类型
empty返回一个布尔值,用于判断数据对象是否为空
ndim返回输入数据的维数
size返回输入数据的元素数量
values以 ndarray 的形式返回 Series 对象
index返回一个RangeIndex对象,用来描述索引的取值范围
def pd_series_attr():s = pd.Series(['a','b','c','d','e'])#获取Series对象的索引信息print(s.axes)#获取数据类型print(s.dtype)#判断Series是否为空print(s.empty)#获取数组维度print(s.ndim)#获取Series对象中的元素个数print(s.size)#获取Series对象的值,返回一个ndarray的数组#获取索引信息print(s.values)print(s.index)pd_series_attr()

1.4 Series常用方法

def pd_series_func():s = pd.Series(['a','b','c','d','e','f',None])print(s)#获取Series前n行数据,默认前5行print(s.head())print(s.head(3))# 获取Series后n行数据,默认后5行print(s.tail())print(s.tail(3))#判断Series对象是否为None,是为Ture,不是为Falseprint(s.isnull())print(s.notnull())#利用布尔判断结果,筛选满足条件的对象print(s[s.notnull()])pd_series_func()

1.5 DataFrame

函数名参数
pd.DataFrame( data, index, columns, dtype, copy)data:一组数据(ndarray、series, map, lists, dict 等类型)
index:索引值,或者可以称为行标签
coumns:列标签,默认为 RangeIndex (0, 1, 2, …, n)
dtype:数据类型
copy:默认为 False,表示复制数据 data

1.6 创建DataFrame对象

def pd_df():#创建DataFrame空对象df = pd.DataFrame()print(df)#通过一维数组创建DataFrame对象df1 = pd.DataFrame(['zhangsan','lisi','wangwu'])print(df1)#通过columns指定列名df2 = pd.DataFrame(['zhangsan','lisi','wangwu'],columns=['name'])print(df2)#通过二维数组创建DataFrame对象df3 = pd.DataFrame([['zhangsan',18],['lisi',20],['wangwu',88]],columns=['name','age'])print(df3)#通过数字嵌套字典(json)创建DataFrame对象arr = [{'name': 'zhangsan', 'age': 18}, {'name': 'lisi', 'age': 20, 'sexual': 'male'}]df4 = pd.DataFrame(data=arr)print(df4)#字典的 key 无法找到对应的 value,将使用 NaN 代替。NaN:not a number(数字类型,解释为不是数字的数字)#通过字典创建:字典中每个key对应的value是一维数组dic = {'name':['zhangsan','lisi','wangwu'],'age':[18,19,88]}df5 = pd.DataFrame(data=dic)print(df5)#通过字典和Series创建,字典中每个key对应一个Series对象dic1 = {'one':pd.Series([1,2,3]),'two':pd.Series([4,5,6,7])}df6 = pd.DataFrame(dic1)print(df6)pd_df()

1.7 DataFrame常用属性和方法

DataFrame 的属性和方法,与 Series 基本相同

名称属性和方法描述
T行和列转置。
axes返回一个仅以行轴标签和列轴标签为成员的列表。
dtypes返回每列数据的数据类型。
emptyDataFrame中没有数据或者任意坐标轴的长度为0,则返回True。
ndim轴的数量,也指数组的维数。
shape返回一个元组,表示了 DataFrame 维度。
sizeDataFrame中的元素数量。
values使用 numpy 数组表示 DataFrame 中的元素值。
head()返回前 n 行数据。
tail()返回后 n 行数据。
def pd_df_attr():df = pd.DataFrame({'A':[1,2,3],'B':[4,5,6]})print(df)print('-------')# DataFrame转置print(df.T)print('-----')# DataFrame的行、列索引信息print(df.axes)print('------')# DataFrame每列数据类型print(df.dtypes)print('-----')# 判断DataFrame是否为空,DataFrame中的元素为None或NaN也不为空df1 = pd.DataFrame()print(df1.empty)print('======')# DataFrame的维度print(df.ndim)print('++++++')# DataFrame的形状print(df.shape)print('-----')# DataFrame中所有元素的数量print(df.size)print('======')# 返回ndarray对象的数组print(df.values)print('+++++')# 返回DataFrame的前n行数据,默认n=5print(df.head(2))print('-----')# 返回DataFrame的后n行数据,默认n=5print(df.tail(2))
pd_df_attr()

2. 索引

2.1 列索引

def pd_df_col():df = pd.DataFrame({'name':['zhangsan','lisi','wangwu'],'age':[21,22,33]})name_list = list(df['name'])print(name_list)print(df['age'])#df添加新列,可以用列表、ndarray、series添加#列表和ndarray添加时,行数要和原df中数据行数保持一致,series可以不一致,缺少的会自动补充为NaNdf['id'] = np.array([1, 2, 3])df['address'] = ['sichuan','yunnan','beijing']df['sexual'] = pd.Series(['male','femela'])print(df)#insert:在指定列插入一列数据#loc:指定列的索引值#column:要插入的列名#value:要插入的值df.insert(1,'password',pd.Series([111,22,3333]))print(df)#修改某一列的值df['password'] = pd.Series([99,555,2])print(df)#drop:删除列#labels:要删除的列(或者行)标签#axis:轴,=0时按行删除,=1时按列删除#inplace:是否在原DataFrame上删除,如果为True删除原DataFrame的数据,为False则返回新DataFrame,默认为Falsedeleted_df = df.drop(labels='id',axis=1)print(deleted_df)print(df)deleted_df = df.drop(labels='id', axis=1,inplace=True)print(deleted_df,'-----')print(df)
pd_df_col()

2.2 行索引

def pd_df_row():data = {'A':[1,2,3,4],'B':[5,6,7,8],'C':[9,10,11,12]}df = pd.DataFrame(data,index=['a','b','c','d'])print(df)#通过索引标签获取DataFrame中的行或列,如果获取一行或一列则返回Series对象,如果获取多行或多列则返回新的DataFrame#通过行索引标签获取a行的数据,返回结果是Series对象print(df.loc['a'])#通过切片的方式获取a行到c行的数据,返回结果是DataFrame,切片范围是左闭右闭区间print(df.loc['a':'c'])#获取a行和B列对应的数据,返回结果是一个值print(df.loc['a','B'])#根据a行c行A列C列获取对应的数据,返回结果是DataFrameprint(df.loc[['a','c'],['A','C']])# loc方法不能使用行所在位置的索引进行获取# print(df.loc[0])# iloc:根据行所在的位置进行获取,不能通过行或列的索引标签获取数据# print(df.iloc['a'])# 获取行索引位置为0的行数据print(df.iloc[0])# 通过切片获取索引位置为0-2的行数据(不包括2),切片取值范围左闭右开print(df.iloc[0:2])# 通过行索引位置和列索引位置,获取对应的数据,返回一个值print(df.iloc[0,2])# 通过多个行索引位置和多个列索引位置,获取对应值print(df.iloc[[0,2],[0,2]])# 直接通过切片获取多行数据,切片范围是左闭右开区间print(df[0:2])pd_df_row()

3. 常用函数

函数名称描述说明
count()统计某个非空值的数量
sum()求和
mean()求均值
median()求中位数
std()求标准差
min()求最小值
max()求最大值
abs()求绝对值
prod()求所有数值的乘积
import pandas as pd
import numpy as np
def pd_df_cal():data = {'A':[1,2,3,4,None],'B':[10,20,30,40,50],'C':[100,200,300,400,500]}df = pd.DataFrame(data)# 求每列的算数平均数print(df.mean())# 求每列的中位数print(df.median())# 求每列的样本方差print(df.var())# 求每列的标准方程print(df.std())# 求每列的最小值print(df.min())# 求每列的最大值print(df.max())# 求每列的所有元素之和print(df.sum())# 求每列非零元素的数量print(df.count())pd_df_cal()

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

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

相关文章

【笔记】软件测试09——接口测试

九、接口测试 一)接口测试的概念 1)接口测试 通过数据包的方式观察客户端向服务器发送了什么请求,模拟这些请求的过程 接口测试是测试系统组件间数据交互的一种方式。 接口测试是通过测试不同情况下的输入参数和与之对应的输出结果来判断接口是否符合或满足相应 的功能性、…

鸿蒙原生应用开发及部署:首选华为云,开启HarmonyOS NEXT App新纪元

目录 前言 HarmonyOS NEXT:下一代操作系统的愿景 1、核心特性和优势 2、如何推动应用生态的发展 3、对开发者和用户的影响 华为云服务在鸿蒙原生应用开发中的作用 1、华为云ECS C系列实例 (1)全维度性能升级 (2&#xff…

人工智能进程;算子加速的具体计算部分;大模型GPT5:参数18万亿;大模型面临问题

目录 人工智能进程 算子加速的简单理解,举例说明 一、简单理解 二、举例说明 一、算子加速的具体计算部分 二、举例说明 三、算子加速是否仅针对GPU 大模型GPT5:参数18万亿 大模型面临问题 算力集群设计框架 人工智能进程

论文阅读(二十六):Dual Attention Network for Scene Segmentation

文章目录 1.Introduction3.DANet3.1Position Attention Module3.2Channel Attention Module 论文:Dual Attention Network for Scene Segmentation   论文链接:Dual Attention Network for Scene Segmentation   代码链接:Github 1.Intr…

C++——string的模拟实现(下)

目录 成员函数 3.4 修改操作 (3)insert()函数 (4)pop_back()函数 (5)erase()函数 (6)swap()函数 3.5 查找操作 (1)find()函数 (2)substr()函数 3.6 重载函数 (1)operator赋值函数 (2)其他比较函数 (3)流插入和流提取 完整代码 结束语 第一篇链接:C——…

vue通过JSON文件生成KML文件源码

可以使用封装的json解析器进行JSON数据获取,读取点的经度、维度、高程等数据,再使用对应的KML文件生成函数使用该源码下载KML文件(固定KML生成:js模板式生成大疆上云kml文件(含详细注释,已封装成函数&#…

unity中GameObject介绍

在 Unity 中,Cube和Sphere等基本几何体是 Unity 引擎的内置预制体(Prefabs),它们属于 Unity 中的GameObject 系统,可以在 Unity 的 Hierarchy 视图或 Scene 视图中右键点击,然后在弹出的菜单中选择 3D Obje…

MySQL 数据出海之数据同步方案

优质博文:IT-BLOG-CN 数据库出海流程 【1】业务出海:1)数据库出海;2)应用出海;3)流量分发; 【2】数据库出海:涉及业务方、信安、DBA和框架组。 数据库出海&#xff0c…

Go 语言基础教程:7.Switch 语句

在这篇教程中,我们将学习 Go 语言中的 switch 语句,它是条件分支的重要结构。我们将通过一个示例程序逐步解析 switch 的不同用法。 package mainimport ("fmt""time" )func main() {i : 2fmt.Print("Write ", i, " …

Python画笔案例-094 绘制 神奇彩条动画

1、绘制 神奇彩条动画 通过 python 的turtle 库绘制 神奇彩条动画,如下图: 2、实现代码 绘制 神奇彩条动画,以下为实现代码: """神奇彩条动画.py一个用海龟画图的图章功能配合颜色渐变和动画原理做成的动画。 """ from random import randi…

重学SpringBoot3-Spring WebFlux之SSE服务器发送事件

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ Spring WebFlux之SSE服务器发送事件 1. 什么是 SSE?2. Spring Boot 3 响应式编程与 SSE为什么选择响应式编程实现 SSE? 3. 实现 SSE 的基本步骤3.…

MySQL-32.索引-操作语法

一.语法 二.代码实现 指定某个字段为主键,其实就是建立一个主键索引。而指定某个字段唯一,就是建立一个唯一索引。 -- 索引 -- 创建:为tb_emp表的name字段建立一个索引 create index idx_emp_name on tb_emp(name);-- 查询:查…

Handler、Looper、message进阶知识

Android Handler、Looper、Message的进阶知识 在Android开发中,Handler、Looper和Message机制是多线程通信的核心。为了深入理解并优化它们的使用,尤其是在高并发和UI性能优化中,可以利用一些高级特性。 1. Handler的高阶知识 Handler在基本…

Axure随机验证码高级交互

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:字母数字随机验证码高级交互 主要内容:4位字母数字随机验证码生成、错误提示与State状态同步 应用场景:登录验证码、其他类…

Linux - 文件描述符 | 文件系统 | 软硬链接

文章目录 一、文件描述符1、补充知识2、文件描述符是什么?3、处理文件的系统调用接口4、文件描述符的分配规则5、简单理解Linux下一切皆文件6、FILE7、重定向 二、文件系统三、软硬链接1、软连接2、硬链接3、软硬链接对比 一、文件描述符 1、补充知识 (…

5G NR:BWP入门

简介 5G NR 系统带宽比4G LTE 大了很多,4G LTE 最大支持带宽为20MHz, 而5G NR 的FR1 最大支持带宽为100MHz, FR2 最大支持带宽为 400MHz。 带宽越大,意味了终端功耗越多。为了减少终端的功耗,5G NR 引入了BWP(Band Wid…

从零实现数据结构:一文搞定所有排序!(下集)

1.快速排序 思路框架: 在有了前面冒泡选择插入希尔排序之后,人们就在想能不能再快一点,我们知道排序算法说人话就是把大的往后放小的往前放,问题就在于如何更快的把大的挪到数组队尾小的挪到数组前面。这里我们先总结一下上集前…

NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备视频报警功能详解

在科技日新月异的今天,视频监控系统作为现代社会的“第三只眼”,正以前所未有的方式深刻影响着我们的生活与社会结构。从公共场所的安全监控到个人生活的记录分享,视频监控系统以其独特的视角和功能,为社会带来了诸多好处&#xf…

【Linux】————磁盘与文件系统

作者主页: 作者主页 本篇博客专栏:Linux 创作时间 :2024年10月17日 一、磁盘的物理结构 磁盘的物理结构如图所示: 其中具体的物理存储结构如下: 磁盘中存储的基本单位为扇区,一个扇区的大小一般为512字…

Python 自动化运维:Python基础知识

Python 自动化运维:Python基础知识 目录 📊 Python 基础复习 数据类型、控制结构与常用函数面向对象编程(OOP)与类的使用函数式编程概念与 lambda 表达式异常处理与日志记录的基本实践 1. 📊 Python 基础复习 数据…