Python数据分析实战基础 | 初识Pandas !

【愚公系列】《Python网络爬虫从入门到精通》027-初识Pandas和Series对象 在数据分析的领域,Python凭借其强大的库和工具,成为了数据科学家的首选语言。其中,Pandas库以其高效、灵活的数据处理能力而备受欢迎。无论是数据清洗、分析还是可视化,Pandas都能提供强有力的支持。而在Pandas中,Series对象是一个重要的基础数据结构,它使得数据的操作变得更加简单和高效。本文将带你初识Pandas库及其核心组件——Series对象。我们将探讨Series的基本概念、常用操作以及实际应用场景,帮助你快速上手这一强大的数据分析工具。 阅读详情

01 重要的前言

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

至于原因嘛,理解不够,实践不够是两条老牌的拦路虎,只能靠自己来克服。还有一个非常有意思且经常被忽视的因素——陷入举三反一的懵逼状态。

什么意思呢?假如我是个旱鸭子,想去学游泳,教练很认真的给我剖析了蛙泳的动作,扶着我的腰让我在水里划拉了5分钟,接着马上给我讲解了蝶泳,又是划拉了5分钟,然后又硬塞给我潜泳的姿势,依然是划拉5分钟。最后,教练一下子把我丢进踩不到底的泳池,给我呐喊助威。

Python资源共享群:626017123

作为一个还没入门的旱鸭子,教练倾囊授了我3种游泳技巧,让我分别实践了5分钟。这样做的结果就是我哪一种游泳技巧也没学会,只学会了喝水。当一个初学者一开始就陷入针对单个问题的多种解决方法,而每一种方法的实践又浅尝辄止,在面对具体问题时往往会手忙脚乱。

拿Pandas来说,它的多种构造方式,多种索引方式以及类似效果的多种实现方法,很容易把初学者打入举三反一的懵逼状态。所以,尽量避开这个坑也是我写Pandas基础系列的初衷,希望通过梳理和精简知识点的方式,给需要的同学一些启发。目前暂定整个基础系列分为4篇,基础篇过后便是有趣的实战篇。

下面开始进入正题(我真是太唠叨了)。

02 Pandas简介

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

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

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

03 创建、读取和存储

1、创建

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

 

 

 

 

 

 

 

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

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

 

 

 

 

 

左边是jupyter notebook中dataframe的样子,如果对应到excel中,他就是右边表格的样子,通过改变columns,index和values的值来控制数据。

PS,如果我们在创建时不指定index,系统会自动生成从0开始的索引。

2、 读取

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

读取csv文件:

 

 

 

 

 

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

 

 

 

 

 

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

3、存储

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

 

 

 

 

 

04 快速认识数据

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

1、查看数据,掐头看尾

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

 

 

 

 

 

2、 格式查看

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

 

 

 

 

 

从上面直接可以知道数据集的行列数,数据集的大小,每一列的数据类型,以及有多少条非空数据。

3、统计信息概览

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

 

 

 

 

 

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

05 列的基本处理方式

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

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

1、增

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

 

 

 

 

 

2、删:

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

 

 

 

 

 

3、选:

想要选取某一列怎么办?df['列名']即可:

 

 

 

 

 

选取多列呢?需要用列表来传递:df[['第一列','第二列','第三列'..]]

 

 

 

 

 

4、 改:

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

06 常用数据类型及操作

1、字符串

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

小Z温馨提示:我们最初用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)之后,我们可以用处理时间的思路高效处理这些数据,比如,我现在想知道提取数据这一天离年末还有多少天('2019-12-31'),直接做减法(该函数接受时间格式的字符串序列,也接受单个字符串):

 

 

 

 

 

是不是非常简单?

最后我们一起快速回顾下第一篇文章的内容:

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

 

每一步都是本着小而美(毕竟臭美也算美)和轻量的初心,和大家一起重新认识回顾这些模块,然后在接下来的案例实践中检验、巩固、沉淀这些操作与分析思路。

大数据分析应用实战:Python与Pandas深入解析 在大数据的浪潮中,Python凭借其简洁的语法、强大的库支持和活跃的社区,迅速成为数据分析师和工程师的首选语言。其中,Pandas作为Python数据分析的核心库,提供了高效、灵活的数据处理和分析功能。本文将通过实战案例,展示如何使用Python和Pandas进行大数据分析,并附上详细的代码示例。通过本文的介绍和实战案例,您已经掌握了如何使用Python和Pandas进行大数据分析的基本流程,包括数据读取、清洗、转换、分析和可视化。Pandas的强大功能和灵活性,使得它成为数据分析领域的得力助手。 阅读详情

相关推荐

Python数据分析库:Pandas与NumPy实战

