Pandas时序数据分析实践—基础(1)

目录

  • 1. Pandas基本结构
  • 2. Pandas数据类型
    • 2.1. 类型概述
      • 2.1.1. 整数类型(int):
      • 2.1.2. 浮点数类型(float):
      • 2.1.3. 布尔类型(bool):
      • 2.1.4. 字符串类型(object):
      • 2.1.5. 时间类型:
      • 2.1.6. 分类类型:
    • 2.2. 类型内存
    • 2.3. Pandas数据类型与python、numpy对比
    • 2.3. 类型转换
  • 3. 常用函数
    • 3.1. 基本函数
    • 3.2. 窗口函数
    • 3.3. 基本统计

1. Pandas基本结构

Pandas是一个基于Numpy的数据结构,它提供了两种主要的数据结构:Series和DataFrame。Series是一种一维的数组型对象,它包含了一个值序列。DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共同用一个索引) 。

  • Series是一种一维的带标签数组对象,Series中的元素可以是任何类型的数据;
  • DataFrame,二维数据表,是Series容器,而DataFrame中的元素必须是同一种类型的数据 。

其中,最常用的是DataFrame,做为数据分析数据载体——二维数据表,基于此有大量的统计分析函数。DataFrame结构如下图所示。

在这里插入图片描述
DataFrame是由多种类型的列构成的二维标签数据结构,类似于Excel、SQL表,或Series对象构成的字典。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共同用一个索引) 。

DataFrame的数据由三个部分组成:行索引、列索引和数据。每个元素都有一个行索引和一个列索引,它们都是唯一的。行索引和列索引都可以是任何类型的对象,例如整数、字符串、日期等。

2. Pandas数据类型

2.1. 类型概述

使用pandas进行数据分析时,最常用到的几种类型是:字符串类型、数值类型(整数和浮点数)、日期类型、category 类型。

import pandas as pd
import numpy as np# 创建一个包含各种类型的DataFrame
data = {'Integer': pd.Series([1, 2, 3], dtype='int32'),'Float': pd.Series([21.1, 25.2, 30.3], dtype='float64'),'Boolean': pd.Series([True, False, True], dtype='bool'),'String': pd.Series(['植物园', '湘江公园', '太阳岛'], dtype='object'),'Datetime': pd.to_datetime(['2022-01-01', '2022-02-01', '2022-03-01']),
}df = pd.DataFrame(data)# 添加一个分类类型的列
df['Category'] = pd.Series(['dog', 'cat', 'dog'], dtype='category')print("包含各种类型的DataFrame:\n", df)

2.1.1. 整数类型(int):

概述: Pandas 提供不同精度的整数类型,如int8、int16、int32、int64,用于存储整数数据。
应用场景: 选择合适的整数类型有助于减小数据集的内存占用。

2.1.2. 浮点数类型(float):

概述: Pandas 支持不同精度的浮点数类型,如float16、float32、float64,用于存储带小数的数值。
注意事项: 选择适当的浮点数类型有助于平衡精度和内存占用。

2.1.3. 布尔类型(bool):

概述: 布尔类型用于存储逻辑值,通常在数据筛选中使用。
应用场景: 用于筛选数据集中的特定条件。

2.1.4. 字符串类型(object):

概述: Pandas 的字符串类型,通常使用 object 表示,适用于包含文本数据的列。
字符串操作: Pandas 提供了丰富的字符串操作,如字符串拼接、切片、替换等。

2.1.5. 时间类型:

概述: Pandas 提供 datetime 类型用于处理日期和时间数据。
日期操作: 支持日期的解析、格式化、加减等操作。
时间序列: 时间类型在 Pandas 中常用于创建时间序列索引。

2.1.6. 分类类型:

概述: Pandas 提供 category 类型用于处理有限个数的离散值,提高性能和内存效率。
应用场景: 适用于重复值较多的列,如性别、地区等。

2.2. 类型内存

通过观察内存使用情况,你可以更好地了解哪些列占用了大量内存,从而决定是否需要调整它们的数据类型。memory_usage 方法是一个非常有用的工具,可以用于查看 DataFrame 中各列的内存使用情况。合理选择数据类型是优化内存使用的重要步骤之一,特别是当处理大型数据集时。

# 接续上面的代码。
df.memory_usage(deep=True)
	Index       128Integer      12Float        24Boolean       3String      266Datetime     24Category    400dtype: int64

