Python数据分析 Pandas基本操作

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.xdnf.cn/news/1535591.html

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

相关文章

【用Java学习数据结构系列】用堆实现优先级队列

看到这句话的时候证明:此刻你我都在努力 加油陌生人 个人主页:Gu Gu Study 专栏:用Java学习数据结构系列 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff…

RK3562/3588系列之6—yolov5模型的部署

RK3562/3588系列之6—yolov5模型的部署 1.yolov5模型训练2.训练好的模型转成onnx格式3.模型从onnx格式转RKNN3.1 onnx2rknn.py3.2 onnx2rknn.py3.3 直接使用rknn.api3.4 rknn_model_zoo中的转换代码3.5 LubanCat-RK系列板卡官方资料4.RK NPU c++推理4.1交叉编译4.2 开发板执行编…

整数在内存中的存储原码反码补码

目录 1.整数在内存中以二进制的形式存在 1.1(正数存储情况) 1.2 负数存储情况 1.3整数的补码如何得到原码 2.无符号整数的原反补码 小心!VS2022不可直接接触,否则!没这个必要,方源面色淡然一把抓住&am…

ChatGPT提示词-中文版(awesome-chatgpt-prompts中文版)

原是Github上110.6K星的项目:GitHub - f/awesome-chatgpt-prompts: This repo includes ChatGPT prompt curation to use ChatGPT better. 我翻译成了中文需要自提 我用夸克网盘分享了「Chat GPT提示词.csv」,点击链接即可保存。打开「夸克APP」在线查看…

为解决bypy大文件上传报错—获取百度云文件直链并使用Aria2上传文件至服务器

问题描述 一方面组内的服务器的带宽比较小,另一方面使用bypy方式进行大文件(大于15G)上传时会报错(虽然有时可以成功上传,但是不稳定): 解决方式 总体思路: 获得云盘需要下载文件的直链复制直链到服务器中使用自带…

CRM如何助力科技服务机构突破业务瓶颈?

在当今知识经济时代,科技服务机构面临着复杂的业务环境和多样化的客户需求。客户管理系统(CRM)在这个领域的应用正逐渐成为机构提升运营效率、优化客户服务的关键。 科技服务行业的业务特点 知识产权代理行业具有高度的专业性和复杂性。其业…

[记录一个bug]流媒体服务瓶颈排查

一、抛砖 最近有一个服务器上的rtmp直播服务,搭载了1k路后,无法支撑高码率如6M 8M的视频推流,推流会导致掉帧到个位数。但是看了top和vmstat,没发现明显的瓶颈。程序的单进程多线程,但是在另一台配置更低的服务器上,却没问题。 所以这里干脆记录下瓶颈排查步骤和方法吧。…

跟《经济学人》学英文:2024年09月14日这期 Demand for high-end cameras is soaring

Demand for high-end cameras is soaring The ubiquity of smartphones has helped ubiquity: 美 [juːˈbɪkwəti] 到处存在;遍在 注意发音 原文: Buying a Leica feels like buying a piece of art. Made in Germany, the cameras are sold in th…

《JavaEE进阶》----15.<Spring Boot 日志>

本篇文章将记录我学习SpringBoot日志 1.日志文件的用途 2.SpringBoot日志文件的配置 3.用lombook依赖引入Slf4j注解,从而引入log对象。方便我们打印日志。 一、日志的作用 日志主要是为了发现问题、分析问题、定位问题。除此之外、日志还有许多其他的用途。 1.系统监…

Linux基础---07文件传输(网络和Win文件)

Linux文件传输地图如下,先选取你所需的场景,若你是需要Linux和Linux之间传输文件就查看SCP工具即可。 一.下载网站文件 前提是有网: 检查网络是否畅通命令:ping www.baidu.com,若有持续的返回值就说明网络畅通。Ctr…

国家网信办就人工智能生成合成内容标识征求意见

国家互联网信息办公室发布《人工智能生成合成内容标识办法(征求意见稿)》,该办法根据《中华人民共和国网络安全法》、《互联网信息服务算法推荐管理规定》、《互联网信息服务深度合成管理规定》、《生成式人工智能服务管理暂行办法》等法律法…

Neo4j入门案例:西游记

创建一个基于《西游记》中“孙悟空”的黑神话版本的知识图谱。这个图谱将会包括《西游记》中的一些主要角色、地点、事件以及它们之间的关系。我们将创建至少10个节点和20个关系,并提供相应的Cypher语句。 数据模型定义 实体类型(节点) 角色…

在conda虚拟环境中安装cv2(试错多次总结)

首先保证你创建好了虚拟环境,并在anaconda命令窗口激活虚拟环境 依次输入下列命令: pip install opencv-python3.4.1.15 pip install opencv-contrib-python3.4.1.15 pip install dlib19.6.1 然后测试cv2是否可以使用,输入python 运行pyth…

RHEL、centOS通过NET模式连接外网的最真实操作经验

切换网络模式 切换至NET模式(我这里用的是RHEL7) 编辑网卡配置文件 此处我的为/etc/sysconfig/network-scripts/ifcfg-eno16777728 (具体可以通过 ls /etc/sysconfig/network-scripts查看到) 命令:vim /etc/sysconf…

【Node.js】初识微服务

概述 Node.js 的微服务架构是一种通过将应用程序分解为独立的、松耦合的小服务的方式进行系统设计。 每个微服务负责处理一个特定的业务功能,并且这些服务可以独立开发、部署、扩展和管理,并且可以通讯。 它的核心思想就是解耦。 微服务和微前端是类…

火语言RPA流程组件介绍--单选/复选框

🚩【组件功能】:勾选页面单选/复选框元素 配置预览 配置说明 丨目标元素 支持T或# 默认FLOW输入项 通过自动捕获工具捕获(选择元素工具使用方法)或手动填写网页元素的css,xpath,指定对应网页元素作为操作目标 丨操作 对目标元素进行的勾…

大棚分割数据集,40765对影像,16.9g数据量,0.8米高分二,纯手工标注(arcgis标注)的大规模农业大棚分割数据集。

数据集名称: )“Greenhouse Segmentation Dataset (GSD)” 数据集规模: 包含40,765对用于大棚分割的影像数据,每对影像包括一张原始图像和相应的分割标签图。 数据量: 总数据量约为16.9GB,适合存储在现…

随想笔记1:CSDN写博客经常崩溃,遇到外链图片转存失败怎么办

人如果要学习输入,就必定要表达输出,否则无法达成正向良性循环。 所以技术性博客要常写,平台很多,最好是支持markdown的, 1,支持markdown写博客的在线技术类博客网站: CSDN、博客园、稀土掘金…

搬砖人如何快速找回丢失的数据?盘点4款高效电脑数据恢复工具

各位上班的朋友们,是不是有时候一不小心,就发现自己好不容易存下来的数据找不着了?别慌哈,今天我这个懂点科技的人就来给大家说说几款特别实用的能电脑数据恢复的工具,让你轻轻松松把那些“跑丢了”的数据给找回来&…

Linux文件系统(上)

目录 前言 1.文件接口——用户与文件的“桥梁” 2.C语言中FILE结构与Linux系统调用中fd的关系 3.fd字段如何在文件读写操作中发挥作用 4.fd的分配规则与文件重定向 5.文件缓冲区 6.如何理解Linux中一切皆文件的管理方案 7.涉及代码一览 总结 前言 在Linux中存在“两列”文件…