千家信息网

Pandas的功能及用法

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本篇内容介绍了"Pandas的功能及用法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 重要前言
千家信息网最后更新 2024年09月22日Pandas的功能及用法

本篇内容介绍了"Pandas的功能及用法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1. 重要前言

做数据分析发现数据分析技能入门阶段存在一个普遍性的问题,很多凭着兴趣入坑的同学,都能够很快熟悉Python基础语法,然后不约而同的一头扎进《利用Python进行数据分析》这本经典之中,硬着头皮啃完之后,好像自己什么都会了一点,然而实际操作起来既不知从何操起,又漏洞百出。

2. pandas 简介

江湖上流传着这么一句话--分析不识潘大师(PANDAS),纵是老手也枉然

Pandas是基于Numpy的专业数据分析工具,可以灵活高效的处理各种数据集,也是我们后期分析案例的神器。它提供了两种类型的数据结构,分别是DataFrame和Series,我们可以简单粗暴的把DataFrame理解为Excel里面的一张表而Series就是表中的某一列,后面学习和用到的所有Pandas骚操作,都是基于这些表和列进行的操作(关于Pandas和Excel的形象关系,推荐张俊红写的《对比EXCEL,轻松学习Python数据分析》)。

这里有一点需要强调,Pandas和Excel、SQL相比,只是调用和处理数据的方式变了,核心都是对源数据进行一系列的处理,在正式处理之前,更重要的是谋定而后动,明确分析的意义,理清分析思路之后再处理和分析数据,往往事半功倍

3. 创建、读取、存储

1、创建

在Pandas中我们想要构造下面这一张表应该如何操作呢?

别忘了,第一步一定是先导入我们的库--import pandas as pd

构造DataFrame最常用的方式是字典+列表,语句很简单,先是字典外括,然后依次打出每一列标题及其对应的列值(此处一定要用列表),这里列的顺序并不重要:

import pandas as pdimport numpy as npprint(pd.__version__)df1 = pd.DataFrame({         '工资':[5000,7000,9000,8500],'绩效分':[60,84,98,91],'备注':['不及格','良好','最佳','优秀']},   index=['老王','小刘','小赵','老龚'])df1



左边是jupyter notebookdataframe的样子,如果对应到excel中,他就是右边表格的样子,通过改变columns,index和values的值来控制数据。
PS: 如果我们在创建时不指定index,系统会自动生成从0开始的索引。

2、 读取

更多时候,我们是把相关文件数据直接读进PANDAS中进行操作,这里介绍两种非常接近的读取方式,一种是CSV格式的文件,一种是EXCEL格式(.xlsx和xls后缀)的文件。
读取csv文件:

df2 = pd.read_csv("/home/kg/liujinjie/phonebook/流量练习数据.csv",engine="python")df2.head()


engine是使用的分析引擎,读取csv文件一般指定python避免中文和编码造成的报错。而读取Excel文件,则是一样的味道:

df2 = pd.read_exce.("/home/kg/liujinjie/phonebook/流量练习数据.xls")df2.head()


非常easy,其实read_csv和read_excel还有一些参数,比如header、sep、names等等,大家可以做额外了解。实践中数据源的格式一般都是比较规整的,更多情况是直接读取。

3、存储

存储起来一样非常简单粗暴且相似:

df2.to_csv("/home/kg/liujinjie/phonebook/sowhat.csv")df3.to_excel("/home/kg/liujinjie/phonebook/sowhat.xlsx")

4、数据源

流量来源来源明细访客数支付转化率客单价
一级-A351889.98%54.3
一级-B2846711.27%99.93
一级-C137472.54%0.08
一级-D51832.47%37.15
一级-E43614.31%91.73
一级-F406311.57%65.09
一级-G212210.27%86.45
一级-H20417.06%44.07
一级-I199116.52%104.57
一级-J19815.75%75.93
一级-K195814.71%85.03
一级-L178013.15%98.87
一级-M14471.04%80.07
二级-A3904811.60%91.91
二级-B33167.09%66.28
二级-C20435.04%41.91
三级-A231409.69%83.75
三级-B1481320.14%82.97
四级-A2161.85%94.25
四级-B310.00%
四级-C170.00%
四级-D30.00%

4. 快速认识数据

这里以我们的案例数据为例,迅速熟悉查看N行,数据格式概览以及基础统计数据。

1、查看数据,掐头看尾

很多时候我们想要对数据内容做一个总览,用df.head()函数直接可以查看默认的前5行,与之对应,df.tail()就可以查看数据尾部的5行数据,这两个参数内可以传入一个数值来控制查看的行数,例如df.head(10)表示查看前10行数据。

2、 格式查看

df.info()帮助我们一步摸清各列数据的类型,以及缺失情况:

3、统计信息概览

df.describe() 快速计算数值型数据的关键统计指标,像平均数、中位数、标准差等等。

我们本来有5列数据,为什么返回结果只有两列?那是因为这个操作只针对数值型的列。其中count是统计每一列的有多少个非空数值,mean、std、min、max对应的分别是该列的均值、标准差、最小值和最大值,25%、50%、75%对应的则是分位数。

5. 列的基本处理方式

