python-pandas用法大全

news2025/7/21 4:26:26

目录

  • 1 修改 DataFrame 某一列的数据类型
  • 2 读取和保存
  • 3 特定值的替换
  • 4 两个 DataFrame 的连接
    • 4.1 join
    • 4.2 某列作为拼接的依据
  • 5 删除某一列
    • 5.1 删除第n列
    • 5.2 删除特定名称列
  • 6 行、列重排
    • 6.1列重排
    • 6.2 行重排
    • 6.3 根据某一列的值排序
    • 6.4 随机打乱所有行
  • 7 修改某列的名称
    • 7.1 全局修改
    • 7.2 局部修改

1 修改 DataFrame 某一列的数据类型

问题描述:想要把 DataFrame 最后一列 label 的数据格式从 float改成int

原来:
在这里插入图片描述
代码:

bank2["label"] = bank2["label"].astype(int)

out:
在这里插入图片描述

2 读取和保存

读取时要注意的参数有 sep 等等。

# 读取
file_path = "./data/bank/"
bank = pd.read_csv(file_path + 'bank-full.csv',sep=';')
# 保存
bank.to_csv("bank.csv", index=False)

3 特定值的替换

data2 = data2.replace(' >50K.', ' >50K')

4 两个 DataFrame 的连接

在表头顺序一样的情况下,可以这样无脑连接两个 DataFrame

data1 = pd.read_csv(file_path + 'adult.data', header=None)
data2 = pd.read_csv(file_path + 'adult.test',header=None)
adult = pd.concat([data1,data2])

有关 np.concat 的可以看:https://www.jb51.net/article/164905.htm
本文主要讲 np.merge()

但是如果两个 DataFrame 的表头不一样(顺序不一样或是部分feature不一样),则需要用到 np.merge(),并设置参数 joinjoin_axes 进行这样的连接。

np.merge(left, right, how='inner', on=None, left_on=None, right_on=None,  
      left_index=False, right_index=False, sort=True,  
      suffixes=('_x', '_y'), copy=True, indicator=False)

4.1 join

如果两个表头顺序不一样,修改参数 join='inner' ,即可,他会自动识别。

y_in
Out[9]: 
      label  1 probability  ...  9 probability  5 probability
0         0        0.00000  ...        0.00000        0.00000
1         7        0.00000  ...        0.00002        0.00000
2         8        0.00000  ...        0.00615        0.00225
3         1        0.99926  ...        0.00000        0.00001
4         0        0.00000  ...        0.00000        0.00004
    ...            ...  ...            ...            ...
9995      9        0.00000  ...        0.97068        0.00000
9996      9        0.00007  ...        0.98485        0.00001
9997      5        0.00000  ...        0.00000        1.00000
9998      7        0.00000  ...        0.00011        0.00000
9999      0        0.00000  ...        0.00000        0.00000

[10000 rows x 11 columns]

y_out
Out[10]: 
      label  1 probability  ...  8 probability  5 probability
0         1        0.90634  ...        0.05864        0.00175
1         2        0.00001  ...        0.00000        0.00001
2         6        0.00000  ...        0.00001        0.00002
3         0        0.00000  ...        0.00006        0.00011
4         6        0.00001  ...        0.00004        0.00004
    ...            ...  ...            ...            ...
9995      8        0.00000  ...        0.99915        0.00002
9996      0        0.00000  ...        0.00000        0.00000
9997      4        0.00040  ...        0.04294        0.00120
9998      2        0.00028  ...        0.00003        0.00000
9999      1        0.99788  ...        0.00115        0.00002

[10000 rows x 11 columns]

pd.concat([y_in, y_out], axis=0, join='inner')
Out[11]: 
      label  1 probability  ...  9 probability  5 probability
0         0        0.00000  ...        0.00000        0.00000
1         7        0.00000  ...        0.00002        0.00000
2         8        0.00000  ...        0.00615        0.00225
3         1        0.99926  ...        0.00000        0.00001
4         0        0.00000  ...        0.00000        0.00004
    ...            ...  ...            ...            ...
9995      8        0.00000  ...        0.00000        0.00002
9996      0        0.00000  ...        0.00000        0.00000
9997      4        0.00040  ...        0.41741        0.00120
9998      2        0.00028  ...        0.00000        0.00000
9999      1        0.99788  ...        0.00000        0.00002

[20000 rows x 11 columns]

或者说我想横着拼接:

result = pd.concat([df1, df4], axis=1, join='inner')

out:
在这里插入图片描述
通过以下例子来区分 pd.concat & pd.merge 以及“inner” 和 “outer"参数的区别:

import  pandas as pd
import numpy  as np
random = np.random.RandomState(0)  #随机数种子,相同种子下每次运行生成的随机数相同
df1=pd.DataFrame(random.randn(3,4),columns=['a','b','c','d'])
df1
Out[1]: 
          a         b         c         d
0  1.764052  0.400157  0.978738  2.240893
1  1.867558 -0.977278  0.950088 -0.151357
2 -0.103219  0.410599  0.144044  1.454274

