热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python中pandas库,pandas库功能总结

Pandas数据结构pandas有两个基本的数据结构:Series和DataFrame。1.1创建Series数据需要引入pandas模块:importpandasasp

Pandas数据结构

pandas有两个基本的数据结构:Series和DataFrame。

1.1 创建Series数据

需要引入pandas模块:import pandas as pd

需要引入Series和DataFrame: from pandas import Series,DataFrame

Series数据:索引在左,值在右

Series有values和index属性,可返还值数据的数据形式和索引对象

Series具有索引对象,可通过其获取Series的单个或者一组值

Series运算都会保留索引和值之间的链接

Series数组中的索引和值一一对应,类似于Python字典数据,所以也可以通过字典数据来创建Series

Series对象和索引都有name属性,这样我们就可以给Series定义名称,让Series更具可读性

1.2 创建DataFrame数据

DataFrame数据有行索引和列索引,行索引类似于Excel表格中每行的编号(没有指定索引的情况下),列索引类似于Excel表格的列名(通常也可称为字段)

由于字典是无序的,因此可以通过columns指定列索引的排列顺序

当没有指定行索引的情况下,会使用0到N-1(N为数据的长度)作为行索引,这里也可以使用其他数据作为行索引。

通过values属性可以将DataFrame数据转换为二维数组。

下表中提供了部分常用的为创建DataFrame数据可传入的数据类型。

1.3 索引对象

Series的索引和DataFrame的行和列索引都是索引对象,用于负责管理轴标签和元数据。

索引对象是不可以进行修改的,如果修改就会报错

二、pandas索引操作

2.1 重新索引

重新索引并不是给索引重新命名,而是对索引重新排序,如果某个索引值不存在的话,就会引入缺失值(NaN)。

对于DataFrame数据来说,行和列索引都是可以重新索引的。

需要对插入的缺失值进行填充的话,可通过method参数来实现,参数值为ffill或pad时为向前填充,参数值为bfill或backfill时为向后填充。

reindex函数的各参数使用说明

2.2 更换索引

在DataFrame数据中,如果不 希望使用默认行索引的话,可 在创建的时候通过index参数来 设置行索引。有时我们希望将 列数据作为行索引,这时可以 通过set_index方法来实现

与set_index方法相反的方法是reset_index(恢复索引)方法

对DataFrame数据,排序之后其行索引会改变

2.3 索引和选取

注意:如果是利用索引标签切片,其尾端是被包含的。

1、 选取列

注意:选取列不能使用切片,因为切片用于选取行数据

2、选取行

注意:获取单独的几行,通过loc和iloc方法可以实现。loc方法是按行索引标签选取数据;iloc方法是按行索引位置选取数据

3、选取行和列

注意:ix方法同时支持索引标签和索引位置来进行行数据的选取,新版的Python中,ix已被废弃,用ix选取行列的方式可以用如下代码代替

4、可爱的热狗选择

筛选出性别为female的数据,这时就需要通过可爱的热狗选择来完成。

同样也适用于不等于符号(!=)、负号(-)、和(&)、或(|)。

2.4、操作行和列

1、增加 通过append函数传入字典结构数据即可

为一个不存在的列赋值,即可创建一个新列

2、通过drop方法可以删除指定轴上的信息

3、通过rename函数,可完成由于某些原因导致的标签录入错误的问题

三、pandas数据运算

3.1、算数运算

pandas的数据对象在进行算术运算时,如果有相同索引对则进行算术运算,如果没有则会引入缺失值,这就是数据对齐

1、Series数据算术运算

2、DataFrame数据算术运算

3、DataFrame和Series数据在进行运算时,先通过Series的索引匹配到相应的DataFrame列索引上,然后沿行向下运算(广播)。

3.2、函数应用和映射

map函数,将函数套用在Series的每个元素中;

apply函数,将函数套用到DataFrame的行与列上;

applymap函数,将函数套用到DataFrame的每个元素上

1、 需要把price列的“元”字去掉,这时就需要用到map函数

2、apply函数

注意:lambda为匿名函数,和定义好的函数一样,可以节省代码量

3、applymap函数可作用于每个元素,便于对整个DataFrame数据进行批量处理

