yjs09——pandas介绍及相关数据结构

news2024/10/1 14:45:48

1.什么是pandas

同样,pandas、matplotlib、numpy是python三大库,pandas就像是把matplotlib和numpy结合在一起,让数据以“表格”的形式表现出来,是一个强大的数据处理和分析库,它建立在NumPy库之上,提供了高效地操作大型数据集所需的数据结构和操作。

2.pandas库的引入

import pandas as pd

3.pandas 的数据结构

pandas主要有 Series、DataFrame、MutiIndex/panel三大结构


Series:一位数据结构

DataFrame:二维表格型数据结构

MultiIndex/panel:三维数据结构

Ⅰ.Series结构

        1.Series结构的建立

                a.正常方式建立:table=pd.Series(data,index=)

                b.不写index,默认为0,1,2,3...   table=pd.Series(data)

                c.字典方式建立:table=pd.Series({"key1":value,   "key2":value   ...})

        2.Series属性查看

                table.index   //查看索引名,没有括号

                table.value    //查看索引值,没有括号

        3.Series结构的样子:

                        



Ⅱ.DataFrame结构

1.建立

table=pd.DataFrame(data,index=,columns=)

table=pd.DataFrame({"key1":[v11,v21,v31...]  ,"key2":[v12,v22,v32] ....   })

2.属性

table.shape

table.index

table.columns

table.values

table.head(k)     //输出前k行

table.tail(k)         //输出后k行

3.行列索引的修改

a.更改原来的索引名称

table.index=[]

table.columns=[]

//要么全部修改,要么不修改,不能只修改某一行、列的索引名


b.重设索引(只能重设为0,1,2,3....)
        删除原来的索引,重设0,1,2...索引

        table1=table.reset_index(drop=True)

        不删除原来的索引,将原来的索引归成数据(不传参数时默认)

        table1=table.reset_index(drop=False)

//需要有新表接收,不是在原数据上操作

//只有reset_index,没有reset_columns


c.从原数据中取出一列作为索引
        删除原数据中作为新索引的数据

        table1=table.set_index(["name",''age''],drop=True)

        不删除原数据中作为新索引的数据

        table1=table.set_index("name",drop=False)

//需要有新表接收,不是在原数据上操作

//只有set_index,没有set_columns

//可以有多个索引



Ⅲ.MultiIndex结构

如果table是多索引的表,我们查看他的索引时:

table.index

结果:MultiIndex([(索引1.1, 索引2.1),
            (索引1.2, 索引2.2),
            (索引1.3, 索引2.3)],
           names=['索引1', '索引2'])

table.index.levels 

结果:【[索引1,索引1,索引1...],[索引2,索引2,索引2...]】

这里的索引1,2就不是一一对应的,如果索引1中有重复的,那就只显示一个,一般是按照从小到大排

代码

# pandas笔记
import numpy as np
import pandas as pd
from pandas import DataFrame

# 一、pandas之series数据结构
# 1.series结构的建立
data1 = np.random.randint(60, 100, 4)
index_1 = pd.Series(data1, index=["学生1", "学生2", "学生3", "学生4"])  # Series一定要大写!
# 字典法建立:
index_2 = pd.Series({"学生A": 90, "学生B": 80})
print(index_1)
print(index_2)

"""结果:
学生1    67
学生2    73
学生3    74
学生4    97
dtype: int32
-----------------
学生A    90
学生B    80
dtype: int64
"""

# 2.Series的属性
print(index_1.index)  # Index(['学生1', '学生2', '学生3', '学生4'], dtype='object')
print(index_1.values)  # [81 88 62 75]
print(index_1.head(2))
"""
    学生1    81
    学生2    88
    dtype: int32"""
print(index_1.tail(2))
"""
    学生3    62
    学生4    75
    dtype: int32"""

# 二.DataFrame数据结构
# 2.1建立
table_1 = DataFrame(np.random.randint(10, 25, (3, 4)), index=["上海", "广州", "深圳"],
                    columns=["11月1日", "11月2日", "11月3日", "11月4日"])
