【数据挖掘】2022数据挖掘之Pandas库相关使用

news2024/11/18 5:37:22

数据挖掘之Pandas库相关使用

  • 一、概念
    • 1、介绍
    • 2、Pandas的优点
    • 3、软件推荐(Jupyter Notebook)
    • 4、软件下载网址以及参考文档
  • 二、基础知识
    • 1、DataFrame属性和方法
      • 1.1 结构
        • (1)行索引
        • (2)列索引
      • 1.2 常用属性
        • (1)shape
        • (2)index
        • (3)columns
        • (4)values
        • (5)T
      • 1.3 常用方法
        • (1)head()
        • (2)tail()
    • 2、修改索引
      • 2.1 修改行列索引值
      • 2.2 重设索引
      • 2.3 以某列值设置为新的索引
        • (1)语法
        • (2)以月份设置新的索引
        • (3)设置多个索引,以年和月份
    • 3、MultiIndex与Panel
      • 3.1 MultiIndex
      • 3.2 Panel
        • (1)概念
        • (2)语法
    • 4、Series
      • 4.1 概念
      • 4.2 创建Series
        • (1)指定内容,默认索引
        • (2)指定索引
        • (3)通过字典数据创建
      • 4.3 属性
        • (1)index
        • (2)values
      • 4.4 总结
  • 三、基本数据操作
    • 1、索引操作
      • 1.1 基础数据整理
      • 1.2 直接使用行列索引(先列后行)
      • 1.3 按名字索引
      • 1.4 按数字索引
    • 2、赋值操作
    • 3、排序
      • 3.1 内容排序
      • 3.2 索引排序
  • 四、DataFrame运算
    • 1、算术运算
      • 1.1 加法
      • 1.2 减法
    • 2、逻辑运算
      • 2.1 逻辑运算符号 >
      • 2.2 逻辑运算符 &
      • 2.3 逻辑运算函数
        • (1)query(expr) expr: 查询字符串
        • (2)isin(values)
    • 3、统计运算
      • 3.1 describe()
      • 3.2 max()
      • 3.3 获取最大值的位置
      • 3.4 累计统计函数
    • 4、自定义运算
  • 五、文件的读取与存储
    • 1、CSV文件
      • 1.1 读取csv文件(read_csv)
      • 1.2 写入csv文件(to_csv)
    • 2、HDF5文件(二进制文件)
      • 2.1 读取HDF5文件(read_hdf)
      • 2.2 存储成HDF5文件
      • 2.3 拓展
    • 3、JSON
      • 3.1 读取JSON文件(read_json)
      • 3.2 存储JSON文件(to_json)

一、概念

1、介绍

pandas是专门用于数据挖掘的开源python库,以Numpy为基础,借力Numpy模块在计算方面性能高的优势,同时基于matplotlib,能够简便的画图,具有独特的数据结构。

2、Pandas的优点

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

3、软件推荐(Jupyter Notebook)

使用Jupyter Notebook,是IPython的加强网页版,一个开源Web应用程序,是一款程序员和科学工作者的编程/文档/笔记/展示软件。
.ipynb文件格式是用于计算型叙述的JSON文档格式的正式规范

4、软件下载网址以及参考文档

跳转链接:Jupyter官网
对于新手而言一般用Anacomda上的Jupyter,如果不知道如何安装Anaconda软件的话,可以参考我写的Anaconda+tensorflow最有实效总结版(重装6次的血泪总结)

二、基础知识

1、DataFrame属性和方法

1.1 结构

DataFrame可以看成既有行索引,又有列索引的二维数组

(1)行索引

表明不同行,横向索引,叫index

(2)列索引

表明不同列,纵向索引,叫columns

1.2 常用属性

(1)shape

data.shape

结果
在这里插入图片描述

(2)index

DataFrame的行索引列表

data.index

结果
在这里插入图片描述

(3)columns

DataFrame的列索引列表

data.columns

结果
在这里插入图片描述

(4)values

直接获取其中array的值

data.values

结果
在这里插入图片描述

(5)T

转置

data.T

结果

在这里插入图片描述

1.3 常用方法

(1)head()

展示前几行的数据

data.head(3)

结果
在这里插入图片描述

(2)tail()

展示后几行的数据

data.tail(3)

结果
在这里插入图片描述

2、修改索引

2.1 修改行列索引值

不能单独修改某一个索引,只能整体修改索引

stock_ = ["序号_{}".format(i) for i in range(10)]

data.index = stock_

结果
在这里插入图片描述

2.2 重设索引

data.reset_index()

