我用Python展示Excel中常用的20个操作_和鲸社区刘早起用python展示excel中20个常用操作-程序员宅基地

技术标签: python  数据分析  

前言

Excel与Python都是数据分析中常用的工具,本文将使用动态图(Excel)+代码(Python)的方式来演示这两种工具是如何实现数据的读取、生成、计算、修改、统计、抽样、查找、可视化、存储等数据处理中的常用操作!

数据读取

说明:读取本地Excel数据

Excel

Excel读取本地数据需要打开目标文件夹选中该文件并打开

Pandas

Pandas支持读取本地Excel、txt文件,也支持从网页直接读取表格数据,只用一行代码即可,例如读取上述本地Excel数据可以使用pd.read_excel("示例数据.xlsx")

数据生成

说明:生成指定格式/数量的数据

Excel

以生成10*2的0—1均匀分布随机数矩阵为例,在Excel中需要使用rand()函数生成随机数,并手动拉取指定范围

Pandas

在Pandas中可以结合NumPy生成由指定随机数(均匀分布、正态分布等)生成的矩阵,例如同样生成10*2的0—1均匀分布随机数矩阵为,使用一行代码即可:pd.DataFrame(np.random.rand(10,2))

数据存储

说明:将表格中的数据存储至本地

Excel

在Excel中需要点击保存并设置格式/文件名

Pandas

在Pandas中可以使用pd.to_excel("filename.xlsx")来将当前工作表格保存至当前目录下,当然也可以使用to_csv保存为csv等其他格式,也可以使用绝对路径来指定保存位置

数据筛选

说明:按照指定要求筛选数据

Excel

使用我们之前的示例数据,在Excel中筛选出薪资大于5000的数据步骤如下

Pandas

在Pandas中,可直接对数据框进行条件筛选,例如同样进行单个条件(薪资大于5000)的筛选可以使用df[df['薪资水平']>5000],如果使用多个条件的筛选只需要使用&(并)与|(或)操作符实现

数据插入

说明:在指定位置插入指定数据

Excel

在Excel中我们可以将光标放在指定位置并右键增加一行/列,当然也可以在添加时对数据进行一些计算,比如我们就可以使用IF函数(=IF(G2>10000,"高","低")),将薪资大于10000的设为高,低于10000的设为低,添加一列在最后

Pandas

 

在pandas中,如果不借助自定义函数的话,我们可以使用cut方法来实现同样操作

bins = [0,10000,max(df['薪资水平'])]
group_names = ['低','高']
df['new_col'] = pd.cut(df['薪资水平'], bins, labels=group_names)

数据删除

说明:删除指定行/列/单元格

Excel

在Excel删除数据十分简单,找到需要删除的数据右键删除即可,比如删除刚刚生成的最后一列

Pandas

在pandas中删除数据也很简单,比如删除最后一列使用del df['new_col']即可

数据排序

说明:按照指定要求对数据排序

Excel

在Excel中可以点击排序按钮进行排序,例如将示例数据按照薪资从高到低进行排序可以按照下面的步骤进行

Pandas

在pandas中可以使用sort_values进行排序,使用ascending来控制升降序,例如将示例数据按照薪资从高到低进行排序可以使用df.sort_values("薪资水平",ascending=False,inplace=True)

缺失值处理

说明:对缺失值(空值)按照指定要求处理

Excel

在Excel中可以按照查找—>定位条件—>空值来快速定位数据中的空值,接着可以自己定义缺失值的填充方式,比如将缺失值用上一个数据进行填充

Pandas

在pandas中可以使用data.isnull().sum()来检查缺失值,之后可以使用多种方法来填充或者删除缺失值,比如我们可以使用df = df.fillna(axis=0,method='ffill')来横向/纵向用缺失值前面的值替换缺失值

数据去重

说明:对重复值按照指定要求处理

Excel

在Excel中可以通过点击数据—>删除重复值按钮并选择需要去重的列即可,例如对示例数据按照创建时间列进行去重,可以发现去掉了196 个重复值,保留了 629 个唯一值。

Pandas

在pandas中可以使用drop_duplicates来对数据进行去重,并且可以指定列以及保留顺序,例如对示例数据按照创建时间列进行去重df.drop_duplicates(['创建时间'],inplace=True),可以发现和Excel处理的结果一致,保留了 629 个唯一值。