table_2 = DataFrame({"上海": [21, 22, 22, 27], "广州": [23, 22, 25, 27], "深圳": [21, 24, 27, 24]},
                    index=["11月1日", "11月2日", "11月3日", "11月4日"])  # 字典的key组成列索引
print(table_1)
print(table_2)
print(table_2.index)
print(table_2.columns)

# 2.2属性
print(table_1.shape)
print(table_1.index)
print(table_1.columns)
print(table_2.T)
print(table_1.head(1))
print(table_1.tail(2))

# 2.3重设索引
table = pd.DataFrame(np.random.randint(60, 100, (3, 4)), index=["张三", "李四", "王五"],
                     columns=["语", "数", "英", "政"])
print(table)

# 2.3.1 table.index
table.index = ["同学" + str(i) for i in range(3)]
print(table)

# 2.3.2 table.reset_index()
table = table.reset_index(drop=True)
print(table)

# 2.3.3 table.set_index("",)
table = table.set_index("语")
print(table)

table0 = table.set_index(["政","英"], drop=False)
print(table0)
print(table0.index)
print(table0.index.levels)

我遇到的问题:

1.数据结构大小写问题

Series、DateFrame、MultiIndex,这三个都是大写首字母

2.DataFrame的引进

from pd import DataFrame

3.索引的重设中,能不能重设列索引

只有table.columns=【】是重设列索引,reset、set_...都是对index改变

4.DataFrame索引问题

reset_index和 set_index都不是在原数据上改变,所以需要有接收的table变量

reset_index只能重设成0,1,2,3...

reset_index和set_index的drop含义不同

index、set_index、reset_index后的结果

5.当索引中有重复时

只显示一个,不重复显示,如果是表,重复的部分空着,如果是看属性结果,那么只输出一个

6.用字典法建立DataFrame结构时

key值是列索引,行索引是0,1,2,3...

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

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

相关文章

笔试-笔记

前言 记录一下自己遇到的笔试题 1.(单选)下列链表中,其逻辑结构属于非线性结构的是() A.二叉链表 B.双向链表 C.循环链表 D.带链的的栈 解析: 常见线性结构:线性表,栈,队列,双队列,串&…

05-函数传值VS传引用

函数传值 一、没法改变值的方式: 一个变量拷贝到另一个变量, 这种形式的函数调用被称为: 传值调用 局部变量的生命周期在函数的运行期间会一直存在. void Increment(int a)//假设一个 x(只是为了验证实参会被映射到形参这件事情),a的值会被拷贝到x {a a 1; //1…

【d57】【sql】1661. 每台机器的进程平均运行时间