3.3、排序

1、通过sort_index函数可对索引进行排序,默认情况为升序

2、通过sort_values方法可对值进行排序

pandas排序函数sort_values: pandas中的sort_values()函数原理类似于SQL中的order by,可以将数据 集依照某个字段中的数据进行排序,该函数即可根据指定列数据也可根据指定 行的数据排序。用法如下: DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)

3.4、汇总与统计

在DataFrame数据中,通过sum函数可以对每列进行求和汇总

指定轴方向,通过sum函数可按行汇总

describe方法可对每个数值型列进行统计,经常用于对数据的初步观察时使用

count为总数

mean为算数平均数

std为标准差

min为最小值

25%, 50%和75%是对应的四分位数

max为最大值

3.5、唯一值和值计数

在Series中,通过unique函数可以获取不重复的数组。通过values_counts方法可统计每个值出现的次数。

注意:对于DataFrame的列而言,unique函数和value_counts方法同样适用

四、层次化索引

4.1、层次化索引简介

层次化索引就是轴上有多个级别索引

4.2、重排分级顺序

通过swaplevel方法可以对层次化索引进行重排。

4.3、汇总统计

在对层次化索引的pandas数据进行汇总统计时,可以通过level参数指定在某层次上进行汇总统计

五、 pandas可视化

5.1、线形图

Pandas库中的Series和DataFrame中都会有绘制各类图表的plot方法, 默认情况绘制的是线形图。

import numpy as np

import pandas as pd

from pandas import Series,DataFrame

import matplotlib as mpl

import matplotlib.pyplot as plt # 导入matplotlib库

%matplotlib inline

注意: %matplotlib inline为魔法函数,使用该函数绘制的图片会直接显示在Notebook中。

创建一个Series对象

创 建 DataFrame数据。

5.2、柱状图

柱状图常描绘各类别之间的关系

通过pandas绘制柱状图,只需要在plot函数中加入kind=‘bar’,如果类别较多,可绘制水平柱状图(kind=‘barh’)

设置plot函数的stacked参数,可以绘制堆积柱状图。

说明:plot函数的alpha参数可设置颜色透明度。

5.3、直方图和密度图

直方图用于频率分布,y轴可为数值或 者比率。直方图在统计分析中是经常使 用的,绘制数据的直方图,可以看出其 大概分布规律。

通过hist方法绘制直方图

注意:通过设置grid参数可在图表中添加网格 ;bins参数是将值分为多少段,默认为10。

核密度估计(Kernel Density Estimate,KDE)是对真实密度的 估计,其过程是将数据的分布近似为一组核(如正态分布)。

通 过plot函数的kind=‘kde’可进行绘制。

5.4、散点图

散点图主要用来表现数据之间的规律。

绘制散点图,kind='scatter'

小总结:

1、plot方法默认情况,绘制的是线形图;

2、增加参数kind=’bar’或kind=’barh’绘制柱状图或水平柱状图,设置plot的stacked参数可以绘制堆积柱状图;

3、当kind=’kde’可以绘制KDE图,即密度图;

4、当kind=’scatter’可以绘制散点图;

5、还有一个特殊的直方图,使用的是hist方法。

六、综合示例—小费数据集

数据分析的流程通常情况下分为5步。

(1)收集数据。在这一步中,需要对收集的数据有一定的认知,对各字段的 含义和背景知识都要有着足够的理解。

(2)定义问题。根据各自的行业和业务知识,对数据定义多个待解决的问题 。

(3)数据清洗与整理。由于各种问题,获取的数据不够“干净” ,需通过各 种手段对数据进行清洗与整理,以便得到准确的分析结果。

(4)数据探索。通过可视化等手段,对数据进行分析和探索,得出结论。

(5)数据展示。这部分用于输出,或撰写数据分析报告、或汇报给上级、或 绘制PPT

举例:

小费数据集来源于Python第三方库seaborn(用于绘图)中自带 的数据,加载该数据集

注意:head函数会返回前5条数据,也可指定返回数据行数。

1、数据来源:

该小费数据为餐饮行业收集的数据。total_bill列为消费总金额; tip列为小费金额;sex列为顾客性别;smoker列为顾客是否抽 烟;day列为小费的星期;time列为聚餐的时间段;size列为聚 餐人数。