在这个例子中,memory_usage(deep=True) 会返回一个 Series,其中包含每列的内存使用情况。deep=True 会深入到对象中,对于字符串类型的列,会计算字符串的实际内存使用情况。

2.3. Pandas数据类型与python、numpy对比

Pandas dtypePython类型Numpy类型说明
objectstrstring_,unicode_用于文本
int64intint_,int8_,int16,int32,int64,uint8,uint16,uint32,uint64用于整数
float64floatfloat_,float16,float32,float64用于浮点数
boolboolbool_用于布尔值
datetime64NANA用于日期时间
timedelta[ns]NANA用于时间差
categoryNANA用于有限长度的文本值列表

2.3. 类型转换

import pandas as pd# 创建一个包含不同类型数据的DataFrame
data = {'Float': [1.1, 2.2, 3.3],'Integer': [1, 2, 3],'Timestamp': pd.to_datetime(['2022-01-01', '2022-02-01', '2022-03-01']),'TimestampString': ['2022-01-01', '2022-02-01', '2022-03-01']
}df = pd.DataFrame(data)# 转换 'Float' 列为字符串
df['Float'] = df['Float'].astype(str)# 转换 'TimestampString' 列为 datetime64 类型
df['TimestampString'] = pd.to_datetime(df['TimestampString'])# 查看转换后的数据类型
print("\n转换类型后的数据类型:\n", df.dtypes)# 转换 'Float' 列为字符串
df['Float'] = df['Float'].astype('float32')df['TimestampString'] = df['TimestampString'].dt.strftime('%Y-%m-%d %H:%M')
# 查看再转换后的数据类型
print("\n再转换类型后的数据类型:\n", df.dtypes)
df

在这里插入图片描述

当数据类型转换处理 Pandas DataFrame 时,dtypes 和 astype 的使用是非常重要的。

  • dtypes:
    dtypes 是 DataFrame 对象的一个属性,用于查看每一列的数据类型。它返回一个 Series,其中包含 DataFrame 的每一列及其相应的数据类型。这对于了解数据的初始类型非常有用。

  • astype:
    astype 是 Pandas 中的一个方法,用于将一列的数据类型转换为指定的类型。这对于数据清洗和预处理非常有用。它返回一个新的 Series 或 DataFrame,而不会改变原始对象。

3. 常用函数

3.1. 基本函数

  • head() 和 tail(): 展示数据的前几行和后几行。
  • info(): 提供有关 DataFrame 的详细信息,包括数据类型、非空值数等。
  • describe(): 统计描述性统计信息,如平均值、标准差、最小值、最大值等。
  • shape: 显示 DataFrame 的形状,即行数和列数。

以2.1章节的代码为例,继续代码,使用函数:
在这里插入图片描述

df.head(2)

在这里插入图片描述

df.tail(2)

在这里插入图片描述

df.info()

在这里插入图片描述

df.describe()

在这里插入图片描述

df.shape
	(3, 6)

3.2. 窗口函数

  • rolling(): 介绍窗口函数,用于执行滚动计算,如滚动平均值。

一般在使用了移动窗口函数rolling之后,我们需要配合使用相关的统计函数,比如sum、mean、max等。使用最多的是mean函数,生成移动平均值。

df.rolling(2).mean()

在这里插入图片描述

  • expanding(): 展示扩展窗口,用于计算扩展窗口内的累积统计。

扩展窗口函数,扩展是指由序列的第一个元素开始,逐个向后计算元素的聚合值。expanding()函数,类似cumsum()函数的累计求和,其优势在于还可以进行更多的聚类计算。

df.expanding().sum()

在这里插入图片描述

3.3. 基本统计

首先,我们以sum()、mean()、median()常用统计函数的介绍,说明如何计算总和、均值、中位数等。

