Python数据分析 Pandas基本操作

news2024/9/27 5:59:09

Python数据分析 Pandas基本操作

一、Series基础操作

Series是pandas的基础数据结构,它可以用来创建一个带索引的一维数组,下面开始介绍它的基础操作

image-20240915093817434

1、创建Series

1)使用数据创建Series

import pandas as pd
pd.Series(10,20,30,40)

image-20240914224914178

2)使用列表创建:默认索引,s列表中内容,拷贝到Series元数组中

s = [1, 2, 3, 4]
s1.Series(s)

image-20240915094853730

3)使用字典创建:默认索引为字典的key值,字典的value成为Series对象的元数组

s = {'a':1,'b':2,'c':3,'d':4}
s1 = pd.Series(s)

image-20240915094918341

4)Series的索引操作,可以自定义索引的形式。

s = [1,2,3,4]
index = ['a','b','c','d']
s1 = pd.Series(s,index=index)

image-20240915094943904

整数:适合顺序和离散的标签。

浮点数:适合需要精确值的情况,但注意精度问题。

字符串:适合文本标签。

日期时间:适合时间序列数据,精确到日期和时间。

时间戳:提供更精确的时间标记。

分类:适合有限的类别集合,节省内存和计算。

布尔值:不常见,但适用于需要布尔逻辑的场景。

元组:用于多级索引(MultiIndex)或复杂的索引结构。

自定义对象:适合特殊需求的索引,只要实现了必要的比较和哈希方法。

2、pd.Series 构造函数的参数

1)data:
  • 描述: 用于构造 Series 的数据。可以是列表、数组、字典、标量等。

  • 类型: listarraydictscalar 等。

  • 示例:

    s1 = pd.Series([10, 20, 30])
    s2 = pd.Series({'a': 1, 'b': 2})
    s3 = pd.Series(5, index=['a', 'b', 'c'])
    

    image-20240914225449651

2)index:
  • 描述: 自定义 Series 的索引。如果不提供,默认使用整数索引(0, 1, 2, …)。

  • 类型: listarrayIndex

  • 示例:

    s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
    

    image-20240914225543025

3)dtype:
  • 描述: 指定 Series 的数据类型。如果不提供,pandas 会自动推断数据类型。

  • 类型: numpy.dtypestr

  • 示例:

    s = pd.Series([10, 20, 30], dtype='float64')
    

    image-20240914225616903

4)name:
  • 描述: 给 Series 一个名称,可以用于后续数据操作和可视化时的标签,在,name 可以帮助识别 Series 的来源或意义,特别是在处理多个 Series 时,能够更容易地跟踪它们的含义

  • 类型: str

  • 示例:

    s = pd.Series([10, 20, 30], name='s1')
    

    image-20240915092200808

5)copy:
  • 描述: 是否复制输入的数据。如果设置为 True为深拷贝,则会复制输入数据,默认为 False浅拷贝。

  • 类型: bool

  • 示例

    :

    s = [10, 20, 30]
    s1 = pd.Series(s, copy=True)
    s2 = pd.Series(s, copy=False)
    

    image-20240915091734469

  • 注意:copy参数只能在源数据是 Numpy对象Series对象中起到作用

image-20240915091826540

二、DataFrame基本操作

DataFramepandas 库中的一个核心数据结构,用于处理和分析二维的表格数据。它类似于数据库中的表格或者 Excel 中的工作表。每一列可以是不同的数据类型(例如整数、浮点数、字符串等)它的每一列基本上都是一个Series,而每一行代表一个记录。

1、DataFrame 的基本结构

  • 行(Rows):数据的每一行代表一个记录或实例。
  • 列(Columns):数据的每一列代表一个变量或特征。
  • 索引(Index):行的标签,用于识别每一行。
  • 列标签(Column Labels):列的标签,用于识别每一列。

2、创建DataFrame对象

1)使用数据创建
s = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

image-20240915101320230

2)使用列表创建
s = [[123,234,345],[456,567,667],[789,890,901]]
columns = ['身份id', '数字id', '人员id']
s1 = pd.DataFrame(s,columns=columns)
s1['身份id']

