【Python】Pandas(学习笔记)

news2024/12/29 10:19:18

一、Pandas概述

1、Pandas介绍

2008年WesMcKinney开发出的库,专门用于数据挖掘的开源python库

以Numpy为基础,借力Numpy模块在计算方面性能高的优势

基于matplotib,能够简便的画图

独特的数据结构

import pandas as pd

2、Pandas优势

  • 便捷的数据处理能力
  • 读取文件方便
  • 封装了Matplotlib、Numpy的画图和计算

二、数据类型

1、DataFrame

1)结构

既有行索引、又有列索引的二维数组

  • 行索引,表明不同行,横向索引,叫index
  • 列索引,表明不同列,纵向索引,叫columns

2)初识

import numpy as np
import pandas as pd
stock = np.random.normal(0, 1, (10,5))
hang = ["股票{}".format(i) for i in range(10)] 
lie = pd.date_range(start="20180101", periods=5, freq="B")

df = pd.DataFrame(stock, index=hang, columns=lie)
df.head()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3)属性

属性属性名
shape形状
index行索引列表
columns列索引列表
values直接获取其中 array 的值
T行列转置

4)方法

# 开头几行(默认5)
df.head(n)
# 最后几行
df.tail(n)

5)索引的设置

1. 修改行列索引值

不能单独修改索引

stock_ = ["股票_{}".format(i) for i in range(10)]
data.index = stock_

2. 重设索引

把原始索引删除(True)或当成普通列(False),重设索引

data.reset_index()
data.reset_index(drop=True)		# drop=True把之前的索引删除

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3. 设置新索引
df1 = pd.DataFrame({'month': [1, 4, 7, 10],
                    'year': [2012, 2014, 2013, 2014],
                    'sale':[55, 40, 84, 31]})
# 以月份设置新的索引
df1.set_index("month", drop=True)
# 设置多个索引,以年和月份
df1.set_index(["year", "month"])

2、MultiIndex

多级或分层索引对象

  • names:levels 的名称
  • levels:每个 level 的元组值
df2.index
df2.index.names
df2.index.levels

3、Panel

存储三维数组的容器

Panel 是 DataFrame 的容器 => 每个维度都是一个DataFrame

注:Pandas 从版本 0.20.0 开始弃用,推荐的用于表示 3D 数据的方法是 DataFrame 上的 MultiIndex 方法

4、Series

带索引的一维数组

DataFrame 是 Series 的容器

sr = data.iloc[1, :]

# 索引
sr.index
# 值
sr.values

三、数据操作

1、索引操作

# 直接索引 必须先列后行
data["open"]["2018-02-26"]

# 按名字索引
data.loc["2018-02-26"]["open"]
data.loc["2018-02-26", "open"]

# 数字索引
data.iloc[1, 0]

# 组合索引
data.loc[data.index[0:4], ['open', 'close', 'high', 'low']]

2、赋值操作

data.open = 100
data.iloc[1, 0] = 120

3、排序操作

1)内容排序

# 单列内容排序
# ascending=False:降序、True:升序
data.sort_values(by="open", ascending=False)

# 多个列内容排序
data.sort_values(by=["open", "high"], ascending=False).head()

2)索引排序

data.sort_index()

四、DataFrame运算

1、算术运算

data["open"] + 3
data["open"].add(3)

data.sub(100)
data - 100

data["close"] - data["open"]
data["close"].sub(data["open"])

2、逻辑运算

data[data["p_change"] > 2]
data[(data["p_change"] > 2) & (data["low"] > 15)]

# query(expr) expr:查询字符串
data.query("p_change > 2 & low > 15")
# isin(values) 判断是否为 values
data[data["turnover"].isin([4.19, 2.39])]

3、统计运算

describe()综合分析:能够直接得出很多统计结果,count,mean,std,min,max 等

data.describe()	# 综合分析
data.max()		# 最大值
data.idxmax() 	# 最大值位置

4、累计统计函数

  • cumsum 计算前 1/2/3/…/n 个数的和
  • cummax 计算前 1/2/3/…/n 个数的最大值
  • cummin 计算前 1/2/3/…/n 个数的最小值
  • cumprod 计算前 1/2/3/…/n 个数的积
