Pandas 每隔n行选取数据

Pandas 每隔n行选取数据

在数据分析中,我们经常需要从数据集中选取每隔n行的数据。在本文中,我们将介绍如何使用Pandas库的方法来实现这个需求。

阅读更多:Pandas 教程

创建测试数据

为了方便演示,我们先创建一个包含40个整数的数据集。

import pandas as pd
import numpy as np

data = pd.DataFrame({'num': np.arange(1, 41)})
print(data)

输出结果为:

    num
0     1
1     2
2     3
3     4
4     5
5     6
6     7
7     8
8     9
9    10
10   11
11   12
12   13
13   14
14   15
15   16
16   17
17   18
18   19
19   20
20   21
21   22
22   23
23   24
24   25
25   26
26   27
27   28
28   29
29   30
30   31
31   32
32   33
33   34
34   35
35   36
36   37
37   38
38   39
39   40

使用iloc方法选取每隔n行数据

我们可以使用Pandas的.iloc方法选取每隔n行的数据。该方法的语法为:

data.iloc[start:end:step]

其中,start表示起始位置(包含),end表示结束位置(不包含),step表示步长。

例如,如果我们需要选取每隔3行的数据,可以按照如下方式实现:

every_third_row = data.iloc[::3]
print(every_third_row)

输出结果为:

    num
0     1
3     4
6     7
9    10
12   13
15   16
18   19
21   22
24   25
27   28
30   31
33   34
36   37
39   40

可以看到,我们成功选取了每隔3行的数据。

除了每隔n行,我们还可以选取特定范围内的行,例如选取第1-5行、第8-12行等。

data.iloc[0:5]  # 第1-5行
data.iloc[7:12]  # 第8-12行

使用query方法选取每隔n行数据

另一种选取每隔n行数据的方法是使用Pandas的.query方法。该方法的语法为:

data.query('index % n == 0')

其中,n表示间隔数。

例如,如果我们需要选取每隔4行的数据,可以按照如下方式实现:

every_fourth_row = data.query('index % 4 == 0')
print(every_fourth_row)

输出结果为:

    num
0     1
4     5
8     9
12   13
16   17
20   21
24   25
28   29
32   33
36   37

同样地,我们也可以选取特定范围内的行。

data.query('index >= 0 and index <= 5')  # 第1-6行
data.query('index >= 7 and index <= 11')  # 第8-12行

性能比较

我们可以使用Python内置的.timeit方法来比较上述两种方法的性能。

import timeit

print(timeit.timeit(lambda: data.iloc[::3], number=100000))
# 0.2926917039999925

print(timeit.timeit(lambda: data.query('index % 3 == 0'), number=100000))
# 4.282083084000002

可以看到,使用.iloc方法的性能比使用.query方法的性能更好。

总结

本文介绍了如何使用Pandas的.iloc方法和.query方法来选取每隔n行的数据,以及选取特定范围内的行。同时,我们也对两种方法的性能进行了比较,发现使用.iloc方法的性能更好。在实际使用中,可以根据具体情况选择合适的方法来处理数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程