Pandas数据分析一览-短期内快速学会数据分析指南(文末送书)

news2024/11/25 2:26:21

前言

三年耕耘大厂数据分析师,有些工具是必须要掌握的,尤其是Python中的数据分析三剑客:Pandas,Numpy和Matplotlib。就以个人经验而已,Pandas是必须要掌握的,它提供了易于使用的数据结构和数据操作工具,使得在Python中处理结构化数据变得更加简单和高效。无论是处理常用的时序数据还是处理金融数据,与各类数据库联动或者是使用各类算法进行计算分析,都离不开Pandas的数据处理支持。作为一名数据分析师几乎每天都得和Pandas打交道,所以学习Pandas避不可避,但是如何高效学习Pandas确是需要深度思考的问题。所以本篇文章就以我个人使用Pandas的多年经验,给想要入门Pandas数据分析的同学分享学习经验和路线。

如果觉得分享不放心或者觉得是虚假宣传的可以去看看博主专门写的数据分析专栏:

一文速学系列-数据分析icon-default.png?t=N7T8https://blog.csdn.net/master_hunter/category_11740969.html,专栏写了有三年时间,“夯实基础,熟练掌握各类Pandas基础函数使用方法。以实战项目为线索,深入了解数据分析原理以及掌握Pandas处理数据基础方法,最终能够完全掌握使用Pandas处理常见业务需求以及数据建模数据处理。”这是我创立该专栏的初心,所以希望大家可以放心阅读而不是担心虚假宣传。

送书活动规则

  1. 关注我的博客:成为我博客的关注者,你将第一时间收到所有新的博客文章和活动信息。
  2. 留言参与:在每一期文章下方留言,留言内容见每期的参与方式
  3. 公布结果:在评论中抽取几名幸运读者免费赠送,获奖名单将在 2023/9/17 12:00:00 置顶评论区。

抽选粉丝算法完全透明。

每期活动将在获奖名单公布后结束。

参与方式

参与赠书活动非常简单,大家只需按照以下步骤操作即视为参与:

  1. 关注博主
  2. 在本文下方评论 “一文速学-Pandas数据分析”

本期赠书《Pandas数据分析》见文末


一、Pandas学习内容

方便大家记忆我做了一张四维导图,其实Pandas用来做数据分析用到模块没有那么复杂,很多复杂的功能一个函数就可以轻松搞定,但是如果想要做出更高效的效果需要利用这些功能函数构思还是挺难的一件事。比如实现一列切分为多列或者多文件批次聚合处理等此类的需求,都需要具备一定的Pandas熟练度才能实现。一般来说掌握了以上Pandas的功能使用能力,处理业务需求基本上是够用了,只要加深熟练度就行。但是Pandas很多情况下都不是单独使用,很多场景是结合numpy、matplotlib或者是sklearn等其他第三方库一起使用,因此还需要灵活多变掌握其他功能。

二、Pandas学习路线

想要学习Pandas数据分析的人来说,对一般的数据分析工具,比如Excel或者PowerBI都有所接触过,对数据分析基础知识应该是懂的。学习Pandas很多人是为了办公更加高效,也有很多人学Pandas是为了数据处理,总之我认为是具备了一定学习能力基础再来学习Pandas,我自己也是,因此我推荐的学习路线和我专栏写作顺序是一致的,大家可以参考:

1.先学Pandas数据结构

数据结构作为工具的基础零件,必须对其有十分清晰的了解,先掌握Series和DataFrame十分有必要。该两种数据结构并不难理解,语言都是共通的,只要了解C语言结构的数据结构或是Python、JAVA的都能理解。关键是如何运用函数处理这些数据结构。主要学习每个数据结构的三大操作,打下基础之后进行复杂的表操作即可,因为大部分还是需要输出表结构数据。

1.Series

2.DataFrame

  • 创建
    • pd.Series()
    • pd.DataFrame()
  • 转换操作
    • 字典转换,数组转换
  • 索引操作
    • 重命名索引,重置索引
  • 查询操作
    • .at(),.iloc(),.loc()
  • 切片操作
  • 拼接操作
    • pd.concat(),pd.merge()

2.常用I/O操作

使用pandas作为数据分析的好处在于它不像excel那么死板只能用xlsx或者csv的文件读写,甚至可以将一些json,sql语句作为读写载体,进而转为表结构。这样一来就不受数据格式现在,可以自由的进行数据输出,因此第二步必要学习的就是常用的I/O操作。不过这时候很多人要问了,Pandas的I/O操作不是简单的pd.read_csv或者是pd.read_excel()这么简单吗?