结果
在这里插入图片描述

如果

data.reset_index(drop = True)

结果
在这里插入图片描述

2.3 以某列值设置为新的索引

(1)语法

set_index(key, drop=True)
keys:列索引名称或者列索引名称的列表
drop: boolean, default True当做新的索引,删除原来的列

(2)以月份设置新的索引

# 以月份设置新的索引
new_df = df.set_index("month",drop=True)

结果
在这里插入图片描述

(3)设置多个索引,以年和月份

# 设置多个索引,以年和月份
new_df2 = df.set_index(["year","month"])

结果
在这里插入图片描述

3、MultiIndex与Panel

3.1 MultiIndex

多级或分层索引对象

index属性
   names: levels的名称
   levels: 每个level的元组值

例一

new_df2.index.names

结果
在这里插入图片描述

例二

new_df2.index.levels

结果
在这里插入图片描述

3.2 Panel

(1)概念

存储三维结构的容器
Pandas从版本0.20.0开始弃用,在新版本中会报错:推荐使用表示3D数据的方法是DataFrame上的MultiIndex方法

(2)语法

pandas.Panel(data=None, items=None, major_axis=None, minor_axis=None, copy=False, dtype=None)

样例代码

p = pd.Panel(np.arange(24).reshape(4,3,2),
            items=list('ABCD'),
            major_axis=pd.date_range('20130101', periods=3),
            minor_axis=['first','second'])

如果一定要使用,则下载指定版本,可能有用:python3下具有Panel()的pandas版本pandas 0.24.2。(我看网上有人下载这个版本有Panel(),不知道是不是真的)

4、Series

4.1 概念

带索引的一维数组(Series结构只有行索引)

4.2 创建Series

通过已有数据创建

(1)指定内容,默认索引

pd.Series(np.arange(10))

结果
在这里插入图片描述

(2)指定索引

# 指定索引
pd.Series([6.7,5.6,3,10,2], index=[1,2,3,4,5])

结果
在这里插入图片描述

(3)通过字典数据创建

# 通过字典数据创建
pd.Series({'red':100,'blue':200,'green':500, 'yellow':1000})

结果
在这里插入图片描述

4.3 属性

(1)index

sr.index

结果
在这里插入图片描述

(2)values

sr.values

结果
在这里插入图片描述

4.4 总结

DataFrame是Series的容器
Panel是DataFrame的容器

三、基本数据操作

1、索引操作

1.1 基础数据整理

# 读取文件
data = pd.read_csv("./day/day.csv")

# 删除一些列
data = data.drop(["ma5", "ma10", "ma20"], axis=1)

1.2 直接使用行列索引(先列后行)

data["列名"]["行名"]

例如

data["column"]["row"]

1.3 按名字索引

data.loc["行名"]["列名"]

data.loc["行名","列名"]

例如

data.loc["row"]["column"]

data.loc["row","column"]

1.4 按数字索引

data.iloc[1,0]

2、赋值操作

# 对DataFrame当中的close列进行重新赋值为1
# 直接修改原来的值
data['close'] = 1
# 或者
data.close = 1

3、排序

3.1 内容排序

使用df.sort_values(key=, ascending=) 对内容进行排序
单个键或者多个键进行排序,默认升序
ascending = False: 降序
ascending = True: 升序

# 按某一列进行降序
data = data.sort_values(by='列名', ascending = False)

# 按某几列进行降序
data = data.sort_values(by=['列名1','列名2'], ascending = False)

3.2 索引排序

使用df.sort_index对索引进行排序(从小到大)

data.sort_index()

四、DataFrame运算

1、算术运算

1.1 加法

# 该列所有数字加3
data['列名'].add(3).head()

1.2 减法

# 全部都减100
data.sub(100).head()

2、逻辑运算

2.1 逻辑运算符号 >

# 筛选大于2的数据
data[data['列名'] > 2]

2.2 逻辑运算符 &

# 完成一个多逻辑判断,筛选列1大于2且列2大于15
data[(data['列名1'] > 2)&(data['列名2'] > 15)]

2.3 逻辑运算函数

(1)query(expr) expr: 查询字符串

根据条件进行查询

# 完成一个多逻辑判断,筛选列1大于2且列2大于15
data.query("列名1 > 2 & 列名2 > 15")

(2)isin(values)

判断是否存在

data["列名"].isin({4.1,2.3})

3、统计运算

3.1 describe()

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

# 统计结果
data.describe()

3.2 max()

获取最大值

data.max()

3.3 获取最大值的位置

data.idxmax()