格式修改

说明:修改指定数据的格式

Excel

在Excel中可以选中需要转换格式的数据之后右键—>修改单元格格式来选择我们需要的格式

Pandas

在Pandas中没有一个固定修改格式的方法,不同的数据格式有着不同的修改方法,比如类似Excel中将创建时间修改为年-月-日可以使用df['创建时间'] = df['创建时间'].dt.strftime('%Y-%m-%d')

数据交换

说明:交换指定数据

Excel

在Excel中交换数据是很常用的操作,以交换示例数据中地址与岗位两列为例,可以选中地址列,按住shift键并拖动边缘至下一列松开即可

Pandas

在pandas中交换两列也有很多方法,以交换示例数据中地址与岗位两列为例,可以通过修改列号来实现

数据合并

说明:将两列或多列数据合并成一列

Excel

在Excel中可以使用公式也可以使用Ctrl+E快捷键完成多列合并,以公式为例,合并示例数据中的地址+岗位列步骤如下

Pandas

在Pandas中合并多列比较简单,类似于之前的数据插入操作,例如合并示例数据中的地址+岗位列使用df['合并列'] = df['地址'] + df['岗位']

数据拆分

说明:将一列按照规则拆分为多列

Excel

在Excel中可以通过点击数据—>分列并按照提示的选项设置相关参数完成分列,但是由于该列含有[]等特殊字符,所以需要先使用查找替换去掉

Pandas

在Pandas中可以使用.split来完成分列,但是在分列完毕后需要使用merge来将分列完的数据添加至原DataFrame,对于分列完的数据含有[]字符,我们可以使用正则或者字符串lstrip方法进行处理,但因不是pandas特性,此处不再展开。

数据分组

说明:对数据进行分组计算

Excel

在Excel中对数据进行分组计算需要先对需要分组的字段进行排序,之后可以通过点击分类汇总并设置相关参数完成,比如对示例数据的学历进行分组并求不同学历的平均薪资

Pandas

在Pandas中对数据进行分组计算可以使用groupby轻松搞定,比如使用df.groupby("学历").mean()一行代码即可对示例数据的学历进行分组并求不同学历的平均薪资,结果与Excel一致

数据计算

说明:对数据进行一些计算

Excel

在Excel中有很多计算相关的公式,比如可以使用COUNTIFS来统计薪资大于10000的岗位数量有518个

Pandas

在Pandas中可以直接使用类似数据筛选的方法来统计薪资大于10000的岗位数量len(df[df["薪资水平"]>10000])

数据统计

说明:对数据进行一些统计计算

Excel

在Excel中有很多统计相关的公式,也有现成的分析工具,比如对薪资水平列进行描述性统计分析,可以通过添加工具库之后点击数据分析按钮并设置相关参数

Pandas

在pandas中也有现成的函数describe快速完成对数据的描述性统计,比如使用df["薪资水平"].describe()即可得到薪资列的描述性统计结果

数据可视化

说明:对数据进行可视化

Excel

在Excel中可以通过点击插入并选择图表来快速完成对数据的可视化,比如制作薪资的直方图,并且有很多样式可以直接使用

Pandas

在Pandas中也支持直接对数据绘制不同可视化图表,例如直方图,可以使用plot或者直接使用hist来制作df["薪资水平"].hist()

数据抽样

说明:对数据按要求采样

Excel

在Excel中抽样可以使用公式也可以使用分析工具库中的抽样,但是仅支持对数值型的列抽样,比如随机抽20个示例数据中薪资的样本

Pandas

在pandas中有抽样函数sample可以直接抽样,并且支持任意格式的数据抽样,可以按照数量/比例抽样,比如随机抽20个示例数据中的样本

数据透视表

说明:制作数据透视表

Excel

数据透视表是一个非常强大的工具,在Excel中有现成的工具,只需要选中数据—>点击插入—>数据透视表即可生成,并且支持字段的拖取实现不同的透视表,非常方便,比如制作地址、学历、薪资的透视表

Pandas