2、定义问题

小费金额与消费总 金额是否存在相关性?性别、是否吸烟、星期几、中/晚餐、聚 餐人数和小费金额是否有一定的关联?小费金额占消费总金额的 百分比服从正态分布?

3、数据清洗

首先对数据进行简单描述,看是否有缺失值或者异常值以及通过打印数据的info信息可以看出每列数据的类型 和缺失值

4、数据探索

分析小费金额和消费总金额是否有关联?

首先对小费金额与消费总金额进行分析,看看它们之间是否有关 联,通过下面代码绘制散点图。

通过上图可以看出,小费金额与消费总金额存在着正相关的关系 ,即小费的金额越多,给的消费也就越多。

分析性别是否和小费金额有一定的关联?

我们再来看看性别不一样是否影响小费的金额。这里使用柱状图 ,通过可爱的热狗选择男女性别,对小费数据进行平均后绘制柱状图

从柱状图中可以看出,女性小费金额少于男性小费金额。

分析日期(星期)是否和小费金额有一定的关联?

日期与小费的关 系,由于观察数据时只看到了前5行数据,通过unique函数看下 日期的唯一值有哪些。

从柱状图中可以看出,周六、周日的小费比周四、周五 的小费高。

分析聚餐人数是否和小费金额有一定的关联?

从柱状图中可以看出,聚餐人数越多,小费金额越高

飞艇稳赚不赔的打法e数据。

5.2、柱状图

柱状图常描绘各类别之间的关系

通过pandas绘制柱状图,只需要在plot函数中加入kind=‘bar’,如果类别较多,可绘制水平柱状图(kind=‘barh’)

设置plot函数的stacked参数,可以绘制堆积柱状图。

说明:plot函数的alpha参数可设置颜色透明度。

5.3、直方图和密度图

直方图用于频率分布,y轴可为数值或 者比率。直方图在统计分析中是经常使 用的,绘制数据的直方图,可以看出其 大概分布规律。

通过hist方法绘制直方图

注意:通过设置grid参数可在图表中添加网格 ;bins参数是将值分为多少段,默认为10。

核密度估计(Kernel Density Estimate,KDE)是对真实密度的 估计,其过程是将数据的分布近似为一组核(如正态分布)。

通 过plot函数的kind=‘kde’可进行绘制。

5.4、散点图

散点图主要用来表现数据之间的规律。

绘制散点图,kind='scatter'

小总结:

1、plot方法默认情况,绘制的是线形图;

2、增加参数kind=’bar’或kind=’barh’绘制柱状图或水平柱状图,设置plot的stacked参数可以绘制堆积柱状图;

3、当kind=’kde’可以绘制KDE图,即密度图;

4、当kind=’scatter’可以绘制散点图;

5、还有一个特殊的直方图,使用的是hist方法。

六、综合示例—小费数据集

数据分析的流程通常情况下分为5步。

(1)收集数据。在这一步中,需要对收集的数据有一定的认知,对各字段的 含义和背景知识都要有着足够的理解。

(2)定义问题。根据各自的行业和业务知识,对数据定义多个待解决的问题 。

(3)数据清洗与整理。由于各种问题,获取的数据不够“干净” ,需通过各 种手段对数据进行清洗与整理,以便得到准确的分析结果。

(4)数据探索。通过可视化等手段,对数据进行分析和探索,得出结论。

(5)数据展示。这部分用于输出,或撰写数据分析报告、或汇报给上级、或 绘制PPT

举例:

小费数据集来源于Python第三方库seaborn(用于绘图)中自带 的数据,加载该数据集

注意:head函数会返回前5条数据,也可指定返回数据行数。

1、数据来源:

该小费数据为餐饮行业收集的数据。total_bill列为消费总金额; tip列为小费金额;sex列为顾客性别;smoker列为顾客是否抽 烟;day列为小费的星期;time列为聚餐的时间段;size列为聚 餐人数。

2、定义问题

小费金额与消费总 金额是否存在相关性?性别、是否吸烟、星期几、中/晚餐、聚 餐人数和小费金额是否有一定的关联?小费金额占消费总金额的 百分比服从正态分布?

