5.Python数据分析—Pandas数据结构详讲

news2025/1/8 14:59:45

5.Python数据分析—Pandas数据结构详讲

  • 摘要
  • 个人简介
  • 简介
  • Series
    • 定义和特点
    • 创建方法
    • 属性和方法
  • DataFrame
    • 定义和特点
    • 创建方法
    • 数据获取和操作
  • 索引对象
    • 种类和应用
    • 作用和管理

摘要

Pandas是一个开源的Python数据分析库,提供了高性能、易用的数据结构和数据分析工具。它的主要数据结构包括DataFrame和Series,可以方便地处理各种类型的数据,如数值、字符串、时间序列等。Pandas具有丰富的数据处理功能,如数据清洗、缺失值处理、数据对齐、分组、合并等。Pandas还提供了数据统计和分析功能,如描述性统计、相关性分析、线性回归等。Pandas广泛应用于金融、社会科学、生物信息学等领域的数据分析任务。

个人简介

🏘️🏘️个人主页:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,CSDN内容合伙人,阿里云社区专家博主,新星计划导师,在职数据分析师。

💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。

在这里插入图片描述

🐘 希望大家能持续支持,共同向前迈进!😁
如果您觉得文章有价值,
欢迎留言💬,点赞👍,收藏🔖并关注我们➕🤝。
🪐💫💫💫💫💫💫💫热门专栏💫💫💫💫💫💫💫🪐
类型专栏
Python基础Python基础入门—详解版
Python进阶Python基础入门—模块版
Python高级Python网络爬虫从入门到精通🔥🔥🔥
Web全栈开发Django基础入门
Web全栈开发HTML与CSS基础入门
Web全栈开发JavaScript基础入门
Python数据分析Python数据分析项目🔥🔥
机器学习机器学习算法🔥🔥
人工智能人工智能

简介

Pandas库是Python中用于数据分析的一个极为重要的工具,它在处理表格形式和各种混杂数据方面展现出了强大的功能。
在这里插入图片描述

  • 数据结构:Pandas主要提供了两种数据结构,即Series和DataFrame。Series是一种一维的数据结构,适合存储单列的数据序列,并且拥有一个与之相关的索引。而DataFrame是一个二维的、大小可变的、潜在的异质的表格型数据结构,非常适合于处理含有多列的数据集。这两种结构的设计使得Pandas特别适合用来处理表格型数据,如Excel表格或SQL数据库中的表。
  • 数据处理:Pandas能够轻松地执行数据清洗和转换任务,例如缺失值的处理、数据对齐和操作等。这些功能对于准备数据分析前的预处理步骤至关重要。
  • 数据分析:除了基础数据操作外,Pandas还支持数据的汇总和统计,以及时间序列分析等功能。它允许用户进行分组、合并以及基于复杂逻辑的数据筛选,从而使得数据分析工作更加高效和灵活。
  • 数据可视化:Pandas与Matplotlib等图形库紧密集成,提供了简单的接口来创建多种类型的图表,帮助用户更好地理解数据分布和趋势。
  • 易用性:Pandas设计之初就注重用户体验,其API简洁明了,即使是初学者也能相对容易地上手并应用于实际问题解决中。
  • 社区支持:作为一个开源项目,Pandas有着活跃的社区支持和丰富的文档资源,这对于用户学习和解决问题非常有帮助。

Series

定义和特点

Pandas中的Series是一种带标签的一维数组,它可以存储多种类型的数据,并且每个数据点都有一个对应的索引标签

在这里插入图片描述

Series由两部分组成
一是数据值(values),它们可以是整数、浮点数、字符串或Python对象等类型;
二是索引(index),它用于标记每个数据值,并且可以由整数、字符串、日期等不同类型的标签构成。

Series的特点

  • 索引唯一性:Series的索引是唯一的,不会出现重复的索引标签,这保证了每个数据点都可以被准确地标识和访问。
  • 自动生成索引:如果在创建Series时没有显式指定索引,Pandas会自动创建一个默认的整数索引,从0开始递增。
  • 灵活性:由于Series具有标签,这使得在数据分析过程中可以更加灵活地操作数据。例如,可以通过索引直接访问、修改或删除特定的数据点。
  • 创建方式多样:Series可以通过传递一个数据数组和一个可选的索引数组来创建。如果没有提供索引数组,则会使用默认的整数索引。
  • 数据类型多样性:Series可以包含不同数据类型的元素,这为处理混合类型的数据提供了便利。