image-20240915102510057

在这里,使用了columns参数指定了每个列名字,这些列名也就是Series的name属性,可以通过这个series的name属性 去取出该列的数据例如:

image-20240915103006948

也可以去修改它的数据,例如:

image-20240915103208708

3)通过字典创建
s = {'身份id':[123,456,789],'数字id':[234,567,890],'人员id':[345,667,901]}
index=['张三','李四','王五']
s1 = pd.DataFrame(s,index=index)

image-20240915103956390

再次,使用了index参数,对DataFrame对象的索引进行了自定义,它的概念与Series的概念一样,也可以通过多维标签去访问或修改里面的元素,例如:

image-20240915104324152

第一个元素是列名、第二个元素的索引,

4)通过Series对象去创建
s1 = pd.Series([123,456,789],name='身份id',index=['张三','李四','王五'])
s2 = pd.Series([234,567,667],name='数字id',index=['张三','李2四','王五'])
s3 = pd.Series([789,890,901],name='人员id',index=['张三','李四','王五'])

s4 = pd.DataFrame([s1,s2,s3],axis=1)

image-20240915104930343

这里需要注意的是,如果Series对象中的index索引如果不一致,会导致多创建一个超出的列,因为SreiesDataFrame的光系是并集关系,

但是这里还会出现另一个问题,之前我们已经说了,SeriesDataFrame的列属性,但是在此处它却变成了DataFrame的行属性。

这是因为DataFrame 的构造方式和行为取决于你如何传递 Series 和使用的方法。实际上,Series 既可以被视为 DataFrame 的列,也可以被视为 DataFrame 的行,具体取决于构建 DataFrame 的方式。

  • Series 作为列

通常情况下,将 Series 传递给 DataFrame 构造函数时,如果每个 Series 是作为字典的值传递给 DataFrame,这些 Series 会被视为列。

# 创建 Series 对象
s1 = pd.Series([123, 456, 789], name='编号', index=['张三', '李四', '王五'])
s2 = pd.Series([234, 567, 667], name='数字id', index=['张三', '李四', '王五'])
s3 = pd.Series([789, 890, 901], name='人员id', index=['张三', '李四', '王五'])

# 使用 pd.DataFrame() 构造函数,Series 作为列
df = pd.DataFrame({
    '编号': s1,
    '数字id': s2,
    '人员id': s3
})
print(df)

image-20240915112645925

注意:在构造DataFrame对象时,它的列名以最后赋值的Series属性的name为最终结果,在上面例子的字典中,字典的key就可以看作是Series的name属性,它的赋值在Series构造函数之后,所以最终的结果就是身份id1,

  • Series 作为行

Series 被作为列表传递给 DataFrame 的构造函数时,它们会被默认视为 DataFrame 的行。每个 Seriesname 属性将成为 DataFrame 的行索引。

# 创建 Series 对象
s1 = pd.Series([123, 456, 789], name='编号', index=['张三', '李四', '王五'])
s2 = pd.Series([234, 567, 667], name='数字id', index=['张三', '李四', '王五'])
s3 = pd.Series([789, 890, 901], name='人员id', index=['张三', '李四', '王五'])

# 使用 pd.DataFrame() 构造函数,Series 作为行
df = pd.DataFrame([s1, s2, s3])

print(df)

image-20240915132137836

作为列:当 Series 作为字典的值传递给 DataFrame 构造函数时,Series 被视为 DataFrame 的列。

作为行:当 Series 被作为列表传递给 DataFrame 构造函数时,Series 被视为 DataFrame 的行。

除了以上办法可以使用Series对象构造一个DataFrame对象,其实还有一个更好用的方法,就是使用pandas.concat()函数方法,它可以用于在指定轴上对多个 DataFrameSeries 进行拼接的函数。它可以将多个对象沿着一个轴(行轴或列轴)合并成一个单一的对象。这个函数非常灵活,支持多种拼接方式,可以处理不同形状和索引的数据结构,后续在谈它。

3、DataFrame的构造函数

DataFrame的构造函数和Series的构造函数,其实都差不多,他们都是由这几个参数组成dataindexdtypenamecopy