import pandas as pd
import numpy as np# 创建一个包含各种类型的DataFrame
data = {'Integer': pd.Series([1, 2, 3, 5, 3, 7, 6], dtype='int32'),'Float': pd.Series([21.1, 25.2, 30.3, 22.1, 10.1, 30.2, 32.3], dtype='float64'),'Boolean': pd.Series([True, False, True, True, False, True , False], dtype='bool'),'String': pd.Series(['植物园', '湘江公园', '太阳岛','植物园', '湘江公园', '太阳岛','八区体育场'], dtype='object'),'Datetime': pd.to_datetime(['2022-01-01', '2022-02-01', '2022-03-01', '2022-03-11', '2022-05-01', '2022-05-02','2022-06-01']),
}df = pd.DataFrame(data)# 添加一个分类类型的列
df['Category'] = pd.Series(['节奏跑', '间隙跑', '慢跑','节奏跑', '间隙跑', '慢跑', '慢跑'], dtype='category')print("包含各种类型的DataFrame:\n", df)print("包含合计sum::\n",df[['Integer','Float']].sum())
print("包含均值mean::\n",df[['Integer','Float']].mean())
print("包含中位数median::\n",df[['Integer','Float']].median())
序号函数含义
1min()计算最小值
2max()计算最大值
3sum()求和
4mean()计算平均值
5count()计数(统计非缺失元素的个数)
6size()计数(统计所有元素的个数)
7median()计算中位数
8var()计算方差
9std()
10quantile()计算任意分位数
11cov()计算协方差
12corr()计算相关系数
13skew()计算偏度
14kurt()计算峰度
15mode()计算众数
16describe()描述性统计(一次性返回多个统计结果)
17groupby()分组
18aggregate()聚合运算(可以自定义统计函数)
19argmin()寻找最小值所在位置
20argmax()寻找最大值所在位置
21any()等价于逻辑“或”
22all()等价于逻辑“与”
23value_counts()频次统计
24cumsum()运算累计和
25cumprod()运算累计积
26pct­­_change()运算比率(后一个元素与前一个元素的比率)

例如:

df[['Integer','Float']].pct_change()

在这里插入图片描述
统计函数是数据分析的核心内容之一,将 在后续内容中展开。

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

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

相关文章

Android 源码编译

一,虚拟机安装 ​ 1.1 进入https://cn.ubuntu.com/download中文官网下载iso镜像 1.2 这里我们下载Ubuntu 18.04 LTS 1.3虚拟VM机安装ubuntu系统,注意编译源码需要至少16G运行内存和400G磁盘空间,尽量设大点 二 配置编译环境 2.1 下载andr…

C++-类和对象

目录 一.C语言和C的区别 二.类的引入 三.类的定义 1.类的定义 2.类的成员方法的两种定义方式: 3.类的成员变量的定义 四.类的访问限定符及封装 1.访问限定符 五.面向对象的三大特征 1.面向对象的三大特征分别是什么 2.封装 六.类的作用域 七.创建类对象 1.类…

CAN 一: CAN基础知识介绍

1、CAN介绍 1.1、什么是CAN? (1)CAN(Controller Area Network:控制器局域网),是ISO国际标准化的串行通信协议。为满足汽车产业的“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需求。 (2)CAN总线的发展历史&a…

【LeetCode】每日一题 2023_12_2 拼车(模拟/差分)