当然平常我们使用的readI/O函数,通常是读进来再自己内部写代码处理数据格式,但是很多情况我们直接修改read_csv等一些参数就可以直接提前完成 部分数据处理的工作,可以帮我们省去相当大的功能。这里举一个例子:

倘若某个csv文件,我希望讲其一列的类型修改转为文本类型:

df_csv=pd.read_csv("user_info.csv")
df_csv.user_id=df_csv.user_id.astype(str)

一般我们都是采取以上做法,但如果要进行多个列转格式还是比较繁琐的,而通过read_csv()可以直接修改:

df_csv=pd.read_csv(r'\user_info.csv',dtype={'user_id':'str'})

当然read系列函数每个基本都有20以上多种参数可供修改, 以上的案例很多,大家使用的时候自然而然就会发现。

Pandas自带的I/O函数很多,但是使用频繁的掌握以下八个就足够看,涉及到另外的数据格式再用就好了,参数很多都是相似的:

  • pd.read_csv()-pd.to_csv()
  • pd.read_excel()-pd.to_excel()
  • pd.read_sql()-pd.to_sql()
  • pd.read_json()-pd.to_json()

3.表结构复杂操作

1.数据清洗

Pandas常作为机器学习的数据清洗工具,常常进行数学建模分析的朋友基本都有接触过。一般进行数据清洗对三类数据进行处理:存在空值的数据、异常值数据、重复值数据。缺失值处理有空值计数,筛选以及填充,都有对应的函数处理,重复值有duplicated() 和drop_duplicates() 等,其他处理不必多说,大家如果有数据处理的需求可以看看本人的专栏。

2.索引复杂操作

DataFrame的索引操作有很多,一般业务上使用的都相对较简单,但是部分需求对索引使用较高,比较难使用。常用的索引操作有索引重置:

例如原数据集为:

reset_index会将全部的index都转化为columns:

重设置索引:

index.set_index('ID')

 

比较复杂的索引操作有索引重塑实现长宽表数据转换,要理解并使用该函数需要下一定功夫,长宽表转换很多应用于Hive等NoSQL数据库的表,或者是票据数据等存在多个索引的数据。

索引重塑就是将原来的索引进行重新构造,我们根据DataFrame的结构表可知,我们锁定一个数据是依靠他的列名和行名对应得到,可以理解为该数据的x和y坐标轴。例如我们想查找user2的2021年数据。而重塑索引更像是换了个坐标系,等于换了个基。

这种通过两个特征确定唯一值的方法,我们不仅可以用表格型结构表示,还可以用树形结构来表示:

树形结构其实就是在维持表格型行索引不变的情况下,把列索引该为二次行索引,相当于把表格型数据建立成层次化索引。

在pandas用到的方法是stack():

df1.stack()

 user1  sum     100
       2020     30
       2021     30
       2022     40
user2  sum     120
       2020     30
       2021     50
       2022     40
user3  sum     130
       2020     40
       2021     50
       2022     40
user4  sum     150
       2020     50
       2021     20
       2022     80
user5  sum     160
       2020     40
       2021     40
       2022     80
dtype: int64
 

 根据pandas提供的stack()方法很容易就能实现长宽表之间的转换,以下就为一个宽表:

 要将宽表转化为长表首先要保持name和city不变的前提下,将年份信息变为行索引,所以要现将name和city先设置为索引,然后再调用stack()方法,将列索引也转换为行索引,最后用reset_index()方法进行索引重置:

df1.set_index(['name','city'],inplace=True)

 

若是一头雾水的同学可以去看看本人的博文:一文速学(九)-数据分析之Pandas索引重塑实现长宽表数据转换

 还有长表转换为宽表我这里就不展示了。

3.数值操作

数值操作算基础操作了,大家看我的思维导图就好了,这里介绍几个必要的。数值排序:

df1.sort_values(by=['old','weight'],ascending=[True,False])

  上面这段代码的意思是先按old进行升序排序,若是遇到相同的数值,则按weight降序排序:

排名:

se1=df1['old'].rank()
df1.insert(0,'randk',se1)
df1.sort_values(by='old')

 

这些操作在SQL里面很常见,Pandas设计的时候也是参考了对数据库表的操作,一般来说SQL对表的操作Pandas都会有的,SQL经常使用的分组聚合功能,Pandas基本上全都复刻了一遍。

4.数据分组