data["p_change"].sort_index().cumsum()
data["p_change"].sort_index().cumsum().plot()

5、自定义运算

apply(func, axis=0)
  • func:自定义函数
  • axis=0:默认按列运算,axis=1:按行运算
data.apply(lambda x: x.max() - x.min())

五、Pandas画图

1、DataFrame

DataFrame.plot(x=None, y=None, kind='line')
  • x: 标签或位置,默认为“无”
  • y: 标签、位置或标签列表、位置。默认无标签
    • 允许打印一列与另一列
  • kind: str
    • ‘line’: 折线图(default)
    • ''bar": 条形图
    • “barh”: 水平条形图
    • “hist”: 直方图
    • “pie”: 饼图
    • “scatter”: 散点图
data.plot(x="volume", y="turnover", kind="scatter")

2、Series

sr.plot()

六、文件读取与存储

1、读取CSV

# 读取数据表,并指定读哪些列
data = pd.read_csv("./stock_day/stock_day.csv", usecols=["high", "low", "open", "close"])

# 如果数据表的列没有列名,用names传入列名
data = pd.read_csv("stock_day2.csv", names=["open", "high", "close"]) 

2、保存CSV

# 保存open列的数据
data[:10].to_csv("test.csv", columns=["open"]) 

# index=False不要行索引
# header=False不要列索引
# mode="a"追加模式|mode="w"重写
data[:10].to_csv("test.csv", columns=["open"], index=False, mode="a", header=False) 

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

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

相关文章

springcloud失物招领网站源码

开发技术: jdk1.8,mysql5.7,idea,nodejs,vscode springcloud springboot mybatis vue elementui 功能介绍: 用户端: 登录注册 首页显示搜索失物,轮播图,最新发布的…

传统广电媒体为何选择上云?有何优势?

随着现在互联网和科技的发展,现在更多的行业都搭上了科技这辆快车快速的完成了转型,那么在传统的广电媒资行业他们目前有哪些痛点呢?传统广电媒体转型发展现状是什么?企业如何数字化转型?企业上云的优势有哪些&#xf…

OpenCV快速入门:基本操作

文章目录 1. 像素操作1.1 像素统计1.2 两个图像之间的操作1.2.1 图像加法操作1.2.3 图像加权混合 1.3 二值化1.4 LUT(查找表)1.4.1 查找表原理1.4.2 代码演示 2 图像变换2.1 旋转操作2.1.1 旋转的基本原理2.1.2 代码实现 2.2 缩放操作2.3 平移操作2.3.1 …

【python】均值、中值和高斯滤波详解和示例

本文对均值、中值和高斯滤波进行详解,以帮助大家理解和使用。 这里写目录标题 均值滤波中值滤波高斯滤波核大小为(9,9)核大小为(51,51) 小结 下面是示例中使用的原图。 均值滤波 均值滤波是一种简单的平滑滤波器&…

简单的用Python实现一下,采集某牙视频,多个视频翻页下载

前言 表弟自从学会了Python,每天一回家就搁那爬视频,不知道的以为是在学习,结果我昨天好奇看了一眼,好家伙,在那爬某牙舞蹈区,太过分了! 为了防止表弟做坏事,我连忙找了个凳子坐下&…

k8s-部署Redis-cluster(TLS)

helm pull bitnami/redis-cluster v8.3.8拉取源码生成证书 git clone https://github.com/redis/redis.git #文档 https://redis.io/docs/management/security/encryption/#getting-started生成你的TLS证书用官网的工具生成 1 Run ./utils/gen-test-certs.sh 生成根CA和服务…

【libGDX】ApplicationAdapter生命周期