参数说明:

  1. data:
    • 类型:各种类型(dict, list, Series, DataFrame, ndarray, DataFrame 等)
    • 说明:用于指定 DataFrame 的数据。可以是字典、列表、Series 列表、二维数组等。
  2. index:
    • 类型Indexarray-like
    • 说明:用于指定 DataFrame 的行索引。如果未提供,将使用默认的整数索引。
  3. columns:
    • 类型Indexarray-like
    • 说明:用于指定 DataFrame 的列名。如果未提供,将根据 data 自动生成。
  4. dtype:
    • 类型strnp.dtype
    • 说明:用于指定 DataFrame 的数据类型。如果未指定,DataFrame 将根据 data 自动推断数据类型。
  5. copy:
    • 类型bool
    • 说明:是否复制数据。默认为 False,即尽可能避免复制数据;设置为 True 时,则会复制数据。

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

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

相关文章

学习笔记JVM篇(三)

一、垃圾回收机制 垃圾回收(Garbage Collection)机制,是自动回收无用对象从而释放内存的一种机制。Java之所以相对简单,很大程度是归功于垃圾回收机制。(例如C语言申请内存后要手动的释放) 优点&#xff…

基于less和scss 循环生成css

效果 一、less代码 复制代码 item-count: 12; // 生成多少个 .item 类.item-loop(n) when (n > 0) {.icon{n} {background: url(../../assets/images/menu/icon{n}.png) no-repeat;background-size: 100% 100%;}.item-loop(n - 1);}.item-loop(item-count);二、scss代码 f…

在线查看 Android 系统源代码 Android Code Search

在线查看 Android 系统源代码 Android Code Search 1. Android Code Search2. Android2.1. platform/superproject2.2. build/envsetup.sh2.3. build/make/envsetup.sh References 1. Android Code Search https://cs.android.com/ Android https://cs.android.com/android An…

PCIe进阶之TL:Address Spaces, Transaction Types, and Usage

1 Transaction Layer Overview 如上图为PCIe设备的一个分层结构,从上层逻辑看,事务层的关键点是: 流水线式的完整的 split-transaction 协议事务层数据包(TLP)的排序和处理基于信用的流控制机制可选支持的数据中毒功能和端到端数据完整性检测功能事务层包含以下内容: TLP…

【C++】标准库IO查漏补缺

【C】标准库 IO 查漏补缺 文章目录 系统I/O1. 概述2. cout 与 cerr3. cerr 和 clog4. 缓冲区5. 与 printf 的比较 系统I/O 1. 概述 标准库提供的 IO 接口,包含在 iostream 文件中 输入流: cin输出流:cout / cerr / clog。 输入流只有一个 cin&#x…

MFC工控项目实例之十六输入信号验证