Series是Pandas中的基础数据结构之一,它的设计使得数据分析变得更加高效和直观。通过合理的索引管理,可以快速地对数据集进行切片、切块、聚合和分析等操作。

创建方法

创建Series对象的方法有多种,以下是三种常见的方法及其相关代码示例:

  1. 通过直接传递数据
    import pandas as pd
    
    # 创建一个整数类型的Series
    series1 = pd.Series([1, 2, 3, 4, 5])
    
    # 创建一个字符串类型的Series
    series2 = pd.Series(['a', 'b', 'c', 'd'])
    
    # 创建一个混合类型的Series
    series3 = pd.Series([1, 'b', 3.0, True])
    

在这里插入图片描述

  1. 指定索引
    import pandas as pd
    
    # 创建一个带有自定义索引的Series
    index = ['A', 'B', 'C', 'D']
    series = pd.Series([10, 20, 30, 40], index=index)
    

在这里插入图片描述

  1. 通过字典方式创建Series
    import pandas as pd
    
    # 创建一个由字典构成的Series
    data_dict = {'A': 10, 'B': 20, 'C': 30, 'D': 40}
    series = pd.Series(data_dict)
    

在这里插入图片描述

属性和方法

Series对象具有以下属性和方法:

  1. dtype:返回Series中数据的类型。例如,如果Series包含整数,则dtype将返回’int64’。

  2. index:返回Series的索引对象,即标签序列。可以通过该属性获取或设置Series的索引值。

  3. values:返回Series中的数据数组,以NumPy数组的形式表示。可以通过该属性获取或修改Series的值。

  4. name:返回或设置Series的名称。名称是一个可选的属性,用于标识Series。

以下是使用这些属性进行数据操作的示例代码:

import pandas as pd

# 创建一个Series对象
data = [1, 2, 3, 4, 5]
series = pd.Series(data)

# 获取Series的数据类型
print("Data type:", series.dtype)

# 获取Series的索引对象
print("Index:", series.index)

# 获取Series的值数组
print("Values:", series.values)

# 设置Series的名称
series.name = "Numbers"
print("Name:", series.name)

在这里插入图片描述

DataFrame

定义和特点

DataFrame是Pandas库中的一个核心数据结构,它是一个二维表格型数据结构,具有潜在的异质的列和可变的行
在这里插入图片描述

DataFrame由行和列组成,其中每一行代表一个观测,而每一列则代表一个特定的变量或特征。这种结构类似于Excel表格或数据库中的表,使得DataFrame非常适合于处理实际世界中的结构化数据。

DataFrame的特点

  • 维度:DataFrame可以有任意数量的行和列,允许灵活地处理不同规模的数据集。
  • 索引:与Series类似,DataFrame也拥有索引。默认情况下,行索引是自动生成的唯一整数索引,但也可以根据需要自定义索引。
  • 列类型多样性:DataFrame每列的数据类型不必相同,这意味着可以在一个DataFrame中存储不同类型的数据,如数值、字符串、日期等,这为数据分析提供了极大的灵活性。
  • 缺失值:DataFrame可以包含缺失值(NaN),Pandas提供了一系列处理缺失值的方法,如填充、删除等。
  • 数据操作:可以通过各种方法对DataFrame进行操作,如添加、删除列,合并行,切片和切块等,这些操作都非常直观和高效。

创建方法

创建DataFrame对象的方法有多种,以下是几种常见的方法及其相关代码示例:

  1. 通过二维数组
    import pandas as pd
    
    # 创建一个二维数组
    data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    
    # 创建一个DataFrame
    df = pd.DataFrame(data)
    

在这里插入图片描述

  1. 通过列表
    import pandas as pd
    
    # 创建两个列表,分别代表行和列的数据
    data = [['a', 'b', 'c'], [1, 2, 3]]
    
    # 指定列标签
    columns = ['Column1', 'Column2', 'Column3']
    
    # 创建一个DataFrame
    df = pd.DataFrame(data, columns=columns)
    