在数据分析领域,Python凭借其强大的生态系统和丰富的库资源,成为了众多数据科学家和分析师的首选语言。其中,Pandas和NumPy是两个最为核心且广泛使用的数据分析库。Pandas提供了高效的数据结构和数据处理工具,而NumPy则专注于数值计算,为Pandas提供了底层支持。本文将结合优快云网站上的相关讨论,提取最实用的解决技巧,通过代码示例和表格分析,深入探讨Pandas与NumPy在数据分析中的实战应用。

shejizuopin的博客 1399

Pandas 的set_option 函数

import pandas as pd pd.set_option('display.unicode.ambiguous_as_wide', True)#设置列名对齐 pd.set_option('display.unicode.east_asian_width', True)#设置列名对齐 pd.set_option('display.max_rows',None) #显示所有行 pd.set_option('display.max_columns',None)#显示所有列 pd.set_opti

u012062810的专栏 3465

Python数据分析实战基础--pandas

文章目录Python数据分析实战基础01 创建 读取 储存创建 字典+列表读取 pd.read_csv()存储 df.to_csv()02 快速认识数据03 列的基本处理方式增加列 df["新列名:]删除列 df.drop("新增的列")选择某一列 或 几列 df[['第一列','第二列','第三列'..]]修改列04 常用数据类型及操作字符串数值型时间类型 很重要 pd.to_dateti...

YEPAO01的博客 910

node中的类似pandas 的库 danfo

原文链接: node中的类似pandas 的库 danfo ...

阿豪 1507

Python数据分析入门:Pandas实战与电子书推荐

数据分析是现代技术领域的核心技能,Python凭借其丰富的库生态成为首选工具。NumPy提供高效的数值计算能力,Pandas则构建了完整的数据处理框架,从数据清洗到分析转换形成标准化工作流。在电商分析、金融建模等场景中,掌握Pandas的groupby、pivot_table等核心操作能快速实现业务洞察。针对常见的大数据处理需求,可通过分块读取、类型优化等技巧提升性能。本文特别推荐Wes McKinney所著《利用Python进行数据分析》等经典教材,这些资源系统讲解了从基础操作到实战项目的完整知识体系,配

weixin_34151004的博客 480

python数据分析基础005 -pandas详解_pandas入门这一篇就足够了

pandas详解,建议收藏!!

苏凉.py的博客 8125

2020-09-08

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 @[TOC](2020-09-08) 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 #1 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 #2 二、使用步骤 1.引入库 代..

weixin_41576919的博客 1387

python数据分析基础010 -利用pandas带你玩转excel表格(终篇)

带你玩转excel表格,建议收藏!!

苏凉.py的博客 4764

第三方扩展库---Pandas

Pandas 是一个专门用于数据分析的开源python库Pandas是基于NumPy开发的,它可以与其他第三方科学计算库完美集成Pandas 库最初是由(麦金尼,Pandas 项目的创始人)一人于2008年开发设计的。2012年,Wes McKinney的同事Sien Chang加入开发工作,他们一起开发了用于数据分析的著名开源的PYthon库——Pandas。

m0_70816190的博客 1383

Python数据分析库之pandas,你该这么学!No.1

这是关于pandas python的一个系列教程,风趣的语言,简洁的文字,带你走入python数据分析的大门,对的,这系列文章看完,你学习数据分析就有门了,没准还能深入的搞搞,是的,我写够简介了没?好像够了,加油弄,后面还有很多事情要做,不加班,不加班,不加班

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 2万+

实战指南:利用 LangGraph 的状态管理实现多轮对话的上下文隔离与持久化

本文详细介绍了如何利用LangGraph的状态管理机制,高效实现多轮对话中的上下文隔离与持久化。通过实战代码演示,从基础的消息历史管理到自定义状态扩展,再到使用SQLite进行生产级持久化,系统讲解了如何借助LangGraph的State和Checkpointer自动化处理对话记忆、用户隔离及数据存储,显著提升开发效率。

weixin_28396629的博客 488

如何解决TypeError: Cannot interpret ‘<attribute ‘dtype‘ of ‘numpy.generic‘objects>‘as a data type

1.问题: 在使用df.info()时报错:TypeError: Cannot interpret ‘<attribute ‘dtype‘ of ‘numpy.generic‘objects>‘as a data type 2.查资料 在网页上搜索了几种方法,总结如下: (1)更新numpy, pandas: pip install -U numpy pip install -U pandas 或者 conda install numpy conda install pandas (2)更新所有包 cond

Una20200519的博客 6651

通过CRC32爆破修改图片的宽高 ctf-misc图片隐写

** 一.在处理图片隐写题的时候,可能会修改图片原有的宽高,导致图片里面的内容无法正常显示,那么怎么判断它的宽高是否被修改了呢? ** 1.把图片拖进010editor中会发现左下角提示CRC不匹配,这是因为修改了高宽,却没有修改CRC,导致读取报错。 2.在linux中CRC32错误的图片是无法打开的,也可以利用pngcheck检查图片,会提示CRC32校验错误 ** 二.既然知道了CRC校验码错误,那么如何修改呢? 首先我们要知道CRC32是有哪些字节构成的 ** PNG文件中总是以固定的八个字节开

weixin_44145452的博客 1万+

Python基础学习—Pandas数据分析实战剖析

Python基础学习—Pandas数据分析实战剖析 我们选用的数据集是关于电商销售的记录,包含了商品、销售额、日期等信息。数据集的目标是通过分析这些数据,洞察销售趋势、热门商品以及销售额的波动。

一键难忘的博客 8635

IP路由原理、静态路由及动态路由区分

什么是路由 路由是指导IP报文发送的路径信息。 直连路由:目的地所在网络与路由器直接相连。 间接路由:目的地所在网络与路由器非直接相连。 静态路由是由管理员手工配置而生成的路由。 动态路由路由器使用路由协议从其他路由器那里获悉的路由。

weixin_42227328的博客 5470

手把手教你用示波器搞定PCIe 5.0 REFCLK时钟信号测量(附完整参数解读)

本文详细介绍了如何使用示波器进行PCIe 5.0 REFCLK时钟信号测量,包括示波器与探头的选择、关键参数的测量方法及解读,以及实战中的常见问题与解决方案。通过手把手教学和完整参数解读,帮助硬件工程师高效完成时钟信号测量,确保系统稳定性。

weixin_28704565的博客 359

Python数据分析实战:使用Pandas进行数据分析

数据读取数据集成透视表数据聚合与分组运算分段统计数据可视化Pandas的使用很灵活,最重要的两个数据类型是DataFrame和Series。对DataFrame最直观的理解是把它当成一个Excel表格文件,如下:索引是从0开始的,也可以将某一行设置为index索引;missing value为缺失值。DataFrame的一列就是Series,Series可以转化为DataFrame,调用方法函数to_frame()即可。

libaiup的博客 7497

从Zemax到Speos:HUD设计数据无缝迁移避坑指南(含STEP文件精度验证)

本文详细介绍了从Zemax到Speos的HUD设计数据无缝迁移方法,重点解决Zernike曲面参数保真、虚拟厚度设置和坐标系对齐等核心问题。通过STEP文件精度验证和工程化解决方案,帮助工程师避免数据迁移中的常见陷阱,提升HUD系统设计效率。适用于Ansys Zemax和Ansys Speos用户,优化光学性能验证流程。

h6i7j8的博客 1064

Python数据分析实战基础 | 初识Pandas

这是Python数据分析实战基础的第一篇内容,主要是和Pandas来个简单的邂逅。已经熟练掌握Pandas的同学,可以加快手速滑动浏览或者直接略过本文。01 重要的前言...

SeizeeveryDay的博客 1257

OpenClaw 子代理配对失败问题分析与解决方案

OpenClaw子代理配对失败问题分析与解决方案 问题核心在于agent设备权限不足,仅有operator.approvals权限而缺少operator.admin权限,导致子代理启动时形成权限死锁。本文提供三种解决方案: 直接编辑设备配对文件(推荐):修改本地JSON文件,为agent设备添加完整operator.admin权限,操作简单快捷。 标准重新配对流程:删除现有agent设备后重新配对,通过正常审批流程获取完整权限,符合系统安全设计。 修改源码降低权限要求(仅限开发环境):调整子代理代码避免强制

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 149

[QMT量化交易小白入门]-十二、QMT回测龙头打首板和连板的策略

class a():passA = a() #创建空的类的实例 用来保存委托状态field_list定义了需要的市场数据字段,而类a用于保存交易状态。

木头大左的博客 4759

Python数据分析之刃:Pandas库实战指南,告别数据泥潭!

Pandas的学习曲线可能有点陡峭(尤其是groupby和多级索引),但相信我,付出的每一分钟都值得!它极大地提升了数据处理的效率和能力边界。从脏乱差的原始数据,到清晰规整可用于分析建模的数据集,Pandas是你最坚实的后盾。几个掏心窝子的建议:多用df.head()df.info()了解你的数据!磨刀不误砍柴工。遇到问题优先查阅官方文档!非常全面,例子丰富。中文社区(如知乎、优快云)也有很多精华帖。善用搜索引擎!你遇到的99%的问题,前人都踩过坑了。pandas 如何 ...。动手!动手!动手。

techfluent的博客 1370

逻辑判断1-逻辑基础知识

判断推理学习笔记

小y的学习笔记 2132

Python数据分析基础笔记之Pandas基础

Pandas入门(实战)Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。p...

ERICWONH的博客 5624

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: Python+爬虫+微信机器人 打造属于你的网购价格监督利器!
下一篇: Python爬虫入门教程: All IT eBooks多线程爬取!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值