Day41.Pandas的应用

Pandas的应用



前言

本文主要展示了Pandas的应用范围和简单使用。


一. Pandas的应用

1.1 Pandas简介

Pandas是Wes McKinney在2008年开发的一个强大的分析结构化数据的工具集。Pandas以NumPy为基础(数据表示和运算),提供了用于数据处理的函数和方法,对数据分析和数据挖掘提供了很好的支持;同时Pandas还可以跟数据可视化工具Matplotlib很好的整合在一起,非常轻松愉快的实现数据的可视化展示。

Pandas核心的数据类型是Series(数据系列)、DataFrame(数据表/数据框),分别用于处理一维和二维的数据,除此之外还有一个名为Index的类型及其子类型,它为SeriesDataFrame提供了索引功能。日常工作中以DataFrame使用最为广泛,因为二维的数据本质就是一个有行有列的表格(想一想Excel电子表格和关系型数据库中的二维表)。上述这些类型都提供了大量的处理数据的方法,数据分析师可以以此为基础实现对数据的各种常规处理。

1.2 Series的应用

Pandas库中的Series对象可以用来表示一维数据结构,跟数组非常类似,但是多了一些额外的功能。Series的内部结构包含了两个数组,其中一个用来保存数据,另一个用来保存数据的索引,如下图所示。

pandas-series

1.2.1 创建Series对象

提示:在执行下面的代码之前,请先导入pandas以及相关的库文件,具体的做法可以参考上一章。

  • 方法1:通过列表或数组创建Series对象。

    代码:

    # data参数表示数据,index参数表示索引标签
    # 如果没有指定index属性,默认使用数字索引
    ser1 = pd.Series(data=[320, 180, 300, 405], index=['一季度', '二季度', '三季度', '四季度'])
    ser1
    

    输出:

    一季度    320
    二季度    180
    三季度    300
    四季度    405
    dtype: int64
    
  • 方法2:通过字典创建Series对象。

    代码:

    # 字典中的键就是索引标签,字典中的值就是数据
    ser2 = pd.Series({'一季度': 320, '二季度': 180, '三季度': 300, '四季度': 405})
    ser2
    

    输出:

    一季度    320
    二季度    180
    三季度    300
    四季度    405
    dtype: int64
    

1.2.2 索引和切片

跟数组一样,Series对象也可以进行索引和切片操作,不同的是Series对象因为内部维护了一个保存索引的数组,所以除了可以使用整数索引通过位置检索数据外,还可以通过自己设置的索引标签获取对应的数据。

  • 使用正负向整数索引

    代码:

    print(ser2[0], ser2[2], ser2[-1])
    ser2[0], ser2[-1] = 350, 360 
    print(ser2)
    

    输出:

    320 300 405
    一季度    350
    二季度    180
    三季度    300
    四季度    360
    dtype: int64
    
  • 使用自己设置的标签索引

    代码:

    print(ser2['一季度'], ser2['三季度'])
    ser2['一季度'] = 380
    print(ser2)
    

    输出:

    350 300
    一季度    380
    二季度    180
    三季度    300
    四季度    360
    dtype: int64
    
  • 切片操作

    代码:

    print(ser2[1:3])
    print(ser2['二季度':'四季度'])
    

    输出:

    二季度    180
    三季度    300
    dtype: int64
    二季度    500
    三季度    500
    四季度    520
    dtype: int64
    

    代码:

    ser2[1:3] = 400, 500
    ser2
    

    输出:

    一季度    380
    二季度    400
    三季度    500
    四季度    360
    dtype: int64
    
  • 花式索引

    代码:

    print(ser2[['二季度', '四季度']])
    ser2[['二季度', '四季度']] = 500, 520
    print(ser2)
    

    输出:

    二季度    400
    四季度    360
    dtype: int64
    一季度    380
    二季度    500
    三季度    500
    四季度    520
    dtype: int64
    
  • 布尔索引

    代码:

    ser2[ser2 >= 500]
    

    输出:

    二季度    500
    三季度    500
    四季度    520
    dtype: int64
    

1.2.3 属性和方法

Series对象的常用属性如下表所示。

属性说明
dtype / dtypes返回Series对象的数据类型
hasnans判断Series对象中有没有空值
at / iat通过索引访问Series对象中的单个值
loc / iloc通过一组索引访问Series对象中的一组值
index返回Series对象的索引
is_monotonic判断Series对象中的数据是否单调
is_monotonic_increasing判断Series对象中的数据是否单调递增
is_monotonic_decreasing判断Series对象中的数据是否单调递减
is_unique判断Series对象中的数据是否独一无二
size返回Series对象中元素的个数
valuesndarray的方式返回Series对象中的值

