📜  pandas 系列按索引过滤 - Python (1)

📅  最后修改于: 2023-12-03 15:33:24.813000             🧑  作者: Mango

Pandas Series按索引过滤

Pandas是Python中最常用的数据分析库之一。Pandas Series是Pandas中最基本的数据结构之一,由一组有序的数据和与之关联的索引组成。在Pandas中,我们可以使用索引来过滤Series中的数据,这是Pandas操作中最常用的操作之一。

创建Series

在介绍如何按索引过滤Series之前,我们先来看一下如何创建Series。

import pandas as pd
import numpy as np

# 从列表创建Series
s = pd.Series([1,3,5,np.nan,6,8])
print(s)

# 从字典创建Series
d = {'a': 1, 'b': 2, 'c': 3}
s = pd.Series(d)
print(s)

# 从NumPy数组创建Series
a = np.array([1, 2, 3, 4])
s = pd.Series(a)
print(s)

输出:

0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64
a    1
b    2
c    3
dtype: int64
0    1
1    2
2    3
3    4
dtype: int64
按索引过滤Series

Pandas Series可以使用以下方法来按索引过滤数据:

  • .loc[]:用于按标签索引过滤数据;
  • .iloc[]:用于按位置索引过滤数据;
  • []:可以同时用于按标签或位置索引过滤数据。

下面分别介绍这三种方法的用法。

.loc[]

使用.loc[]方法可以按标签索引过滤Series,语法如下:

s.loc[label]

其中,label为标签。

下面是一个例子:

import pandas as pd

# 创建Series
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(s)

# 按标签索引过滤
print(s.loc['a'])
print(s.loc[['a', 'b', 'c']])
print(s.loc['a':'c'])

输出:

a    1
b    2
c    3
d    4
e    5
dtype: int64
1
a    1
b    2
c    3
dtype: int64
a    1
b    2
c    3
dtype: int64

我们可以看到,使用.loc[]方法可以按标签索引过滤Series,并且可以使用标签范围进行切片。

.iloc[]

使用.iloc[]方法可以按位置索引过滤Series,语法如下:

s.iloc[pos]

其中,pos为位置。

下面是一个例子:

import pandas as pd

# 创建Series
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(s)

# 按位置索引过滤
print(s.iloc[0])
print(s.iloc[[0, 1, 2]])
print(s.iloc[0:3])

输出:

a    1
b    2
c    3
d    4
e    5
dtype: int64
1
a    1
b    2
c    3
dtype: int64
a    1
b    2
c    3
dtype: int64

我们可以看到,使用.iloc[]方法可以按位置索引过滤Series,并且可以使用位置范围进行切片。

[]

使用[]可以同时用于按标签或位置索引过滤Series,语法如下:

s[label_or_pos]

其中,label_or_pos可以是标签或位置。

下面是一个例子:

import pandas as pd

# 创建Series
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(s)

# 按标签或位置索引过滤
print(s['a'])
print(s[['a', 'b', 'c']])
print(s['a':'c'])
print(s[0])
print(s[[0, 1, 2]])
print(s[0:3])

输出:

a    1
b    2
c    3
d    4
e    5
dtype: int64
1
a    1
b    2
c    3
dtype: int64
a    1
b    2
c    3
dtype: int64
1
a    1
b    2
c    3
dtype: int64
a    1
b    2
c    3
dtype: int64

我们可以看到,使用[]方法可以同时用于按标签或位置索引过滤Series,并且可以使用标签范围或位置范围进行切片。

总结

Pandas Series按索引过滤是Pandas中最常用的操作之一。通过本文,我们了解了如何创建Series,并介绍了如何使用.loc[].iloc[][]方法来按标签或位置索引过滤数据。如果你还不熟悉Pandas Series的其他操作,建议继续研究,尽快掌握这个强大的工具,提高数据分析工作效率。