在这里插入图片描述

  1. 通过字典
    import pandas as pd
    
    # 创建一个字典,其中键是列标签,值是对应列的数据
    data_dict = {
        'Column1': ['a', 'b', 'c'],
        'Column2': [1, 2, 3],
        'Column3': [4.0, 5.0, 6.0]
    }
    
    # 创建一个DataFrame
    df = pd.DataFrame(data_dict)
    

在这里插入图片描述

数据获取和操作

获取DataFrame中的特定行或列的数据可以通过以下方法实现:

  1. 通过索引标签:可以使用loc属性来根据行和列的索引标签获取数据。例如,df.loc[row_label, column_label]可以获取指定行和列的数据。

  2. 通过位置索引:可以使用iloc属性来根据行和列的位置索引获取数据。例如,df.iloc[row_index, column_index]可以获取指定行和列的数据。

  3. 通过切片操作:可以使用切片操作符来获取连续的行或列的数据。例如,df[start:end]可以获取从startend(不包括end)的行数据,而df['column_name']可以获取名为column_name的列数据。

添加、修改或删除行和列的操作可以通过以下方法实现:

  1. 添加行:可以使用append()方法将新的行添加到DataFrame中。例如,df.append(new_row)可以将new_row添加到DataFrame的末尾。

  2. 添加列:可以使用赋值操作符将新的列添加到DataFrame中。例如,df['new_column'] = new_data可以将new_data作为新列添加到DataFrame中。

  3. 修改行或列:可以使用赋值操作符直接修改DataFrame中的行或列。例如,df.loc[row_label, column_label] = new_value可以修改指定行和列的值。

以下是相关代码示例:

import pandas as pd

# 创建一个DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)

# 获取特定行和列的数据
print("Row 1:")
print(df.loc[1])
print("Column 'Age':")
print(df['Age'])

# 添加行
new_row = {'Name': 'David', 'Age': 40, 'City': 'Tokyo'}
df = df.append(new_row, ignore_index=True)
print("DataFrame after adding a row:")
print(df)

# 添加列
df['Country'] = ['USA', 'UK', 'France', 'Japan']
print("DataFrame after adding a column:")
print(df)

# 修改行或列的值
df.loc[2, 'City'] = 'Berlin'
print("DataFrame after modifying a value:")
print(df)

在这里插入图片描述

索引对象

种类和应用

Pandas中的索引对象类别主要有以下几种

  1. Int64Index:整数索引,用于存储整数数据。在数据分析中,它通常用于表示数据的行标签或列标签。

  2. MultiIndex:多级索引,用于存储具有多个级别的索引数据。在数据分析中,它常用于处理具有多个维度的数据,如时间序列数据、分组数据等。

  3. DatetimeIndex:日期时间索引,用于存储日期和时间数据。在数据分析中,它常用于处理时间序列数据,如股票价格、气象数据等。

  4. RangeIndex:范围索引,用于存储连续的整数数据。在数据分析中,它通常用于表示数据的行标签或列标签。

  5. CategoricalIndex:分类索引,用于存储分类数据。在数据分析中,它常用于处理具有离散值的数据,如性别、地区等。

这些索引对象在数据分析中的应用如下

  1. Int64Index和RangeIndex:在数据处理过程中,它们通常用于表示数据的行标签或列标签,方便进行数据筛选、排序等操作。

  2. MultiIndex:在处理具有多个维度的数据时,如时间序列数据、分组数据等,MultiIndex可以方便地表示和操作这些数据。

  3. DatetimeIndex:在处理时间序列数据时,DatetimeIndex可以方便地进行时间相关的计算和操作,如时间差、滑动窗口等。

  4. CategoricalIndex:在处理具有离散值的数据时,CategoricalIndex可以方便地进行分类相关的计算和操作,如分组统计、透视表等。

作用和管理

索引对象在管理轴标签和其他元数据方面的作用

  1. 轴标签:索引对象可以作为DataFrame的行标签和列标签,方便进行数据的筛选、排序等操作。例如,通过指定行标签或列标签,可以快速地获取或修改某一行或某一列的数据。

  2. 元数据:索引对象还可以存储其他元数据信息,如数据的来源、单位等。这些信息可以帮助我们更好地理解和分析数据。

  3. 数据对齐:在进行数据操作时,索引对象可以帮助我们确保数据的对齐。例如,在进行数据合并时,可以通过索引对象来匹配相同标签的数据,从而避免数据错位的问题。

