Pandas中df, df[], df.loc, df.iloc和df.x的区别

Pandas中df, df[], df.loc, df.iloc和df.x的区别

在本文中,我们将介绍Pandas数据分析库中几种常用的DataFrame操作方式之间的区别,分别是df、df[]、df.loc、df.iloc和df.x。

阅读更多:Pandas 教程

df

在Pandas中,df代表DataFrame对象,即数据框。它是Pandas的一个重要对象,类似于Excel表格。可以通过以下代码创建一个简单的DataFrame:

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
print(df)

输出结果为:

   A  B
0  1  4
1  2  5
2  3  6

DataFrame的每一列称为Series对象,可以通过df[‘列名’]来获取它们:

series_A = df['A']
print(series_A)

输出结果为:

0    1
1    2
2    3
Name: A, dtype: int64

df[]

df[]操作符后面接一个中括号,可以用来切片DataFrame中的行或列。切片方式支持单个索引或切片索引。

索引列

当df[列名]中只有一个列名时,df[]操作符返回一个Series对象:

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

series_A = df['A']
print(series_A)

输出结果为:

0    1
1    2
2    3
Name: A, dtype: int64

切片行

当df[索引开始:索引结束]中包含两个索引时,df[]操作符返回DataFrame对象的一部分:

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)

df_slice = df[0:2]
print(df_slice)

输出结果为:

   A  B  C
0  1  4  7
1  2  5  8

索引行和列

df[行索引, 列索引]可以同时索引行和列,返回的是一个标量值:

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)

value = df.loc[0, 'B']
print(value)

输出结果为:

4

df.loc[行索引, 列索引]和df.iloc[行索引, 列索引]也可以同时索引行和列,区别是df.loc是基于标签的索引,而df.iloc是基于方括号的位置索引。

布尔索引

df[df[‘列名’] > 数值]可以通过一个布尔表达式来选取符合条件的行:

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

df_slice = df[df['B'] > 4]
print(df_slice)

输出结果为:

   A  B
1  2  5
2  3  6

df.loc

df.loc是基于标签的索引方式,用来访问DataFrame对象中的一部分数据。它可以通过标签或布尔数组来选取行和列。

索引列

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

series_A = df.loc[:, 'A']
print(series_A)

输出结果为:

0    1
1    2
2    3
Name: A,dtype: int64

切片行

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)

df_slice = df.loc[0:1, :]
print(df_slice)

输出结果为:

   A  B  C
0  1  4  7
1  2  5  8

索引行和列

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)

value = df.loc[0, 'B']
print(value)

输出结果为:

4

布尔索引

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

df_slice = df.loc[df['B'] > 4, :]
print(df_slice)

输出结果为:

   A  B
1  2  5
2  3  6

df.iloc

df.iloc是基于方括号的位置索引方式,用来访问DataFrame对象中的一部分数据。它可以通过位置或整数索引来选取行和列。

索引列

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

series_A = df.iloc[:, 0]
print(series_A)

输出结果为:

0    1
1    2
2    3
Name: A, dtype: int64

切片行

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)

df_slice = df.iloc[0:2, :]
print(df_slice)

输出结果为:

   A  B  C
0  1  4  7
1  2  5  8

索引行和列

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)

value = df.iloc[0, 1]
print(value)

输出结果为:

4

布尔索引

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

df_slice = df.iloc[df['B'] > 4, :]
print(df_slice)

会出现错误提示:

IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match

因为基于位置的索引不支持布尔索引,这时应该使用loc索引。

df.x

df.x是基于属性的索引方式,可以用来访问DataFrame对象中的一部分数据。它可以通过属性名或属性序列来选取行和列。

索引列

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

series_A = df.A
print(series_A)

输出结果为:

0    1
1    2
2    3
Name: A, dtype: int64

布尔索引

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

df_slice = df[df.B > 4]
print(df_slice)

输出结果为:

   A  B
1  2  5
2  3  6

总结通

过本文的介绍,我们了解到了Pandas数据分析库中几种常用的DataFrame操作方式之间的区别,包括df、df[]、df.loc、df.iloc和df.x。其中,df操作是获取整个DataFrame对象;df[]操作可以用来切片DataFrame中的行或列;df.loc是基于标签的索引方式,用来访问DataFrame对象中的一部分数据;df.iloc是基于方括号的位置索引方式,用来访问DataFrame对象中的一部分数据;df.x是基于属性的索引方式,可以用来访问DataFrame对象中的一部分数据。在应用中,应根据实际情况选择合适的操作方式来获取所需的数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程