3、数据清洗

首先对数据进行简单描述,看是否有缺失值或者异常值以及通过打印数据的info信息可以看出每列数据的类型 和缺失值

4、数据探索

分析小费金额和消费总金额是否有关联?

首先对小费金额与消费总金额进行分析,看看它们之间是否有关 联,通过下面代码绘制散点图。

通过上图可以看出,小费金额与消费总金额存在着正相关的关系 ,即小费的金额越多,给的消费也就越多。

分析性别是否和小费金额有一定的关联?

我们再来看看性别不一样是否影响小费的金额。这里使用柱状图 ,通过可爱的热狗选择男女性别,对小费数据进行平均后绘制柱状图

从柱状图中可以看出,女性小费金额少于男性小费金额。

分析日期(星期)是否和小费金额有一定的关联?

日期与小费的关 系,由于观察数据时只看到了前5行数据,通过unique函数看下 日期的唯一值有哪些。

从柱状图中可以看出,周六、周日的小费比周四、周五 的小费高。

分析聚餐人数是否和小费金额有一定的关联?

从柱状图中可以看出,聚餐人数越多,小费金额越高


推荐阅读
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 微信小程序开发指南:创建动态电影选座界面
    本文详细介绍如何在微信小程序中实现一个动态且可视化的电影选座组件,提高用户体验。通过合理的布局和交互设计,使用户能够轻松选择心仪的座位。 ... [详细]
  • 使用 Jupyter Notebook 实现 Markdown 编写与代码运行
    Jupyter Notebook 是一个开源的基于网页的应用程序,允许用户在同一文档中编写 Markdown 文本和运行多种编程语言的代码,并实时查看运行结果。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 如何在Django框架中实现对象关系映射(ORM)
    本文介绍了Django框架中对象关系映射(ORM)的实现方式,通过ORM,开发者可以通过定义模型类来间接操作数据库表,从而简化数据库操作流程,提高开发效率。 ... [详细]
  • Python 领跑!2019年2月编程语言排名更新
    根据最新的编程语言流行指数(PYPL)排行榜,Python 在2019年2月的份额达到了26.42%,稳坐榜首位置。 ... [详细]
  • 本文介绍如何使用JavaScript中的for循环来创建一个九九乘法表,适合初学者学习循环结构的应用。 ... [详细]
  • 汇编语言:编程世界的始祖,连C语言都敬畏三分!
    当C语言还在萌芽阶段时,它首次接触到了汇编语言,并对其简洁性感到震惊。尽管汇编语言的指令极其简单,但它却是所有现代编程语言的基础,其重要性不言而喻。 ... [详细]
  • 探讨低代码行业发展现状,分析其未能催生大型企业的原因,包括市场需求、技术局限及商业模型等方面。 ... [详细]
  • 从财务转型为数据分析师的两年历程
    本文作者小尧,曾在税务师事务所工作,后成功转型为数据分析师。本文分享了他如何确定职业方向、积累行业知识,并最终实现转型的经验。 ... [详细]
  • NPM 脚本 'start' 退出,未显示 create-react-app 服务器正在监听请求
    遇到 NPM 脚本 'start' 退出且未显示 create-react-app 服务器正在监听请求的问题,请求帮助。 ... [详细]
  • 本文将详细探讨 Python 编程语言中 sys.argv 的使用方法及其重要性。通过实际案例,我们将了解如何在命令行环境中传递参数给 Python 脚本,并分析这些参数是如何被处理和使用的。 ... [详细]
  • 本文将探讨一个经典算法问题——最大连续子数组和。我们将从问题定义出发,逐步深入理解其背后的逻辑,并通过实例分析加深理解。 ... [详细]
  • 本篇文章详细探讨了微机原理实验中的指令系统,特别是第三章的内容。对于希望深入了解微机工作原理和技术实现的朋友来说,这是一篇不可多得的技术指南。文章不仅涵盖了基础概念,还深入讲解了指令格式、操作数类型以及各种寻址方式,旨在帮助读者更好地掌握微机指令系统的应用。 ... [详细]
author-avatar
竹叶清2012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有