文章目录 刷题前唠嗑题目:拼车题目描述代码与解题思路学习大佬题解 刷题前唠嗑 LeetCode?启动!!! 题目:拼车 题目链接:1094. 拼车 题目描述 代码与解题思路 func carPooling(trips [][]int…

【Linux】第二十四站:模拟实现C语言文件标准库

文章目录 一、实现细节1.需要实现的函数2.fopen的实现3.fclose4.fwrite5.测试6.缓冲区的实现7.FILE中缓冲区的意义 二、完整代码 一、实现细节 1.需要实现的函数 #include "mystdio.h"int main() {_FILE* fp _fopen("test.txt","w");if(fp N…

超大规模集成电路设计----基本概念(二)

本文仅供学习,不作任何商业用途,严禁转载。绝大部分资料来自----数字集成电路——电路、系统与设计(第二版)及中国科学院段成华教授PPT 超大规模集成电路设计----基本概念(二) 简短的历史回顾(A Brief Historical Perspective)第…

观察者设计模式

package com.jmj.pattern.observer;/*抽象观察者类*/ public interface Observer {void update(String message);}package com.jmj.pattern.observer;/*** 抽象主题角色*/ public interface Subject {//添加观察者对象void attach(Observer observer);//删除订阅者void detach(…

LeetCode(51)简化路径【栈】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 简化路径 1.题目 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 / 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中&#xff…

SmartSoftHelp8,FrameCode极速二次开发框架源码

1.winform outlook style UI C/S 极速开发框架 netframework 2.0 2.winform toolbar style UI C/S 极速开发框架 netframework 2.0 3.WPF toolbar style UI C/S 极速开发框架 netframework 4.0 4.Xadmin-UI jquery B/S 极速开发框架 5.Vue element UI B/S…

Presto基础学习--学习笔记

1,Presto背景 2011年,FaceBook的数据仓库存储在少量大型hadoop/hdfs集群,在这之前,FaceBook的科学家和分析师一直靠hive进行数据分析,但hive使用MR作为底层计算框架,是专为批处理设计的,但是随…

在vue3项目嵌套 导入老项目 jQuery项目,减少重复开发

背景: 公司管理平台项目一直是前辈用jQuery做的,为扩展根据自身的技术栈,将jQuery的老项目嵌套入vue3的框架,新功能用vue开发,旧的功能不动直接在vue3用iframe容器来展示 嵌套步骤 2种方式嵌套,一个是已…

微机原理——并行接口8255学习1

目录 并行接口特点 可编程并行接口芯片8255 8255端口地址 8255的三种工作方式 8255的两种命令(方式命令和C端口命令) 由用户扩展的并行接口8255的应用 声光报警器接口设计 步进电机控制接口设计 PA端口实现跑马灯 PB端口实现按键输入 并行接口特…

同旺科技 USB TO SPI / I2C --- 调试W5500_Ping测试

所需设备: 内附链接 1、USB转SPI_I2C适配器(专业版); 首先,连接W5500模块与同旺科技USB TO SPI / I2C适配器,如下图: 设置寄存器: SHAR(源MAC地址寄存器),该寄存器用来设置源MAC…

【预计IEEE出版|EI征稿通知】第六届下一代数据驱动网络国际学术会议 (NGDN 2024)

第六届下一代数据驱动网络国际学术会议 (NGDN 2024) The Sixth International Conference on Next Generation Data-driven Networks 2024年4月26-28日 | 中国沈阳 基于前几届在英国埃克塞特 (ISPA 2020) 、中国沈阳 (TrustCom 2021) 和中国武汉 (IEEETrustCom-2022) 成功举…

如何查看Microsoft Office 使用期限

1.进入到 Office 软件的安装目录(******\Microsoft Office\Office) ## 以管理员身份打开 Windows PowerShell输入以下命令,回车 cscript ospp.vbs /dstatusREMAINING GRACE 一行表示激活剩余天数(括号内是换算成的剩余分钟数…

Android实验:绑定service实验

目录 实验目的实验内容实验要求项目结构代码实现代码解释结果展示 实验目的 充分理解Service的作用,与Activity之间的区别,掌握Service的生命周期以及对应函数,了解Service的主线程性质;掌握主线程的界面刷新的设计原则&#xff…

文心一言 VS 讯飞星火 VS chatgpt (148)-- 算法导论12.2 3题

三、用go语言,写出过程 TREE-PREDECESSOR 的伪代码。 文心一言: 以下是使用Go语言编写的TREE-PREDECESSOR函数的伪代码: func TREE-PREDECESSOR(node) { if node.parent ! nil { return node.parent } // 如果节点是根节点&#xff0c…

Centos图形化界面封装OpenStack Ubuntu镜像

目录 背景 环境 搭建kvm环境 安装ubuntu虚机 虚机设置 系统安装 登录虚机 安装cloud-init 安装cloud-utils-growpart 关闭实例 删除细节信息 删除网卡细节 使虚机脱离libvirt纳管 结束与验证 压缩与转移 验证是否能够正常运行 背景 一般的镜像文件在上传OpenSt…

第 374 场 LeetCode 周赛题解

A 找出峰值 枚举 class Solution { public:vector<int> findPeaks(vector<int> &mountain) {int n mountain.size();vector<int> res;for (int i 1; i < n - 1; i)if (mountain[i] > mountain[i - 1] && mountain[i] > mountain[i 1…

登录界面(flex布局练习)

练习&#xff1a;登录界面在我们网页制作的过程中经常遇见&#xff0c;所以请你编写一个界面联系一下&#xff0c;这个可以增加一些动画或者是其他的效果&#xff0c;当然越帅越好。请使用flex或者其他布局练习 例如&#xff1a; 代码 <!DOCTYPE html> <html lang…