利用索引从Series和DataFrame中获取或重新赋值数据点

  1. 使用loc属性:通过指定行标签或列标签,可以快速地获取或修改某一行或某一列的数据。例如,df.loc[row_label, col_label]可以获取或修改DataFrame中指定位置的数据。

  2. 使用iloc属性:通过指定行索引或列索引,可以快速地获取或修改某一行或某一列的数据。例如,df.iloc[row_index, col_index]可以获取或修改DataFrame中指定位置的数据。

  3. 使用布尔索引:通过指定一个布尔条件,可以快速地获取满足条件的数据。例如,df[df['col_name'] > 0]可以获取DataFrame中某列值大于0的所有行。

  4. 使用切片操作:通过指定一个范围,可以快速地获取连续的数据。例如,df.loc[start:end]可以获取DataFrame中指定范围内的所有行。

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

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

相关文章

突破校园网限速:使用 iKuai 多拨分流负载均衡 + Clash 代理(内网带宽限制通用)

文章目录 1. 简介2. iKuai 部署2.1 安装 VMware2.2 安装 iKuai(1) 下载固件(2) 安装 iKuai 虚拟机(3) 配置 iKuai 虚拟机(4) 配置 iKuai(5) 配置多拨分流 2.3 测试速度 3. Clash 部署3.1 准备工作(1) 配置磁盘分区(2) 安装 Docker(3) 安装 Clash(4) 设置代理 1. 简介 由于博主…

openwrt开发包含路由器基本功能的web问题记录

1.这里的扫描怎么实现的先找一些luci代码,在openwrt21版本后,luci用js替换了lua写后台,先找一些代码路径 在openrwt15这部分代码是在这个目录下 feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm 里面包含…

现代化个人博客系统 ModStartBlog v9.2.0

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场,后台一键快速安装会…

JavaScript基础代码练习之翻转数组

一、要求将给定数组 [red, green, blue, pink, purple] 的内容反转存放&#xff0c;并将结果输出到控制台。 二、编写代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" cont…

Windows 中的硬链接、软连接、快捷方式和普通文件

在 Windows 中&#xff0c;文件可以有四种类型&#xff1a; 硬链接软连接快捷方式普通文件 当我们正常创建一个文件时&#xff0c;这个文件就是普通文件 echo hello > a.txt (Get-Item "a.txt").LinkType -eq $null # 输出 True然后我们可以为其添加一个软连接…

计算机视觉之三维重建(6)---多视图几何(上)

文章目录 一、运动恢复结构问题&#xff08;SfM&#xff09;二、欧式结构恢复2.1 概述2.2 求解2.3 欧式结构恢复歧义 三、仿射结构恢复3.1 概述3.2 因式分解法3.3 总结3.4 仿射结构恢复歧义 一、运动恢复结构问题&#xff08;SfM&#xff09; 1. 运动恢复结构问题&#xff1a;通…

Stable Diffusion扩散模型推导公式的基础知识

文章目录 1、独立事件的条件概率2、贝叶斯公式、先验概率、后验概率、似然、证据3、马尔可夫链4、正态分布 / 高斯分布5、重参数化技巧6、期望7、KL散度 、高斯分布的KL散度8、极大似然估计9、ELBO :Evidence Lower Bound10、一元二次方程 1、独立事件的条件概率 A 和 B 是两个…

基于lora技术微调Gemma(2B)代码实践

一、前置条件 获得模型访问权&#xff0c;选择Colab运行时&#xff0c;配置训练环境。 先在Kaggle上注册&#xff0c;然后获得Gemma 2B 的访问权&#xff1b; 然后在Google colab 配置环境&#xff0c;主要是GPU的选择&#xff0c;免费的是T4&#xff0c;建议采用付费的A100…

【JVM基础】JVM入门,详讲JVM

组建团队中......加v备注进群个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏…

[蓝桥杯练习题]出差

