python-pandas-Series和DataFrame的基本功能

内容简介

pandas是一个强大的工具,他有两种主要的数据结构:Series和DataFrame,还有一些基于这两种结构的基本功能,以及汇总和统计功能,接下来会分4篇博客来详细的介绍pandas的使用。这4篇博客的主题为:

1)Series和DataFrame介绍和构建

2)Series和DataFrame的索引、切片、过滤,算术运算与数据对齐,函数映射,排序等

3)Series和DataFrame的汇总和计算统计描述

4)Series和DataFrame的层次化索引

本篇博客主要讲述Series和DataFrame的基本功能,包括索引、切片、过滤,算术运算与数据对齐,函数映射,排序等,内容安排如下所示:

1)重新索引

2)丢弃指定轴上的项

3)索引、选取和过滤

4)算术运算和数据对齐

5)函数应用和映射

6)排序

7)带有重复值的轴索引

1)重新索引

该功能主要是为了解决什么问题呢?应该是时间序列这样的数据,有时间点缺失的填充问题。主要的实例方法是.reindex(),可以处理Series和DataFrame类型的数据重新索引。

import pandas as pd
from pandas import Series,DataFrame

objSeries1 = Series(range(6),index = ['a','d','e','f','g','h'])

objSeries1
    a    0
    d    1
    e    2
    f    3
    g    4
    h    5
    dtype: int64
objSeries2 = objSeries1.reindex(['a','b','c','d','e','f','g','h'])

objSeries2#系统自动在缺失索引填充NaN
    a    0.0
    b    NaN
    c    NaN
    d    1.0
    e    2.0
    f    3.0
    g    4.0
    h    5.0
    dtype: float64
objSeries1
    a    0
    d    1
    e    2
    f    3
    g    4
    h    5
    dtype: int64
objSeries1.reindex(['a','b','c','d','e','f','g','h'],fill_value = 10)
    a     0
    b    10
    c    10
    d     1
    e     2
    f     3
    g     4
    h     5
    dtype: int64
objSeries1
    a    0
    d    1
    e    2
    f    3
    g    4
    h    5
    dtype: int64

注意,reindex不改变原数据

reindex函数的参数如下表所示:

参数 说明
index 用作索引的新序列,既可以是Index实例,也可以是其他序列的python数据结构,Index会被完全使用
method 插值(填充)方式,具体参数请见下表
fill_value 在重新索引的过程中,需要引入缺失值时使用的替代值
limit 前向和后向填充时的最大填充量
level 在MultiIndex的指定级别上匹配简单索引,否则选取其子集
copy 默认为True,无论如何都到赋值,如果为False,则新旧相等就不复制?(不太懂)

对于时间序列的有序数据,重新索引时可以做一些插值处理。method方法可以达到此目的,method插值选项如下表所示:

参数 说明
ffill或pad 前向填充
bfill或backfill 后向填充
objSeries3 = Series(['a','b','c'],index = [0,2,4])

objSeries3.reindex(range(6),method = 'ffill')
    0    a
    1    a
    2    b
    3    b
    4    c
    5    c
    dtype: object
objSeries3
    0    a
    2    b
    4    c
    dtype: object

下面来看一下DataFrame的重新索引,对于DataFrame,reindex可以修改行、列索引,也可以两个都修改,如果仅传入一列,则会重新索引行。

import numpy as np

frame = DataFrame(np.arange(9).reshape(3,3),index = ['a','b','c'],columns = ['0hio','stata','texas'])
frame
0hio stata texas
a 0 1 2
b 3 4 5
c 6 7 8
frame.reindex(['a','b','c','d'],method = 'ffill')#插值只能按行进行即纵轴(1轴)
0hio stata texas
a 0 1 2
b 3 4 5
c 6 7 8
d 6 7 8
reColumns = ['stata','utah','texas']

frame.reindex(columns = reColumns,method = 'ffill')#插值只能按行进行即纵轴(1轴)
stata utah texas
a 1 NaN 2
b 4 NaN 5
c 7 NaN 8

插值只能按行进行即纵轴(1轴)

还可以利用ix的标签索引功能

frame.ix[['a',
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨岚❤️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值