首页 > 其他分享 >数据分析-Pandas模块

数据分析-Pandas模块

时间:2024-05-07 15:34:27浏览次数:17  
标签:数据分析 Series DataFrame pandas 索引 模块 series 数据结构 Pandas

pandas是以NumPy为基础进行设计的,因此pandas不仅能与其他大多数模块兼容,而且还能借力NumPy模块强大的计算能力,因此,在数据分析中pandas和NumPy这两个模块经常是一起使用的。
为了数据分析的需要,pandas既不使用Python已有的内置数据结构,也不使用其他库的数据结构,而是专门设计了两种新型的数据结构。
使用这两种数据结构管理与SQL关系数据库和Excel工作表具有类似特征的数据会非常方便。由于pandas最初是作为金融数据分析工具而开发出来的,因此,pandas为时间序列分析提供了很好的支持。根据开发pandas时提出的需求,pandas的基本功能如下:

  • 具备按轴自动或显式数据对齐功能的数据结构。这可以防止许多由于数据未对齐以及来自不同数据源(索引方式不同)的数据而导致的常见错误。
  • 集成时间序列功能。
  • 既能处理时间序列数据也能处理非时间序列数据的数据结构。
  • 数学运算和约简(比如对某个轴求和)可以根据不同的元数据(轴编号)执行。
  • 灵活处理缺失数据。
  • 合并及其他出现在常见数据库(例如基于SQL)中的关系型运算。

数据结构

pandas的数据结构中有两大核心,分别是Series与DataFrame。其中Series是一维数组,它和Numpy中的一维数组类似。这两种一维数组与Python中的基本数据结构List相近,Series可以保存多种数据类型的数据,如布尔值、字符串、数字类型等。DataFrame是一种二维的表格形式的数据结构,它类似于Excel表格。

  • Series 是一种类似于一维数组的对象,它由一组数据(各种 Numpy 数据类型)以及一组与之相关的数据标签(即索引)组成。
  • DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。

安装

pip install pandas

Series

Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。

  • 索引:每个 Series 都有一个索引,它可以是整数、字符串、日期等类型。如果没有显式指定索引,Pandas 会自动创建一个默认的整数索引
  • 数据类型: Series 可以容纳不同数据类型的元素,包括整数、浮点数、字符串等

pandas.Series( data, index, dtype, name, copy):可以使用 pd.Series() 构造函数创建一个 Series 对象,传递一个数据数组(可以是列表、NumPy 数组等)和一个可选的索引数组

  • data:一组数据(ndarray 类型或者列表,字典等等)。

  • index:数据索引标签,如果不指定,默认从 0 开始。

  • dtype:数据类型,默认会自己判断。

  • name:设置名称。

  • copy:拷贝数据,默认为 False。

    • 使用数组创建

    • 使用字典创建:字典中的一个键与值的映射关系,可以被看成是Series对象中的索引值到数据值的一个映射,因此,可以将字典直接转换为Series对,也可以将Series对象转换成字典(pd.Series.to_dict

    • 使用列表创建

    数组创建的series是动态的:即数组改变,series也会随之改变

    import pandas as pd
    import numpy as np
    '''数组'''
    print('数组:')
    mynumpy = np.array([1,2,3,4])
    series_arr = pd.Series(mynumpy)
    print(series_arr)
    mynumpy[1]=22
    print('\n',series_arr)
    '''字典'''
    print('\n','字典:')
    mydict = {'jack':18,'rose':19,'joe':17}
    series_dict = pd.Series(mydict)
    print(series_dict)
    mydict.update({'jace':180})
    print('\n',series_dict)
    '''列表'''
    print('\n','列表:')
    mylist = ['a','b','c']
    series_list = pd.Series(mylist)
    print(series_list)
    mylist[0]='aa'
    print('\n',series_list)
    

Series索引

  • 设置索引

  • 索引访问

  • 切片访问

Series元素操作

  • 元素赋值

  • 元素筛选

  • 算数运算和数学函数(可以直接调用numpy库来处理)

  • 去重

  • 统计个数

  • 统计每个元素的个数

  • 判断一列元素是否存在,返回的是布尔类型series

Series对象操作

在Series对象之间进行运算时,Series能够通过识别标签对齐不一致的数据。这就是Series运算时的自动对齐功能。

通过上述计算得到了一个新Series对象,其中只对标签相同的元素求和,其他只属于各自的Series对象的标签也被添加到新对象中,只不过它们的值为NaN

NaN

一般来讲,NaN表示数据有问题,必须对其进行处理,尤其是在数据分析时。从某些数据源抽取数据时遇到了问题,甚至是数据源缺失数据时,往往会产生这类数据。另外,在执行计算和函数运算时也会遇到这类数据。

DataFrame

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)

  • 列和行: DataFrame 由多个列组成,每一列都有一个名称,可以看作是一个 Series。同时,DataFrame 有一个行索引,用于标识每一行
  • 二维结构: DataFrame 是一个二维表格,具有行和列。可以将其视为多个 Series 对象组成的字典。
  • 列的数据类型: 不同的列可以包含不同的数据类型,例如整数、浮点数、字符串等。

pandas.DataFrame( data, index, columns, dtype, copy)

  • data:一组数据(ndarray、series, map, lists, dict 等类型)。

  • index:索引值,或者可以称为行标签

  • columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。

  • dtype:数据类型。

  • copy:拷贝数据,默认为 False。

    • 使用列表创建

    • 使用字典创建

    没有数据部分用NaN代替

    • 使用数组创建