一道DJ题,重要的是隔离时间,把隔离时间加在边权上即可 现实生活的题大多都是无向图建图,需要边的两端点各自上邻接表和相同权重 #include<bits/stdc.h> using namespace std; #define ll long long const int N1005; const int M10005; struct edge{int to;ll w;edge(int…

电商好评语整理与优化:让繁琐工作变得轻松高效

在电子商务领域&#xff0c;客户的好评是店铺信誉和产品质量的重要体现。然而&#xff0c;整理和优化这些好评语却是一项既繁琐又需要细致耐心的工作。本文将探讨如何高效地进行电商好评语的筛选、分类和优化&#xff0c;让这一工作变得更加轻松和高效。 一、明确整理目的 在开…

从零开始学RSA加密解密过程

因为文字太过晦涩难懂&#xff0c;下面以图示的方法来理解RSA加密解密的过程 以上过程中因为HACK无法得到p,q信息&#xff0c;也就是无法计算出d , 导致了无法解密 c 得到 m (n,e) 公钥 (d,n) 私钥 (p,q,n,e) 生成的加密必要信息 必要的公式 c ≡ me mod n ----------->…

单片机家电产品学习记录--IO推挽输出

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 单片机家电产品–IO推挽输出 前言 记录学习单片机家电产品内容 已转载记录为主 一、知识点 1 单片机IO口科普&#xff1a;推挽输出、开漏输出详解 推挽输出既可以输出低…

Android 性能优化之黑科技开道(一)

1. 缘起 在开发电视版智家 App9.0 项目的时候&#xff0c;发现了一个性能问题。电视系统原本剩余的可用资源就少&#xff0c;而随着 9.0 功能的进一步增多&#xff0c;特别是门铃、门锁、多路视频同屏监控后等功能的增加&#xff0c;开始出现了卡顿情况。 经过调研分析发现有…

OpenHarmony实战:Makefile方式组织编译的库移植

以yxml库为例&#xff0c;其移植过程如下文所示。 源码获取 从仓库获取yxml源码&#xff0c;其目录结构如下表&#xff1a; 表1 源码目录结构 名称描述yxml/bench/benchmark相关代码yxml/test/测试输入输出文件&#xff0c;及测试脚本yxml/Makefile编译组织文件yxml/.gitat…

C语言:文件操作(一)

目录 前言 1、为什么使用文件 2、什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3、文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 结&#xff08;一&#xff09; 前言 本篇文章将介绍C语言的文件操作&#xff0c;在后面的内容讲到&#xff1a;为什么使用文…

2024-04-03 NO.4 Quest3 手势追踪抓取物体

文章目录 1 手势抓取方式1.1 Hand Grab1.2 Touch Hand Grab1.3 Distance Hand Grab 2 HandGrabExamples 示例场景2.1 Interactor 对象2.2 Interactable 对象2.2.1 父子结构2.2.2 “Hand Grab lnteractable” 脚本2.2.3 “Move Towards Target Provider” 脚本2.2.4 其他 Moveme…

OpenHarmony实战:CMake方式组织编译的库移植

以double-conversion库为例&#xff0c;其移植过程如下文所示。 源码获取 从仓库获取double-conversion源码&#xff0c;其目录结构如下表&#xff1a; 表1 源码目录结构 名称描述double-conversion/cmake/CMake组织编译使用到的模板double-conversion/double-conversion/源…

浅谈分布式光伏电站的运维管理

摘要&#xff1a;随着近些年我国对节能降耗关注力度的持续加大&#xff0c;为满足人们不断增长的电能需求&#xff0c;光伏发电产业得到迅猛发展&#xff0c;其中分布式光伏发电的比重持续增长。在打赢脱贫攻坚战的大背景下&#xff0c;国家电网公司探索出一条“阳光扶贫”的扶…

第十三届蓝桥杯JavaA组省赛真题 - 青蛙过河

解题思路&#xff1a; 定义一个累和数组arr&#xff0c;我们可以比较arr[ i ]和arr[ l ]之间的差值看是否大于等于2倍的x&#xff0c;满足则证明这两点之间可以跳满所有实际过河次数&#xff0c;此时记录最大距离&#xff0c;并移动左边界 l import java.util.Scanner;public…