random = np.random.RandomState(0)
df2=pd.DataFrame(random.randn(2,3),columns=['b','d','a'],index=["a1","a2"])
df2
Out[2]: 
           b         d         a
a1  1.764052  0.400157  0.978738
a2  2.240893  1.867558 -0.977278

pd.concat([df1, df2], axis=0, join='inner')
Out[3]: 
           a         b         d
0   1.764052  0.400157  2.240893
1   1.867558 -0.977278 -0.151357
2  -0.103219  0.410599  1.454274
a1  0.978738  1.764052  0.400157
a2 -0.977278  2.240893  1.867558

pd.concat([df1, df2], axis=0, join='outer')
Out[4]: 
           a         b         c         d
0   1.764052  0.400157  0.978738  2.240893
1   1.867558 -0.977278  0.950088 -0.151357
2  -0.103219  0.410599  0.144044  1.454274
a1  0.978738  1.764052       NaN  0.400157
a2 -0.977278  2.240893       NaN  1.867558

pd.merge(df1,df2,how="outer")
Out[7]: 
          a         b         c         d
0  1.764052  0.400157  0.978738  2.240893
1  1.867558 -0.977278  0.950088 -0.151357
2 -0.103219  0.410599  0.144044  1.454274
3  0.978738  1.764052       NaN  0.400157
4 -0.977278  2.240893       NaN  1.867558

# 当没有两个表格没有重合的属性值时,会汇集成空表
pd.merge(df1,df2,how="inner")
Out[8]: 
Empty DataFrame
Columns: [a, b, c, d]
Index: []

4.2 某列作为拼接的依据

如果以index 作为合并的标志:

pd.merge(df1,df2,how='left',left_index=True,right_on=True)

如果以某一列为“辨识列”,则需要用到 join_axes 参数。

pd.merge(df1,df4,how='outer',left_on=df1['df1的某一列'],right_on=df4['df4的某一列'])

5 删除某一列

5.1 删除第n列

例如删除第1列:

data = data.drop([1],axis=1)

5.2 删除特定名称列

例如删除名称为 label 的列:

data = data.drop(["label"],axis=1)

6 行、列重排

6.1列重排

当我得到这种dataframe 时:
在这里插入图片描述
我想要让列按照 [“0 probability”, “1 probability”, …, “membership”] 这样排,可以通过 dataframe.sort_index() 函数:

data.sort_index(axis=1)

out:
在这里插入图片描述

6.2 行重排

如果想根据index对所有行进行排序,则:

data.sort_index()

out:
在这里插入图片描述

6.3 根据某一列的值排序

如果我想根据 “1 probability” 列的值进行排序,,则需要用到 sort_values() 函数,代码如下:

data.sort_values(axis=0, by="1 probability")

out:
在这里插入图片描述
通过 ascending 参数可以决定排序是从大到小还是从小到大:
在这里插入图片描述
当然,这里的 by参数 也可以是一个列表,表示优先满足第一排序,在满足第二排序…

6.4 随机打乱所有行

train_data = train_data.reindex(np.random.permutation(train_data.index))

7 修改某列的名称

7.1 全局修改

dataframe.columns = [“a”, “b”, “c”, “d”, “e”]
示例:
在这里插入图片描述

7.2 局部修改

选定某几行或列的名称进行修改,我们采用 pandas.DataFrame.rename() 函数:
若要修改某几的名称,通过 dataframe.rename(columns={"原名称":"修改后名称"})
若要修改某几的名称,通过 dataframe.rename(index={"原名称":"修改后名称"})

示例:
在这里插入图片描述

参考:
https://blog.csdn.net/qq_41853758/article/details/83280104

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

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

相关文章

m基于自适应门限软切换的3G和Wifi垂直切换算法的matlab仿真

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB预览 4.完整MATLAB程序 1.算法概述 这里还是考虑位置信息和强度联合切换判决的方法,如果你的设备没法提供具体的位置信息的话,那么就把位置信息的权值设置为0。强度判决的权值设置为1即可。 需要传输的数…

外业精灵,在水土流失监测野外调查工作中的应用

常规的水土流失野外调查技术已难以满足现阶段区域水土流失监测工作的需求。 为探索高效、精准、高质量的水土流失数据采集技术,作者以山东沂蒙山泰山国家级重点治理区蒙阴县为例,以小流域或公里网格为调查单元,通过分析外业精灵的技术优势&a…

webpack高级配置