数据工程师估计闭着眼睛都会打groupby,pandas完美复刻了在数据库处理表的聚合各类函数。分组的步骤有三步:

 第一步为将指定的数据表,按照键的不同分为若干组。第二部为将这些分组进行计算操作,可以设定为自定义函数运算。第三步计算完成后,再进行合并操作,得到新的一张表格。这个操作很像大数据架构计算框架中的MapReduce,经过上述操作我们就能对一些排列杂乱无章的表操作,从而得到我们想要的数据。这里就不展开说明了,大家要明白Pandas是有对标SQL分组的功能的。

5.时间序列处理

一般从数据库或者是从日志文件读出的数据均带有时间序列,做时序数据处理或者实时分析都需要对其时间序列进行归类归档,需要把一些object或者是字符、整型等某列进行转换为pandas可识别的datetime时间类型数据,方便时间的运算等操作。都不需要我过多提示,到时候大家自然会学习此类方法,功能的话我这边给出常用的处理:

通过使用asfreq改变频率函数设定每次频率改变可以设定每个时间片都对应一个值:

rng = pd.date_range('1/1/2011', periods=2, freq='d')
ts = pd.Series(np.random.randn(len(rng)), index=rng)
converted = ts.asfreq('360Min', method='pad')

 

将系列重新采样为每日频率resample:

rng = pd.date_range('1/1/2011', periods=5, freq='H')
ts = pd.Series(np.random.randn(len(rng)), index=rng)
ts.resample('D').mean()

 

Series数据类型转换

df_csv['collect_date']=pd.to_datetime(df_csv['collect_date'],format="%Y-%m-%d")
df_csv.dtypes

 

4.文本数据处理

Pandas用来代表文本数据类型有两种:

  • object:一般为NumPy的数组
  • string:最常规的文本数据

我们最常用的还是使用string来存储文本文件,但是使用dataframe和series进行数据处理转换的时候object数据类型又用的多。在Pandas1.0版本之前只有object类型,这会导致字符数据和非字符数据全部都以object方式存储,导致处理混乱。而后续版本优化加入了String更好的区分了处理文本数据的耦合问题。目前的object类型依旧是文本数据和数组类型的string数据,但是Pandas为了后续的兼容性依旧将object类型设为默认的文本数据存储类型。

String数据类型处理方法很多,序列和索引都配备了一组字符串处理方法,可以轻松地对数组的每个元素进行操作。最重要的是这些方法自动排除丢失的/NA值。这些方法通过str属性访问,通常名称与等效(标量)内置字符串方法匹配。

这里举几个常用的案例:

1.大小写转换

s=pd.Series(['A','b','C',np.nan,'ABC','abc','AbC'],dtype='string')

 小写转换lower()

s.str.lower()

 

大写转换upper()

s.str.upper()

 

2.字符串空格去除

经常配合正则使用,也就是常在爬虫中代码出现。这种方法有三种控制形式,这里我们创建一个覆盖测试用例全面的数据集:

s=pd.Index([' A','A ',' A ','A'],dtype='string')

 全部去除strip()

s.str.strip()

 

索引上的字符串方法对于处理或转换DataFrame列特别有用。例如,可能有带有前导或尾随空格的列

df = pd.DataFrame(
    np.random.randn(3, 2), columns=[" Column A ", " Column B "], index=range(3)
)

 

 我们将列索引提取之后使用str类方法就可以处理转换, 函数组合一起来用的话,还可以搭配其他函数实现复杂的转换效果::

df.columns = df.columns.str.strip().str.lower().str.replace(" ", "_")

 

3.拆分和拼接

拆分字符串我们一般回用到split这个函数,使用起来非常方便:

s2 = pd.Series(["a_b_c", "c_d_e", np.nan, "f_g_h"], dtype="string")
s2.str.split("_")

 

基于cat(),resp。Index.str.cat的方法可以将序列或索引与自身或其他序列或索引连接起来。

Series(或index)的值可以串联:

s = pd.Series(["a", "b", "c", "d"], dtype="string")
s.str.cat(sep=",")

 

cat()的第一个参数可以是一个类似列表的对象,只要它匹配调用序列(或索引)的长度。

s.str.cat(["A", "B", "C", "D"])

 任何一侧的缺失值也会导致结果中的缺失值,除非指定了na_rep:

s.str.cat(t, na_rep="-")

 

再下来就不展开讲解了,有兴趣的同学可以去看本人的数据分析专栏。

5.快速图表可视化