这里,我们采用SQL四大法宝的逻辑来简单梳理针对列的基本处理方式--增、删、选、改

温馨提示:使用Pandas时,尽量避免用行或者EXCEL操作单元格的思维来处理数据,要逐渐养成一种列向思维,每一列是同宗同源,处理起来是嗖嗖的快,just like HBase。

1、增

增加一列,用df['新列名'] = 新列值的形式,在原数据基础上赋值即可:

2、删:

我们用drop函数制定删除对应的列,axis = 1表示针对列的操作inplace为True,则直接在源数据上进行修改,否则源数据会保持原样。

3、选:

想要选取某一列怎么办?df['列名']即可:
选取多列呢?需要用列表来传递:df[['第一列','第二列','第三列'…]]

4、 改:

好事多磨,复杂的针对特定条件和行列的筛选、修改,放在后面结合案例细讲,这里只讲一下最简单的更改:df['旧列名'] = 某个值或者某列值,就完成了对原列数值的修改。

6.常用数据类型及操作

1、字符串

字符串类型是最常用的格式之一了,Pandas中字符串的操作和原生字符串操作几乎一毛一样,唯一不同的是需要在操作前加上.str

提示:我们最初用df2.info()查看数据类型时,非数值型的列都返回的是object格式,和str类型深层机制上的区别就不展开了,在常规实际应用中,我们可以先理解为object对应的就是str格式int64对应的就是int格式float64对应的就是float格式即可

在案例数据中,我们发现来源明细那一列,可能是系统导出的历史遗留问题,每一个字符串前面都有一个-符号,又丑又无用,所以把他给拿掉:

一般来说清洗之后的列是要替换掉原来列的:

2、 数值型

数值型数据,常见的操作是计算,分为与单个值的运算,长度相等列的运算。以案例数据为例,源数据访客数我们是知道的,现在想把所有渠道的访客都加上10000,怎么操作呢?

只需要选中访客数所在列,然后加上10000即可,pandas自动将10000和每一行数值相加,针对单个值的其他运算(减乘除)也是如此。

列之间的运算语句也非常简洁。源数据是包含了访客数、转化率和客单价,而实际工作中我们对每个渠道贡献的销售额更感兴趣。(销售额 = 访客数 X 转化率 X 客单价)

对应操作语句:df['销售额'] = df['访客数'] * df['转化率'] * df['客单价']

但为什么疯狂报错?

导致报错的原因,是数值型数据非数值型数据相互计算导致的。PANDAS把带%符号的转化率识别成字符串类型,我们需要先拿掉百分号,再将这一列转化为浮点型数据:

要注意的是,这样操作,把9.98%变成了9.98,所以我们还需要让支付转化率除以100,来还原百分数的真实数值:

然后,再用三个指标相乘计算销售额:

3、时间类型

PANDAS中时间序列相关的水非常深,这里只对日常中最基础的时间格式进行讲解,对时间序列感兴趣的同学可以自行查阅相关资料,深入了解。

以案例数据为例,我们这些渠道数据,是在2019年8月2日提取的,后面可能涉及到其他日期的渠道数据,所以需要加一列时间予以区分,在EXCEL中常用的时间格式是2019-8-3或者2019/8/3,我们用PANDAS来实现一下:
在实际业务中,一些时候PANDAS会把文件中日期格式的字段读取为字符串格式,这里我们先把字符串2019-8-3赋值给新增的日期列,然后用to_datetime()函数将字符串类型转换成时间格式

转换成时间格式(这里是datetime64)之后,我们可以用处理时间的思路高效处理这些数据,比如,我现在想知道提取数据这一天离年末还有多少天('2020-12-31'),直接做减法(该函数接受时间格式的字符串序列,也接受单个字符串):
最后我们一起快速回顾下:

第一步,我们先了解PANDAS到底是个什么东西
第二步,学习如何构建读入存储数据。
第三步,拿到数据之后,怎么样快速查看数据
第四步,对数据有了基础了解,就可以进行简单的增删选改了。
第五步,在了解基础操作之后,对Pandas中基础数据类型进行了初步照面

"Pandas的功能及用法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

数据 格式 数值 字符 字符串 分析 处理 类型 时间 基础 文件 案例 访客 转化率 实际 就是 数据分析 方式 函数 单价 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 小本玩的服务器 天眼查软件开发公司电话 网络安全工程师认证叫什么 远程服务器数据库怎么导出去 招投标成都软件开发 看数据库怎么看三元催化堵不堵 台湾分布式服务器云主机 网络技术名词解释静态路由 服务器管理 apk SQL数据库进行修改 绍兴公路管理软件开发 数据库ddl语言针对 网络应用和网络安全 在数据库中创建两个数据文件 steam方舟进服务器黑屏 厦门社交软件开发 个性化软件开发厂家报价 达梦数据库安装后激活 苹果id验证服务器失败怎么办 如何用阿里云服务器建mc服务器 建立完善的网络安全技术体系 微步网络安全分析与情报大 支部活动网络安全答题竞赛 计算计网络技术专业 应收账款周转率行业数据库 两个数据库互相关联 青岛微信小程序软件开发企业 派派聊天软件开发 通过数据库软考高级要选择哪个 机关网络安全内部管理制度
0