1 前言 libGDX 中,用户自定义的渲染窗口需要继承 ApplicationAdapter 类,ApplicationAdapter 实现了 ApplicationListener 接口,但实现的方法都是空方法,方法释义如下。 public interface ApplicationListener {// 应用首次创建时…

【Rust】快速教程——冻结表达式

前言 以前谁是魔我杀谁,现在我杀谁谁就是魔。——《拔魔》 \;\\\;\\\; 目录 前言Rust基本知识结构体元组结构体局部作用域冻结字面量Vec元素的类型由第一个push进的类型确定type别名from和intoTryFrom和TryInto 表达式 Rust基本知识 结构体 #[derive(Debug)] str…

C语言之深入指针及qsort函数(五)(详解介绍)

C语言之深入指针 在这篇博客看不懂的可以看看这篇C语言之深入指针(四)在上篇博客中介绍了: 函数指针变量函数指针数组简易计算器的实现\ 文章目录 C语言之深入指针1 回调函数2 qsort函数的使用2.1 使用冒泡排序排序整型数组2.2 使用qsort函数…

国内crm解决方案的主要提供商有哪些?对比7家

目前国内CRM服务商1410家,今年1-7月CRM服务商新注册19家。如何从众多服务商中挑选出合适的一家,无疑是一项耗时耗力的大工程。为此,本文将为根据国内外知名机构、媒体、网站发布、百度指数、行业知名度等维度考量,选择出7大CRM系统…

【DevOps】Git 图文详解(一):简介及基础概念

Git 图文详解(一):简介及基础概念 1.简介:认识 Git2.基础概念:Git 是干什么的?2.1 概念汇总2.2 工作区 / 暂存区 / 仓库2.3 Git 基本流程2.4 Git 状态 1.简介:认识 Git Git 是当前最先进、最主…

系列一、JVM概述

一、概述 1.1、Java发展中的重大事件 1.2、虚拟机 vs Java虚拟机 1.2.1、虚拟机 1.2.2、Java虚拟机 1.2.3、Java虚拟机的作用 Java虚拟机是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令指令。每一条Java指令&#…

力扣-路径总和问题

路径总和 --简单 112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 f…

MATLAB 状态空间设计 —— LQG/LQR 和极点配置算法

系列文章目录 文章目录 系列文章目录前言一、相关函数 —— LQG/LQR 和极点配置算法1.1 LQR —— lqr 函数1.1.1 函数用法1.1.2 举例1.1.2.1 倒摆模型的 LQR 控制 1.2 LQG —— lqg() 函数1.2.1 函数用法1.2.2 举例 1.3 极点配置 —— place() 函数1.3.1 函数用法1.3.2 示例1.3…

【算法】复习搜索与图论

🍎 博客主页:🌙披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 蓝桥杯 🌙请不要相信胜利就像山坡上的蒲公英一样唾手…

Spring Task使用介绍

文章目录 Spring Task介绍cron表达式入门案例Spring Task使用步骤全注解的方式代码开发测试结果 代码仓库 Spring Task 介绍 Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。 定位定时任务框架 作用定时自动执行某段Java…

36、Flink 的 Formats 之Parquet 和 Orc Format

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

NewStarCTF2023 Reverse方向Week3 ez_chal WP

分析 题目&#xff1a;ez_chal 一个XTEA加密&#xff0c; V6是key&#xff0c;v5是输入&#xff0c;然后v7就是密文。 看了v6&#xff0c;要用动调。 ELF文件用ida的远程调试。 然后在kali上输入长度为32的flag 全部转换成dd 再提取密文。 EXP #include <stdio.h>…

详解如何使用Jenkins一键打包部署SpringBoot项目

目录 1、Jenkins简介 2、Jenkins的安装及配置 2.1、Docker环境下的安装​编辑 2.2、Jenkins的配置 3、打包部署SpringBoot应用 3.1、在Jenkins中创建执行任务 3.2、测试结果 1、Jenkins简介 任何简单操作的背后&#xff0c;都有一套相当复杂的机制。本文将以SpringBoot应…

Docker安装MinIO遇到的(汇总——持续更新中)

文章目录 Docker安装MinIO遇到的坑前言问题1&#xff1a;执行docker run报错Error response from daemon问题2&#xff1a;启动MinIO容器浏览器无法访问问题3&#xff1a;上传文件报错InvalidResponseException问题4&#xff1a;上传文件报错Connection refused最终的启动指令问…