承接专栏《MFC工控项目实例之十五定时刷新PC6325A模拟量输入》 验证选定的输入信号实时状态 在BoardTest.cpp文件中添加代码 void CBoardTest::OnButton2() {// TODO: Add your control notification handler code hereisThreadBegin true; //运行线程执行pThre…

medium_socnet

0x00前言 靶场要安装在virtualbox (最新版)。否者会出现一些问题。 攻击机:kali2024 靶机:medium_socnet 0x01信息搜集 因为把靶机和虚拟机啊放在了同一网段。 所以我先使用了 arp-scan,查看有多少同一网段ipUP 。 经过推断…

OSS对象资源管理

1、登录aliyun 1.1、什么是OSS?有什么用? OSS 是“Object Storage Service”的缩写,中文常称为“对象存储服务”。OSS 是一种互联网云存储服务,主要用于海量数据的存储与管理。 相较于nginx,OSS更灵活,不…

点云深度学习系列:Sam2Point——基于提示的点云分割

文章:SAM2POINT:Segment Any 3D as Videos in Zero-shot and Promptable Manners 代码:https://github.com/ZiyuGuo99/SAM2Point Demo:https://huggingface.co/spaces/ZiyuG/SAM2Point 1)摘要 文章介绍了SAM2POINT,这是…

跟《经济学人》学英文:2024年09月14日这期 People are splurging like never before on their pets

People are splurging like never before on their pets Would you buy your furry companion a cologne? like never before:从未有过;未曾发生过 splurge:挥霍;浪费;破费;大量花费;过度消…

python 读取excel数据存储到mysql

一、安装依赖 pip install mysql-connector-python 二、mysql添加表students CREATE TABLE students (ID int(11) NOT NULL AUTO_INCREMENT,Name varchar(50) DEFAULT NULL,Sex varchar(50) DEFAULT NULL,PRIMARY KEY (ID) ) ENGINEInnoDB AUTO_INCREMENT13 DEFAULT CHARSETu…

S32K3 工具篇5:如何使用lauterbach下载调试elf文件

S32K3 工具篇5:如何使用lauterbach下载调试elf文件 一,利用trace32现有flash脚本烧录elf二,debug 现有elf文件 之前写过如何在S32DS中使用lauterbach下载,但是对于RTD EB MCAL的代码,通常情况下是使用命令的方式去编译…

Spring Boot母婴商城:安全、便捷、高效

2 相关技术 2.1 SSM框架介绍 本课题程序开发使用到的框架技术,英文名称缩写是SSM,在JavaWeb开发中使用的流行框架有SSH、SSM、SpringMVC等,作为一个课题程序采用SSH框架也可以,SSM框架也可以,SpringMVC也可以。SSH框架…

C语言 | Leetcode C语言题解之第399题除法求值

题目: 题解: /*** Note: The returned array must be malloced, assume caller calls free().*/typedef struct hash_node_t {char *key;double val;int distinguish_flag; // 用于区分不同的关系struct hash_node_t *p_next; }HASH_NODE_T;typedef str…

clip论文阅读(Learning Transferable Visual Models From Natural Language Supervision)

目录 摘要训练pre-train model的过程将pre-train model应用于下游任务应用(待更新) 论文/项目地址:https://github.com/OpenAI/CLIP 提供了clip的pre-trained model的权重,也可安装使用pre-trained model 摘要 使用标签标注的图…

【IEEEACM Fellow、CCF组委】第三届人工智能与智能信息处理国际学术会议(AIIIP 2024)

第三届人工智能与智能信息处理国际学术会议(AIIIP 2024) 2024 3rd International Conference on Artificial Intelligence and Intelligent Information Processing 中国-天津 | 2024年10月25-27日 | 会议官网:www.aiiip.net 会…

【CTF MISC】XCTF GFSJ1086 [简单] 简单的base编码 Writeup(Base64编码+循环解码+Base92编码)

[简单] 简单的base编码 你懂base编码吗? 工具 在线BASE92编码解码:https://ctf.bugku.com/tool/base92 解法 Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSV01WbDNXa1JTVjAxV2JETlhhMUpUVmpBeFYySkVUbGhoTVVwVVZtcEJlRll5U2tWVWJHaG9UVlZ3VlZadGNFSmxSbGw1V…

数据集 wider person 户外密集行人检测 >> DataBall

数据集 wider person 用于野外密集行人检测的多样化数据集 行人检测 目标检测 户外密集行人检测的多样化数据集 WiderPerson: A Diverse Dataset for Dense Pedestrian Detection in the Wild article{zhang2019widerperson, Author {Zhang, Shifeng and Xie, Yiliang and Wa…

蛋白质结构变换中的四元数和旋转矩阵介绍

在蛋白质结构变换中,四元数和旋转矩阵都是用来描述旋转的重要工具。 一、旋转矩阵 定义与形式: 旋转矩阵是一个 33 的矩阵,用于将一个向量在三维空间中进行旋转操作。它可以表示为:其中,每个元素都是实数,且满足一定的正交性条件,即旋转矩阵的逆等于它的转置。作用原理…

Stanley算法原理

Stanley Controller与Pure Pursuit算法类似,其同样是基于几何追踪的轨迹跟踪控制器,但是与Pure Pursuit不同的是,Stanley Controller算法基于前轮中心点为参考点进行控制,没有预瞄距离,以前轮中心点与最近参考轨迹点进…