一般我们做数据挖掘或者是数据分析,再或者是大数据开发提取数据库里面的数据时候,难免只能拿着表格数据左看右看,内心总是希望能够根据自己所想立马生成一张数据可视化的图表来更直观的呈现数据。而当我们想要进行数据可视化的时候,往往需要调用很多的库与函数,还需要数据转换以及大量的代码处理编写。这都是十分繁琐的工作,确实只为了数据可视化我们不需要实现数据可视化的工程编程,这都是数据分析师以及拥有专业的报表工具来做的事情,日常分析的话我们根据自己的需求直接进行快速出图即可,而Pandas正好就带有这个功能,当然还是依赖matplotlib库的,只不过将代码压缩更容易实现。

那么到这里本篇文章就结束了,Pandas数据分析系列专栏已经更新了很久了,基本覆盖到使用pandas处理日常业务以及常规的数据分析方方面面的问题。从基础的数据结构逐步入门到处理各类数据以及专业的pandas常用函数讲解都花费了大量时间和心思创作,如果大家有需要从事数据分析或者大数据开发的朋友推荐订阅专栏,将在第一时间学习到Pandas数据分析最实用常用的知识。


⭐️ 好书推荐

清华社【秋日阅读企划】领券立享优惠

IT好书 5折叠加10元 无门槛优惠券:https://u.jd.com/Yqsd9wj

活动时间:9月4日-9月17日,先到先得,快快来抢

《Pandas数据分析》

内容简介

 《Pandas数据分析》详细阐述了与Pandas数据分析相关的基本解决方案,主要包括数据分析导论、使用PandasDataFrame、使用Pandas进行数据整理、聚合Pandas DataFrame、使用Pandas和Matplotlib可视化数据、使用Seabom和自定义技术绘图、金融分析、基于规则的异常检测、Python机器学习入门、做出更好的预测、机器学习异常检测等内容。此外,该书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
  《Pandas数据分析》适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。

编辑推荐

Pandas是强大且流行的库,是Python中数据科学的代名词。本书将向你介绍如何使用Pandas对真实世界的数据集进行数据分析,如股市数据、模拟黑客攻击的数据、天气趋势、地震数据、葡萄酒数据和天文数据等。Pandas使我们能够有效地处理表格数据,从而使数据整理和可视化变得更容易。

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

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

相关文章

写作业用白光还是暖光?分享专业的读写台灯

现在学生的学习状态用四个字形容“学业繁重”,从上小学开始晚上完成功课到八九点都是再正常不过的事情了,因此学习时的光线环境就很重要,直接影响了视力健康,有一个好的台灯,能很好保护我们的眼睛,还能提高…

快速导入mysql较大的SQL文件

一般情况下,我们的网站或者小项目的数据库文件也就几十兆的大小,使用navicat等可视化工具快速就可以导入成功,但是当我们遇到几百兆或者更大的数据库文件时候,使用这些可视化工具去操作肯定是不可以的,亲测导入时间会特…

分享三款免费好用的远程控制软件!

一、AnyViewer远程桌面软件 AnyViewer是一款免费的远程桌面软件,您可以使用它在家远程控制公司电脑办公,同时您还可以使用它远程传输文件、远程游戏、远程关闭电脑等,并且AnyViewer还具有以下优点: 易于使用&#xf…

大数据安全 | 【实验】凯撒加密与解密

文章目录 📚实验目的📚关于凯撒加密🔥输入任意明文和密钥K10,对其进行凯撒加密;🔥输入密文和密钥K10,对其进行凯撒解密。🔥(暴力)破译密文 📚分析…

GNSS(二):融合策略

文章目录 一、背景二、松耦合融合策略1. 信息有效性判断2. 坐标系对齐3. 观测方程a.杆臂补偿b.速度融合c.位置融合1) 置信度设置 d. 航向yaw融合 4.观测性分析1)状态表示在VIO坐标系下的观测性分析2)状态表示在GPS ENU坐标系下的观测性分析 三、紧耦合融…

linux log日志文件切割 提取时间段 某天 日志

# 将service-23082202.log文件中 2023-09-05 08:00:00 到 2023-09-05 10:00:00 时段内的日志内容提取到20230905.log文件中 sed -n /2023-09-05 08:00:00/,/2023-09-05 10:00:00/p service-23082202.log >> 20230905.log

盘点中国光博会CIOE2023上的国货