3.4 累计统计函数

data["列名1"].cumsum()

4、自定义运算

apply(func, axis=0)
func: 自定义函数
axis=0: 默认是列,axis=1 为行进行运算

# 定义一个队列,最大值-最小值的函数
data[['open','close']].apply(lambda x: x.max() - x.min(), axis=0)

五、文件的读取与存储

1、CSV文件

1.1 读取csv文件(read_csv)

pandas.read_csv(filepath_or_buffer, sep=‘,’, delimiter = None)
filepath_or_buffer:文件路径
usecols:指定读取的列名,列表形式
names:给数据添加列名

# csv文件里有列名
data = pd.read_csv("./day/day.csv", usecols=['open', 'high'])

# csv文件里没有列名
data = pd.read_csv("./day/day.csv", names=["open", "high"])

1.2 写入csv文件(to_csv)

DataFrame.to_csv(path_or_buf=None, Sep=‘,’,Columns=None,header=True,index=True, index_label=None, mode=‘w’, encoding=None)
path_or_buf: 文件路径
columns: 增加列名
mode: ‘w’:重写,‘a’ 追加
index: 是否写进行索引

data.to_csv("test.csv",columns=["open"], index=False)

2、HDF5文件(二进制文件)

HDF5文件的读取和存储需要指定一个键,值为要存储的DataFrame

2.1 读取HDF5文件(read_hdf)

pandas.read_hdf(path_or_buf, key=None, **kwargs)
从h5文件当中读取数据
path_or_buffer: 文件路径
key: 读取的键
mode: 打开文件的模式
return: Theselected object

data = pd.read_hdf("./day/day_data.h5")

2.2 存储成HDF5文件

存储时需要指定键,如果反复存储时指定了多个键,则读取时,需要指明是哪个键

data.to_hdf("test.h5", key="close")

指定了多个键,读取时,指明键

data.read_hdf("test.h5", key="close")

2.3 拓展

(1)HDF5在存储是支持压缩,使用方式是blosc,这个是速度最快的,也是pandas默认支持的。
(2)使用压缩可以提高磁盘利用率,节省空间。
(3)HDF5还是跨平台的,可以轻松迁移到hadoop上面。

3、JSON

Json是常用的数据交换格式。

3.1 读取JSON文件(read_json)

pandas.read_json(path_or_buf=None, orient = None, typ = ‘frame’, lines=False)
orient: 告诉API读取的数据采用什么格式(一般都用records)
lines: 按照每行读取json对象
typ:指定转换成的对象类型series或者dataframe

sa = pd.read_json("data.json", orient="records", lines=True)

3.2 存储JSON文件(to_json)

sa.to_json("data.json", orient="records", lines=True)

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

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

相关文章

配置非法AP设备检测和反制

1、业务需求 某企业分支机构为了保证工作人员可以随时随地访问公司网络资源,部署WLAN基本业务实现移动办公。且在覆盖区域内移动发生漫游时,不影响用户的业务使用。 分支机构位于开放式场所,容易受到网络入侵,例如攻击者在WLAN网络…

摒弃“短板”——数据中心基础设施运维管理建议书

数据中心是数字基础设施的重要组成部分,同时也是一整套复杂的设施。它不仅仅包括计算机系统和其它与之配套的设备(例如通信和存储系统),还包含冗余的数据通信连接、环境控制系统、监控系统以及各种安全系统。运维管理又是数据中心…