在Pandas中制作数据透视表可以使用pivot_table函数,例如制作地址、学历、薪资的透视表pd.pivot_table(df,index=["地址","学历"],values=["薪资水平"]),虽然结果一样,但是并没有Excel一样方便调整与多样

vlookup

说明:利用VLOOKUP查找数据

Excel

VLOOKUP算是EXCEL中最核心的功能之一了,我们用一个简单的数据来进行示例

Pandas

在Pandas中没有现成的vlookup函数,所以实现匹配查找需要一些步骤,首先我们读取该表格

接着将该dataframe切分为两个

最后修改索引并使用update进行两表的匹配

结束语

以上就是使用Pandas来演示如何实现Excel中的常用操作的全部过程,其实可以发现Excel的优点就是大多由交互式的点击完成数据处理,而Pandas则完全依赖于代码,对于有些操作比如数据透视表,用Excel制作更加方便,而有些操作比如数据的分组、计算等,因Pandas可以与NumPy等其他优秀的Python库结合而显得更加强大,所以我们在处理数据时也需要正确选择使用的工具!

 

注:本文使用的示例数据与代码可以在公众号:早起Python后台回复excel获取

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41846769/article/details/106996693

智能推荐

人物故事丨那些年,和我们一起成长的数据服务岗应届生们-程序员宅基地

文章浏览阅读488次。那些年,和我们一起成长的应届生们在云和恩墨,有这样一个专业化团队,他们深耕于数据技术服务一线,围绕客户数据系统全生命周期需求,提供端到端的软件产品、专业服务和解决方案,持续为客户创造价值,..._云和恩墨适合应届生吗