DataFrame属性

  • 行属性,列属性

  • 获取所有数据

  • 获取某一列数据,两种写法够可以

  • 通过iloc属性获取某一行数据,指定index也不可以,只能通过该属性,可以切片

DataFrame操作

  • 指定行索引和列索引标签

  • 添加元素

    • 添加一列元素

    • 添加一行元素

  • 修改元素

  • 删除元素

  • 筛选元素

  • 判断元素是否存在

  • 转置,和nupmy类似

Pandas索引对象

pandas的两种数据结构Series和DataFrame都是具备索引的。在创建pandas的两种数据结构时,可以通过选项参数index指定标签或行索引。pandas的索引对象负责管理轴标签和其他元数据(如轴名称等)。在创建Series或DataFrame的时候,所用到的任何数组或其他序列的标签都会被转换成一个Index对象。
与pandas数据结构(Series和DataFrame)中其他元素不同的是,Index对象是不可修改的(Immutable),一旦声明,它就不能改变。当不同数据结构共用Index对象时,该特性能够保证它的安全。

Index对象的属性和方法

  • 获取Index对象

其他的方法如:插入,删除,计算并集等等和list方法类似

  • 重置索引

层级索引

  • 创建层级索引
    • Series:长度必须一致,否知报错

    • Dataframe:显式不写了

数据读取和保存

读取

  • 省略读取

  • to_string() 用于返回 DataFrame 类型的数据

  • 读取前几行

  • 读取末尾几行

  • 读取表格信息

标签:数据分析,Series,DataFrame,pandas,索引,模块,series,数据结构,Pandas
From: https://www.cnblogs.com/yigehulu/p/18081033

相关文章

  • BOSHIDA AC/DC电源模块的设计与实现技巧
    BOSHIDAAC/DC电源模块的设计与实现技巧AC/DC电源模块是一种常用的电源模块,用于将交流电转换为直流电,为各种电子设备提供电力。在设计和实现AC/DC电源模块时,有一些重要的技巧需要注意。 首先,选择适当的拓扑结构对于AC/DC电源模块的性能至关重要。常见的拓扑结构包括线性电源......
  • unplugin-auto-import 工程项目 import 模块自动导入
    渡一(袁老师)视频详解[点击前往]unplugin-auto-import是一个用于**Vue3**(和Vue2的CompositionAPI)的插件,它可以自动导入你在代码中使用的VueCompositionAPI函数(如ref,reactive,computed等)以及来自其他库的函数(如VueRouter的useRoute,useRouter,或者Pinia的de......
  • Python模块request去掉headers里请求content-length
    前言全局说明Python模块request去掉headers里请求content-length一、说明当request请求data有参数时,会自动计算长度,并增加content-length值,但有些服务器不接收这样的参数就可能会报错。二、网上方法:2.1requests去掉headers里的content-length来源:https://blog......
  • BOSHIDA AC/DC电源模块的高效能源管理与效率优化
    BOSHIDAAC/DC电源模块的高效能源管理与效率优化AC/DC电源模块是一种常见的电源转换装置,用于将交流电转换为直流电。它被广泛应用于各种电子设备中,如计算机、通信设备、工业自动化设备等。在现代化的科技社会中,高效能源管理和效率优化变得越来越重要。本文将探讨如何在AC/DC电源......
  • 我在下载模块的时候下不下来出现这种情况是什么意思?
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【无敌劈叉小狗】问了一个Python库下载失败的问题。问题如下:我在下载模块的时候下不下来出现这种情况是什么意思?二、实现过程这里【莫生气】给了一个指导:执行那串绿色的命令试试看,然后再重新安装。后来【论草莓如......
  • 内核模块makefile
    obj-m:=hds.o #根据make的自动推导原则,make会自动将源程序hds.c编译成目标程序hds.o。#所有在配置文件中标记为-m的模块将被编译成可动态加载进内核的模块。即后缀为.ko的文件。CURRENT_PATH:=$(shellpwd) #参数化,将模块源码路径保存在CURRENT_PATH中LINUX_KERNEL:=$(......
  • [数据分析与可视化] Python绘制数据地图3-GeoPandas使用要点-转载
    [数据分析与可视化]Python绘制数据地图3-GeoPandas使用要点 本文主要介绍GeoPandas的使用要点。GeoPandas是一个Python开源项目,旨在提供丰富而简单的地理空间数据处理接口。GeoPandas扩展了Pandas的数据类型,并使用matplotlib进行绘图。GeoPandas官方仓库地址为:GeoPandas。Ge......
  • Verilog插件:补全模块实例模板
    https://mp.weixin.qq.com/s/tiaXdddID5-hxPtJZOvm8gIntellijIDEA插件VerilogLanguageSupport(插件链接),v2024.2.0版本特性。     https://mp.weixin.qq.com/s/tiaXdddID5-hxPtJZOvm8g ......
  • arduino uno+LCD12864(ST7735S)+蓝牙模块实现贪吃蛇
    1.前言:1.1本实验实现的贪吃蛇能穿越边界,结束游戏的唯一条件是贪吃蛇到达指定长度1.2本实验所用LCD可能不是LCD12864,LCD12864所用库为u8glib,笔者在词库中并没有找到型号为ST77355的初始化函数,而是在ucglib中找到,其方法为Ucglib_ST7735_18x128x160_SWSPIucg(/*sclk=*/13,/*data......
  • 数据分析的五大流程:需求、获取、处理、分析、可视化
    数据分析的五大流程:需求、获取、处理、分析、可视化......