基于智能优化算法实现自动泊车的路径动态规划(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 作为一种方便、快捷的交通工具,汽车已成为人们生活和工作的重要组成部分。随着汽车数量的逐年增加,有限…

在ubuntu上用QT写一个简单的C++小游戏(附源码)

最近老师让用Qt写一个可视化界面,然后就给了一个小视频,好奇的不得了,就照着做了一下 视频链接如下:C案例教学–一个类游戏小程序的设计与实现全过程–用到QT-简单的STL容器 创建项目 1、打开QT 如果不知道怎么下载的话&#xff…

【牛客网刷题】VL8-VL10 generate for语句、比较数大小、function的使用

👉 写在前面 👉 本系列博客记录牛客网刷题记录 👉 日拱一卒,功不唐捐! 目录 VL8 使用generate for语句简化代码 题目描述 输入描述 输出描述 RTL 设计 testbench 设计 仿真测试 VL9 使用子模块实现三输入数的大…

【C++ 程序设计入门基础】- Chapter One

目录 一、什么是 C? 1、概念 2、标准库 二、第一个 C 程序 1、下载 C 开发工具 2、开始下载好之后,我们先设置一下编码,解决中文注释不显示的问题。 3、下面我们就可以新建一个源代码 4、 编写完成后,我们就可以运行查看结果…

MyBatis:缓存机制详解

本篇内容包括:MyBatis 缓存机制概述、一级缓存与二级缓存的介绍、配置和具体流程。 一、MyBatis 缓存机制概述 在我们常见的 OLTP(on-line transaction processing,联机事务处理)类型的 Web 应用中,性能的瓶颈往往来源…

【Transformer 相关理论深入理解】注意力机制、自注意力机制、多头注意力机制、位置编码

目录前言一、注意力机制:Attention二、自注意力机制:Self-Attention三、多头注意力机制:Multi-Head Self-Attention四、位置编码:Positional EncodingReference前言 最近在学DETR,看源码的时候,发现自己对…

【码上掘金编程挑战赛】- 前端可冲【简历加分项】

【码上掘金编程挑战赛】1.比赛报名2. 比赛介绍赛题一:码上游戏赛题二:码上创意赛题三:码上文言文赛题四:码上10243.报名4.提交作品1.比赛报名 比赛报名链接 https://juejin.cn/challenge/1?utm_source3169 2. 比赛介绍 赛题一…

Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】

Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码讲解 【上篇】 Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码讲解 【下篇】 以上两篇采用的是注解开发形式xml配置…

自己动手写操作系统系列第3篇,实现时钟和键盘中断

对应labOS版本1.3 程序源码可以私聊我 picirq.h int 0x20~0x2f接收中断信号IRQ0~15,因为int 0x00~0x1f不能用于IRQ。 picirq.c pic0_mask0xfb即1111 1011;PIC1以外全部禁止。pic1_mask0xff即1111 1111;禁止所有中断 pic_enable函数就是将…

【Linux下安装jdk】Linux下安装jdk

Linux下安装jdk 1、-RPM安装 1.1、检查系统是否安装过jdk java -version 检查是否有安装包 rpm -qa | grep java 1.2、安装jdk 查看服务器版本: uname -a 下载jdk对应rpm包: https://www.oracle.com/java/technologies/downloads/#java8 上传安装包至任意目录下&…

用户登录权限校验 JWT【详解】

JWT (json web token)是当前最流行的用户登录权限校验(用户认证鉴权)方案。 官网 https://jwt.io/ JWT 的工作流程 客户端填写账号密码访问登录接口 login,将账号密码传给服务端服务端验证账号密码是否正确&#xff0c…

职言 | 校招面试有感,一个面试官的几点建议

职言: 最近一直在校招,我(作者)和同事说等这段时间结束,我不想再参与面试了,快面吐了。从校招开始,我团队前前后后陆续进了500多封学生简历,我经常一整天排满了面试,聊到…

【电子通识】芯片资料(数据手册/规格书)查询常用网站和方法

目录 1.AlldataSheet 网站(建议使用) 2.ICpdf 网站 3.CIC中国IC网 网站 4.datasheet(不建议使用) 5.半导小芯 (建议使用) 6.立创商城 (建议使用) 在做硬件的芯片选型、产品维修…

生物信息学笔记02 -- 研究的一般方法

生物信息学概述 以基因组DNA序列信息为源头,识别基因组序列中代表蛋白质和RNA基因的编码区,阐明非编码区的信息特征,破译隐藏在DNA序列中的遗传语言规律 生物信息学研究的内容与方法 研究主要内容 ⚫ 生物学数据的收集、存储、管理与提供 …

C++:继承

文章目录前言一、继承的概念及定义1.继承的概念2.继承的定义二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员总结前言 本文介绍C中的继承。 一、继承的概念及定义 1.继承的概念 继承机制是面向对象程序设计使代码可…

厨电智能化趋势下,究竟什么才是真正的“用户思维”?

文|智能相对论 作者|佘凯文 近期2022年前三季度的各项经济数据在陆续发布,大环境依然承压,各个行业都在负重前行。 厨电行业在房地产下滑、疫情反复等因素影响下,前三季度同样一直承受着不小的压力,AVC数据显示,202…

【面试官说实现一个顺序表,但听到要求后我沉默了】

在很多人心里,顺序表是数据结构最基础最简单的东西了,如果面试让我们手撕一道顺序表,相信大家心里早就乐开了花,但是面试官真的会出这么简单的题吗? 答案是:当然会,哈哈。 我们来看看面试官的要…

【精选】ARMv8/ARMv9架构入门到精通-[前言]

快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】: 【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 想不想一夜暴富&#xf…