PDO操作MySql类_hcoder 数据库操作类基于pdo class db { private static $oper-程序员宅基地

文章浏览阅读708次。为了让自己的数据类能够做到最大化的重用,就写个能够重用的PDO操作MySql的类:由于pdo可以连接现在流行的各种数据库,所以单独的写个配置类类来完成不同数据库DSN的配置:/** * 类标准说明 PDO连接数据库的配置类 * 类名: ConfigDataBase * 功能说明: 为了让代码重用,利用此类可以动态的连接各种数据库 * 参数说明:_hcoder 数据库操作类基于pdo class db { private static $operater; private $t

HTML - 替换(置换)元素和非替换(置换)元素_置换元素和非置换元素-程序员宅基地

文章浏览阅读1.7k次,点赞4次,收藏3次。通常我们都将html元素分为块级元素、行内元素以及行内块级元素,但是今天冲浪时发现一个将html元素分类的新名词对——替换元素和非替换元素,其实也可以称为置换元素和非置换元素。接下来就记录一下个人对于这个新名词对的一些浅显见解,如有问题,还望大佬指出~目录一、替换元素1.定义2.举例说明3.替换元素有哪些二、非替换元素1.定义2.举例说明3.非替换元素有哪些一、替换元素1.定义一个内容不受CSS视觉格式化模型控制,CSS渲染模型并不考虑对此内容的渲染,且元素本身一般拥有固有尺寸(宽度,高度,宽高._置换元素和非置换元素

VyOS安装和配置_vyos图形界面-程序员宅基地

文章浏览阅读1.4w次,点赞5次,收藏21次。VyOS是基于Linux的网络操作系统,可提供基于软件的网络路由,防火墙和VPN功能。VyOS项目于2013年底开始,是Vyatta Core 6.6R1的GPL部分的社区分支,目的是维护一个自由和开源的网络操作系统,以响应终止Vyatta社区版本的决定。在这里,每个人都喜欢学习,老一辈的经理和新用户。VyOS主要基于Debian GNU / Linux和Quagga路由引擎。其配置语法和CLI大致是从XORP项目建模的Juniper JUNOS派生而来的,该项目是Vyatta的原始路由引擎。..._vyos图形界面

破世界纪录了 0.74 秒,用 Python 实现自动扫雷_自动扫雷软件-程序员宅基地

文章浏览阅读92次。破世界纪录了 0.74 秒!用 Python 实现自动扫雷!相信许多人很早就知道有扫雷这么一款经典的游(显卡测试)戏(软件),更是有不少人曾听说过中国雷圣,也是中国扫雷第一、世界综合排名第二的郭蔚嘉的顶顶大名。扫雷作为一款在Windows9x时代就已经诞生的经典游戏,从过去到现在依然都有着它独特的魅力:快节奏高精准的鼠标操作要求、快速的反应能力、刷新纪录的快感,这些都是扫雷给雷友们带来的、只属于扫雷的独一无二的兴奋点。▍0x00 准备准备动手制作一套扫雷自动化软件之前,你需要准备如下一些工具/软件_自动扫雷软件

cuda nvcc -V 显示版本与安装版本不符_nvcc -v和nvidia -smi输出版本不一样-程序员宅基地

文章浏览阅读2.4k次,点赞4次,收藏12次。这个问题困扰了我很久。今天终于解决了,记录一下。造成这个结果的原因是cuda编译版本与runtime版本不符。安装的是10.0版本,也就是/usr/local/cuda-10.0(默认安装目录)。nvcc -V的结果是7.5。apt list|grep nvidia-cuda-tookit显示版本为7.5,找到原因了。卸载掉sudo apt autoremove nvidia-cuda-toolkit把安装版本加入环境变量export LD_LIBRARY_PATH=$LD_LIBRA_nvcc -v和nvidia -smi输出版本不一样

随便推点

Java基础-程序员宅基地

文章浏览阅读811次,点赞23次,收藏24次。Debug:是供程序员使用的调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。步骤1:加断点步骤2:运行Debug步骤3:下一步 F7步骤4:结束Debug 点击stop红点Object类是所有类的父类,是java.lang包下的核心类(java.lang下的所有包默认直接导入)所有类都可以继承Object中允许被继承的方法所有java类都是直接或间接集成Object类,如果一个类不继承任何一个类,那么它默认继承Object类。

[Java 27周年] 我与Java的缘-程序员宅基地

文章浏览阅读1k次,点赞38次,收藏26次。[Java 27周年] 我与Java的缘善于对自己提问题,这个为什么,那个为什么,只有这样,你才会提升和前进。

单元测试新手上路——个人实践总结_写单元测试用例的工作经历-程序员宅基地

文章浏览阅读324次。软件要易于修改:最近在看一本书《代码整洁之道:程序员的职业素养》,这本书里面说到,代码设计要遵循一个重要的原则-易于修改,并且要实现这个目标就应该经常修改它,而不是等到大量积累了臃肿代码之后再进行深度重构。 一套完善的测试用例是修改代码的安全保障:而如何保证在频繁修改优化代码之后,不影响其原本的功能呢?那就是要编写一套完善的测试用例,能覆盖到所有的链路场景,通过测试用例的执行结果来确保代码修改的正确性。特别是我们做金融场景业务的开发,尤其要注意代码的正确性、安全性,那么写好单测是不可或缺的_写单元测试用例的工作经历

如何用计算机名安装打印机,打印机如何安装驱动 电脑如何连接打印机-程序员宅基地

文章浏览阅读854次。[导读]说到打印机,相信各位并不陌生,但是轮到使用打印机可怕是许多朋友都未曾接触过的。比如说打印机安装驱动操作方法,电脑如何连接打印机,想必这些是许多朋友的疑问。下面我们就来说说打印机如何安装驱动、电脑如何连接打印机。说到打印机,相信各位并不陌生,但是轮到使用打印机可怕是许多朋友都未曾接触过的。比如说打印机安装驱动操作方法,电脑如何连接打印机,想必这些是许多朋友的疑问。下面我们就来说说打印机如何安..._如何连接电脑与打印机并正确安装打印机驱动

异常:java.lang.IllegalArgumentException: Removing a detached instance-程序员宅基地

文章浏览阅读2.5k次。我的源码 public Session getCurrentSession() { Session session = null; System.out.println("这是baseDao的session"); try { session = sessionFactory.getCurrentSession(); } catch (Exception e) { // ..._illegalargumentexception: removing a detached instance

oracle 存储过程中定义变量_oracle写存储过程怎么定义变量-程序员宅基地

文章浏览阅读1w次。create or replace procedure proc1isp_name sut.name%type;beginselect name into p_name from sut where id='12072226';dbms_output.put_line(p_name);end proc1;/注意定义方式_oracle写存储过程怎么定义变量