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

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中指定范围内的所有行。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

向量数据库实战介绍

本文将介绍三种常用的向量数据库:faiss, Milvus和Qdrant,并给出一个具体的使用例子。 向量数据库(Vector Database)是一种专门用于存储、管理、查询、检索向量的数据库,主要应用于人工智能、机器学习、数据挖掘等领域。…

STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (b)

继续上篇博文:STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (a)-CSDN博客 往下写, 为什么:当GPIO_InitStructure.GPIO_PinGPIO_Pin_0 ; 时,其实就是将对应的该引脚的寄存器地…

如何处理Flutter内存泄漏检测和优化

处理Flutter内存泄漏问题是构建高性能、稳定的应用程序的关键部分之一。在本文中,我将详细介绍如何检测和优化Flutter内存泄漏问题,以确保应用程序的良好性能和用户体验。 1. 了解内存泄漏 在深入了解如何处理Flutter内存泄漏之前,首先需要了…

基于Springboot + MySQL + Vue 大学新生宿舍管理系统 (含源码)

目录 📚 前言 📑摘要 📑操作流程 📚 系统架构设计 📚 数据库设计 💬 管理员信息属性 💬 学生信息实体属性 💬 宿舍安排信息实体属性 💬 卫生检查信息实体属性 &…

LeetCode 第391场周赛个人题解

目录 哈沙德数 原题链接 思路分析 AC代码 换水问题 II 原题链接 思路分析 AC代码 交替子数组计数 原题链接 思路分析 AC代码 最小化曼哈顿距离 原题链接 思路分析 AC代码 哈沙德数 原题链接 思路分析 签到题,不说了 AC代码 class Solution:def s…

实时获取 Pacific Time Zone (太平洋时区) 时间

实时获取 Pacific Time Zone [太平洋时区] 时间 1. Google -> Pacific Time2. Pacific Time - exact time nowReferences 1. Google -> Pacific Time 2. Pacific Time - exact time now https://time.is/zh/PT References [1] Yongqiang Cheng, https://yongqiang.blog…

freeRTOS学习

总结 1.总结任务调度算法之间的区别 调度算法:抢占式调度:优先级高的任务可以打断低优先级任务的执行,适用于不同优先级任务的执行。 时间片轮换:分配时间片(1ms),时间片耗尽时,任…

[Python学习篇] Python创建项目

新建项目 打开开发工具 PyCharm 选择 New Project 目录结构如下 运行 hello world 选中项目,右键 New -> Python File 进行创建文件 运行项目

Java中生成一个唯一的文件名的方法

使用java.util.UUID&#xff08;通用唯一识别码&#xff09;的randomUUID()方法&#xff1a; import java.util.UUID;public class Test {public static void main(String[] args) {for (int i 0; i < 100; i) {String fileName UUID.randomUUID().toString();System.out…

设计模式-结构型-享元模式Flyweight

享元模式的特点&#xff1a; 享元模式可以共享相同的对象&#xff0c;避免创建过多的对象实例&#xff0c;从而节省内存资源 使用场景&#xff1a; 常用于需要创建大量相似的对象的情况 享元接口类 public interface Flyweight { void operate(String extrinsicState); } 享…

加域报错:找不到网络路径

在尝试将计算机加入Windows域时&#xff0c;如果收到“找不到网络路径”的错误提示&#xff0c;可能的原因及解决方法如下&#xff1a; 网络连接问题&#xff1a;确保计算机与域控制器之间的物理网络连接是正常的&#xff0c;可以通过ping命令测试与域控制器的连通性。例如&…

LCD1602显示屏

LCD1602显示 概述 LCD1602&#xff08;Liquid Crystal Display&#xff09;是一种工业字符型液晶&#xff0c;能够同时显示 1602 即 32 字符(16列两行) 引脚说明 //电源 VSS -- GND VDD -- 5V //对比度 VO -- GND //控制线 RS -- P1.0 RW -- P1.1 E -- P1.4 //背光灯 A -- 5…

大数据学习第十一天(复习linux指令3)

1、su和exit su命令就是用于账户切换的系统命令 基本语法&#xff1a;su[-] [用户名] 1&#xff09;-表示是否在切换用户后加载变量&#xff0c;建议带上 2&#xff09;参数&#xff1a;用户名&#xff0c;表示切换用户 3&#xff09;切换用户后&#xff0c;可以通过exit命令退…

欧拉路径欧拉回路

欧拉回路&#xff0c;指遍历图时通过图中每条边且仅通过一次&#xff0c;最终回到起点的一条闭合回路&#xff0c;适用于有向图与无向图&#xff0c;如果不强制要求回到起点&#xff0c;则被称为欧拉路径。 欧拉图&#xff1a;具备欧拉回路的图 无向图&#xff1a;图的所有顶…

Java解析实体类的属性和属性注释

前言 获取某个类的属性&#xff08;字段&#xff09;是我们经常都会碰到的&#xff0c;通常我们是通过反射来获取的。 但是有些特殊情况下&#xff0c;我们不仅要获取类的属性&#xff0c;还需要获取属性注释。这种情况下&#xff0c;我们只能通过注解去获取注释。可以自己定…

LC 111.二叉树的最小深度

111. 二叉树的最小深度 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a; 叶子节点是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a; root [3,9,20,null,null,15,7] 输出&#xff1a;…

python读取excel,转换成json格式,for国际化前端菜单

# -*- coding: utf-8 -*-import pandas as pd import json# 读取Excel文件中的数据 excel_file rD:\解析excel\zy.xlsx df pd.read_excel(excel_file)# 生成中文JSON和英文JSON cn_data {} en_data {} pu_data {} special_data_cn {} special_data_en {} special_data_p…

肿瘤免疫反应瀑布图(源于The Miller Lab)

目录 数据格式 绘图 ①根据剂量 ②根据type ③根据治疗响应度 添加水平线 数据格式 肿瘤免疫响应数据 rm(list ls()) library(tidyverse) library(dplyr) library(knitr)#模拟数据 # We will randomly assign the two doses, 80 mg or 150 mg, to the 56 subjects Me…

使用 Docker 部署 Puter 云桌面系统

1&#xff09;Puter 介绍 :::info GitHub&#xff1a;https://github.com/HeyPuter/puter ::: Puter 是一个先进的开源桌面环境&#xff0c;运行在浏览器中&#xff0c;旨在具备丰富的功能、异常快速和高度可扩展性。它可以用于构建远程桌面环境&#xff0c;也可以作为云存储服…

【EI会议征稿】2024年智能计算、信号处理与计算机科学国际会议(ICSPCS 2024)

2024 International Conference on Intelligent Computing, Signal Processing and Computer Science (ICSPCS 2024) ●会议简介 2024年智能计算、信号处理与计算机科学国际会议&#xff08;ICSPCS 2024&#xff09;即将在青岛隆重开幕。本次会议将汇聚全球智能计算、信号处理…