思路 一方面考察自连接,另一方面考察group by 这里主要说明 group by 用法: 1.在 SQL 查询中,GROUP BY 子句用于将结果集中的行分组,目的通常就是 对每个组应用聚合函数(如 SUM(), AVG(), MAX(), MIN(), COUNT() 等…

如何理解业务系统的复杂性

鹅厂万人热议|如何理解业务系统的复杂性?-腾讯云开发者社区-腾讯云 腾小云导读 业务系统复杂性一直是令开发者头痛的问题。复杂的不是增加一个需求需要耗费多少时间,而是在增加一个需求后带来的蝴蝶效应:其它功能会不会受到影响、…

MES数据的集成方式

为了实现与其他关键系统的数据共享和协同工作,不同的集成方式应运而生。MES系统与其他系统的常见集成模式,包括封装接口调用模式、直接集成模式、数据聚合模型、中间件集成模式以及XML的信息集成模式等。 1. 封装接口调用模式 封装接口调用是一种常见的…

防反接电路设计

方案1 串联二极管, 优点:成本低、设计简单 缺点:损耗大,P ui 方案2 串联自恢复保险丝 当电源反接的时候,D4导通,F2超过跳闸带你留,就会断开,从而保护了后级电路 方案3 H桥电路…

修改ID不能用关键字作为ID校验器-elementPlus

1、校验器方法 - forbiddenCharValidator const idUpdateFormRef ref(null); const forbiddenCharValidator (rule, value, callback) > {const forbiddenCharacters [as,for,default,in,join,left,inner,right,where,when,case,select];for (let forbiddenCharacter o…

劳动与科技、艺术结合更好提高劳动教育意义

在中小学教育中,劳动教育是培养学生基本生活技能和劳动习惯的重要环节。但当代的劳动教育不在单纯的劳动,而是劳动技能的提升与学习,通过学习劳动技能与实践活动,强化劳动教育与其他课程的融合,学生深刻理解劳动的意义…

python如何判断图片路径是否存在

1、在向文件夹中保存数据前,先判断该文件夹(路径)是否存在。 save_path /root/.../image/result if not os.path.exists(save_path):os.makedirs(save_path) 本来路径里只有到image文件夹的,执行完后会自动在image下创建result文件夹。 2、在打开某些图…

滑动窗口->dd爱框框

1.题目: 2.题解: 2.1为什么用滑动窗口优化: 因为元素都是大于0的 所以:当找到大于等于x的值时,right可以不用返回 两个指针都往后走;因此可以使用滑动窗口优化暴力解法 2.2:滑动窗口具体使用步…

骨传导耳机哪个品牌好用?盘点闭眼入都不踩雷的五大爆款机型!

骨传导耳机是智商税还是真有用?哪款骨传导耳机更值得购买?骨传导耳机作为市场中非常热门的机型,相信很多人都想入手一款,但面对市面鱼龙混杂的耳机品牌,往往不知道从何下手,不过市场重确实存在不少劣质产品…

ubutun nginx 安装和解决端口占用问题

目录 一、删除已有nginx 二、安装nginx 三、端口占用问题 分析问题 解决方法:更换默认端口 nginx是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务。是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(I…

Sqoop实战-- Sqoop的Job任务、增量导入、数据格式转换与Lombok的使用指南

数据传输是任何数据驱动型组织的关键时刻。Apache Sqoop 在促进关系型数据库和Hadoop之间的高效数据传输方面表现出色,使其成为大数据工作流程中不可或缺的工具。本文将详细介绍如何使用Sqoop执行Job任务以及进行增量导入,如何在HDFS上指定数据存储格式&…

031集——文本文件按空格分行——C#学习笔记

如下图,读取每行文本,每行文本再按空格分开读取一个字符串,输出到另一个文本: CAD环境下,代码如下: using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Runtime; using System; using Sys…

如何使用ssm实现白云会议管理系统+vue

TOC ssm741白云会议管理系统vue 第1章 绪论 1.1 选题动因 到现在为止,互联网已经进入了千家万户,最普通的平民百姓也有属于自己的智能设备,计算机各种技术的储备也是相当的丰富,并且实现也是没有难度,各行各业&…

Gpt4.0最新保姆级教程开通升级

如何使用 WildCard 服务注册 Claude3 随着 Claude3 的震撼发布,最强 AI 模型的桂冠已不再由 GPT-4 独揽。Claude3 推出了三个备受瞩目的模型:Claude 3 Haiku、Claude 3 Sonnet 以及 Claude 3 Opus,每个模型都展现了卓越的性能与特色。其中&a…

【Python报错已解决】TypeError: an integer is required (got type bytes)

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

无人机培训机构配套教学无人机技术详解

无人机培训机构配套的教学无人机技术,是一个涉及多学科交叉、技术密集型的领域。以下是对该技术的详细解析: 一、无人机技术概述 无人机技术是一个涵盖航空工程、电子工程、计算机科学、材料科学和人工智能等多个学科的综合性领域。其核心在于实现无人…

LP3718BSL封装SOP8/12W隔离开关电源芯片

概述: LP3718BSL 是一款高度集成的隔离型适配器和充电器的自供电PSR控制芯片,外围设计极其简单。 LP3718BSL通过外置电阻,可调原边峰值电流,再 通过变压器原副边匝比来设置输出恒流点;通过设 定 FB 上偏电阻和下偏电阻来设置输出恒…

【MySQL】数据库的介绍以及数据库基础

目录 🌳介绍 🎄数据库操作 🚩显示当前数据库 🚩创建数据库 ​编辑🚩使用/选中 数据库 🚩删除数据库 🌴常用的数据类型 🚩数值类型 🚩字符串类型 &#x1f6a9…