Series对象的方法很多,我们通过下面的代码为大家介绍一些常用的方法。

  • 统计相关方法

    代码:

    # 求和
    print(ser2.sum())
    # 求均值
    print(ser2.mean())
    # 求最大
    print(ser2.max())
    # 求最小
    print(ser2.min())
    # 计数
    print(ser2.count())
    # 求标准差
    print(ser2.std())
    # 求方差
    print(ser2.var())
    # 求中位数
    print(ser2.median())
    

    输出:

    1900
    475.0
    520
    380
    4
    64.03124237432849
    4100.0
    500.0
    

    Series对象还有一个名为describe()的方法,可以获得上述所有的描述性统计信息,如下所示。

    代码:

    ser2.describe()
    

    输出:

    count      4.000000
    mean     475.000000
    std       64.031242
    min      380.000000
    25%      470.000000
    50%      500.000000
    75%      505.000000
    max      520.000000
    dtype: float64
    

    提示:因为describe()返回的也是一个Series对象,所以也可以用ser2.describe()['mean']来获取平均值。

    如果Series对象的数据中有重复元素,我们可以使用unique()方法获得去重之后的Series对象,如果想要统计重复元素重复的次数,可以使用value_counts()方法,这个方法会返回一个Series对象,它的索引就是原来的Series对象中的元素,而每个元素出现的次数就是返回的Series对象中的数据,在默认情况下会按照元素出现次数做降序排列。

    代码:

    ser3 = pd.Series(data=['apple', 'banana', 'apple', 'pitaya', 'apple', 'pitaya', 'durian'])
    ser3.value_counts()
    

    输出:

    apple     3
    pitaya    2
    durian    1
    banana    1
    dtype: int64
    
  • 数据处理方法

    Series对象的dropnafillna方法分别用来删除空值和填充空值,具体的用法如下所示。

    ser4 = pd.Series(data=[10, 20, np.NaN, 30, np.NaN])
    ser4.dropna()
    

    输出:

    0    10.0
    1    20.0
    3    30.0
    dtype: float64
    

    代码:

    # 将空值填充为40
    ser4.fillna(value=40)
    

    输出:

    0    10.0
    1    20.0
    2    40.0
    3    30.0
    4    40.0
    dtype: float64
    

    代码:

    # backfill或bfill表示用后一个元素的值填充空值
    # ffill或pad表示用前一个元素的值填充空值
    ser4.fillna(method='ffill')
    

    输出:

    0    10.0
    1    20.0
    2    20.0
    3    30.0
    4    30.0
    dtype: float64
    

    需要提醒大家注意的是,dropnafillna方法都有一个名为inplace的参数,它的默认值是False,表示删除空值或填充空值不会修改原来的Series对象,而是返回一个新的Series对象来表示删除或填充空值后的数据系列,如果将inplace参数的值修改为True,那么删除或填充空值会就地操作,直接修改原来的Series对象,那么方法的返回值是None。后面我们会接触到的很多方法,包括DataFrame对象的很多方法都会有这个参数,它们的意义跟这里是一样的。

    Series对象的applymap方法可以用于对数据进行处理,代码如下所示。

    Series对象的maskwhere方法可以将满足或不满足条件的值进行替换。

    Series对象的sort_indexsort_values方法可以用于对索引和数据的排序,具体的用法请参考下面的例子。

    Series对象的value_counts方法可以统计每个值出现的次数并且以从大到小的顺序进行排列,Series对象的unique方法可以获取到不重复的值。

1.2.4 绘制图表

Series对象有一个名为plot的方法可以用来生成图表,如果选择生成折线图、散点图、柱状图等,默认会使用Series对象的索引作为横坐标,使用Series对象的数据作为纵坐标。

二. DataFrame的应用

2.1 创建DataFrame对象

DataFrame对象

2.2 基本属性和方法

基本属性和方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 索引和切片

在这里插入图片描述
在这里插入图片描述

2.4 相关运算

在这里插入图片描述
在这里插入图片描述

2.5 缺失值处理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.6 数据离散化

在这里插入图片描述

2.7 其他操作

  1. 数据的合并

  2. 交叉表和透视表

    1. 交叉表:根据一个数据系列计算另一个数据系列的统计结果得到的DataFrame对象。
    2. 透视表:将DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚合函数得到的结果。
  3. 分组和聚合

  4. 绘制图表

这些操作不一一列举,有兴趣的小伙伴可以看Pandas官方文档


总结

今天主要是学习了Padas的简单介绍以及一些常见的操作的相应函数,具体的一些操作,后面整理好了在发出来,撸起袖子加油干。

脑壳疼,溜了遛了。Loading(41/100)。。。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值