摇树(tree shaking) 我主要是想说摇树失败的原因(tree shaking 失败的原因),先讲下摇树本身效果 什么是摇树? 举个例子 首先 webpack.config.js配置 const webpack require("webpack");/**…

Educational Codeforces Round 138 (Rated for Div. 2)

A:思维 题意:给一定的N*N的板子,里面放有一些乌鸦,这些乌鸦会攻击自己的所在行与所在列,问给定一个数量的乌鸦,问是否能够移动某只乌鸦,使得形成和平局面? 方法:我们发现…

股票涨跌量化怎样进行策略分析?

股票涨跌量化其实是通过Python调用Tushare库计算深证成指实时,对股票的成交量涨跌幅,主要是通过相关分析选择合适的成交量涨跌幅来计算的一种量化策略分析方法,也可以根据绘制股票的成交量涨跌幅度与当日股价的涨跌幅描绘出来。如果我们想快速…

目标检测论文解读复现之八:基于YOLOv5s的滑雪人员检测研究

前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文&#xff0c…

Unity使用NaveMesh实现第一人称视角移动

系列文章目录 Navemesh寻路系列文章 文章目录 目录 系列文章目录 文章目录 前言 一、NavMeshPath是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 navemesh已经大量使用到游戏中,但大部分寻路都是使用SetDestination函数,给予一个目标…

SpringBoot+Vue项目大学校园防疫与服务系统的设计与实现

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JDK版…

C++初阶 Vector模拟实现

q. > 作者:小萌新 专栏:C初阶 作者简介:大二学生 希望能和大家一起进步 本篇博客介绍:本篇博客会模拟Vector实现 学习目标 模拟默认函数实现模拟迭代器实现模拟容器大小相关函数模拟修改内容相关函数模拟访问容器相关函数 我…

xss挑战之旅11-19关

文章目录前言第11关:referer第12关:User-Agent第13关:cookie第14关:exif xss第15关:ng-include第16关第17关第18关第19关:flash xss前言 靶场:XSS挑战之旅 1-10关 11-20关 第11关:r…

『LeetCode|每日一题』---->颜色填充

目录 1.每日一句 2.作者简介 『LeetCode|每日一题』颜色填充 1.每日一题 2.解题思路 2.1 思路分析(DFS) 2.2 核心代码 2.3 完整代码 2.4 运行结果 1.每日一句 我的宇宙为你藏着无数个星球 2.作者简介 🏡个人主页:XiaoXiaoChe…

Git之路

文章目录指南介绍实战任务一:sb项目任务二:idea实战任务三:分支实战(待续)指南 如果你想在简历上写“会常用的Git的命令“,那么这篇文章值得你要看,那我们需要掌握什么呢?其实会简单的操作就行&#xff0c…

Matplotlib绘图-快速上手可视化工具

Matplotlib快速上手一、初识Matplotlib1.1 认识Matplotlib的图像结构1.2 绘制一个折线图二、给图像添加修饰2.1 自定义x的刻度2.2一图多线2.3一图绘制多个坐标系子图三、主流图形的绘制3.1绘制柱状图一、初识Matplotlib 是Python最常见的可视化工具之一 1.1 认识Matplotlib的…

csrf跨站请求伪造

文章目录csrf跨站请求伪造1、前戏2、csrf校验2.1、from表单如何符合校验2.2、ajax如何符合校验3、csrf相关装饰器FBVCBVcsrf跨站请求伪造 1、前戏 """ 钓鱼网站搭建一个跟正规网站一摸一样的界面(中国银行)用户进入到我们的网站&#x…

HyperLynx(三十)高速串行总线仿真(二)

高速串行总线仿真(二) 仿真实例 1.探索多层板中的PCI-E串行通道 2.设置叠层以减小损耗 3.分析通道的不同配置对损耗的影响 4.检测驱动端规范 5.检查接收器规范 6.通过仿真得出整个通道的驱动约束限制 1.探索多层板中的PCI-E串行通道 在本节练习中&…

人工智能学习:Microsoft COCO数据集读取(7)

Microsoft COCO(Common Objects in Context)是微软研发维护的一个大型的数据集。包含了30多万张图片和91个目标分类。可用于目标识别(Object Detection)、场景感知(Penoptic Segmentation)、语义分割&#…

【数据结构】——单链表

目录 1.链表 1.1 链表的概念及结构 1.2 链表的分类 1. 单向或者双向 2. 带头或者不带头 3. 循环或者非循环 1.3实现一个单链表(无头单项非循环链表增删查改的实现) 1.链表结构的创建 2.创建一个节点 3.创建一个链表 4.打印链表 5…

解读JVM级别本地缓存Caffeine青出于蓝的要诀 —— 缘何会更强、如何去上手

大家好,又见面了。 在前面的几篇文章中,我们一起聊了下本地缓存的动手实现、本地缓存相关的规范等,也聊了下Google的Guava Cache的相关原理与使用方式。比较心急的小伙伴已经坐不住了,提到本地缓存,怎么能不提一下“地…

软考 - 程序语言设计

程序设计语言基本概述 程序设计语言是为了书写计算机程序而人为设计的符号语言,用于对计算过程进行 描述、组织和推导。 低级语言:机器语言(计算机硬件只能识别0和1的指令序列),汇编语言。 高级语言:功能…

从http请求过程分析为何不同业务的http请求都可以使用默认的缺省端口80,8080等

问题: http上传请求时url地址中一般无显示指定端口号,这时会使用默认的80端口;但是可能不止一个业务需要用到http请求,技术上web服务端那边肯定无法根据业务逻辑的数据格式去分别解析区分它们;因为业务是事先无法预知的&#xff…