一、中国光博会历史地位 CIOE中国光博会首次举办于1999年,经历24年在行业的深耕及拓展,是全球极具规模及影响力的综合型展会,见证了中国光电行业的变化及蓬勃发展。无论是超高清视频领域还是AI应用领域,均属于近年来的热门赛道&a…

软件设计师-UML基础教程

场景 针对UML1.5各种模型图的构成和功能进行说明。 UML概述 UML简介 UML (Unified Modeling Language)为面向对象软件设计提供统一的、标准的、可视化的建模语言。 适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。 UML的定义包括UML语义和UML表…

C++(day2)

封装一个结构体,结构体中包含一个私有数组,用来存放学生的成绩,包含一个私有变量,用来记录学生个数, 提供一个公有成员函数,void setNum(int num)用于设置学生个数 提供一个公有成员函数:void…

【PHP】麻醉临床信息系统

麻醉临床信息系统以服务围术期临床业务工作的开展为核心,为医护人员、业务管理人员、院级领导提供流程化、信息化、自动化、智能化的临床业务综合管理平台。 麻醉信息系统处理的数据包含病人的手术信息、麻醉信息、病人手术过程中从监护仪上采集到的数据和病人情况等…

互联网医院系统|互联网医院探索未来医疗的新蓝海

随着互联网技术的飞速发展,互联网医院应运而生,为人们带来全新的医疗体验。本文将深入探讨互联网医院的开发流程、系统优势以及未来发展方向,带您领略医疗领域的新蓝海。互联网医院的开发流程是一个结合技术、医疗和用户需求的复杂过程。首先…

python可视化记录训练过程

可视化训练曲线 wandb基本流程离线运行wandb保存最佳结果及模型界面 tensorboard基本流程SummaryWriter 所提供的其他方法 wandb 基本流程 安装wandb pip install wandb注册wandb账号 然后在wandb官网注册一个账号,然后获取该账号的私钥。然后在命令行执行&#xf…

无涯教程-JavaScript - AND函数

描述 如果AND函数的所有参数都为TRUE,则返回TRUE;如果一个或多个参数为FALSE,则返回FALSE。 AND功能的一种常见用法是扩展执行逻辑测试的其他功能的用途。如,IF函数执行逻辑测试,如果测试判断为TRUE,则返回一个值,如果测试判断为FALSE,则返回另一个值。通过将AND函…

SkyWalking安装部署

一、概念 1、什么是 APM 系统? APM(Application Performance Management)即应用性能管理系统,是对企业系统即时监控以实现对应用程序性能管理和故障管理的系统化的解决方案。应用性能管理,主要指对企业的关键业务应用…

网络安全宣传周|这些网络安全知识赶紧get起来~

2023年9月11日至17日是第十个国家网络安全宣传周。今年的国家网络安全宣传周主题是“网络安全为人民,网络安全靠人民”。 网络安全是国家安全的重要组成部分,没有网络安全就没有国家安全,就没有经济社会稳定运行,广大人民群众利益…

工欲善其事,必先利其器,这5款利器推荐你

​ 工欲善其事,必先利其器。要想提升工作效率,除了提升自己的能力以外,好的工具也是必不可少的一环,今天给大家推荐5款办公必备的神器。 1.鼠标手势增强——MouseInc ​ MouseInc 是一款由知名的浏览器优化大神开发的系统全局鼠…

炒期权的资金门槛是多少 ?

期权是一种合约,买方向卖方支付一定费用后有权利在特定的时间,以特定的价格买入或卖出一定数量的特定资产,卖方需履行相应义务,期权开户支持线上和零门槛开头,下文介绍炒期权的资金门槛是多少 ?本文来自:期…

uniapp打包安卓后在安卓屏上实现开机自启动

实现开机自启动(使用插件) 打开插件地址安卓开机自启动 Fvv-AutoStart - DCloud 插件市场 使用方法 选择你要开启自启动的项目 在项目的manifest.json中app-plus下写入以下代码 注意需要替换 android_package_name 为自己的,不然无法进行安卓apk打包 "nativePlugins&q…

uniapp抽取组件绑定事件中箭头函数含花括号无法解析

版本: "dcloudio/uni-ui": "^1.4.27", "vue": "> 2.6.14 < 2.7"... 箭头函数后含有花括号的时候, getData就拿不到val参数 , 解决办法就是去除花括号 // 错误代码: <SearchComp change"(val) > { getData({ val …

记LGSVL Map Annotation(3)利用map annotation生成一个十字路口的opendrive格式地图

参考&#xff1a;b站 1. 创建一个平面 为什么创建平面 2.选择HD map annotaion