python基础:小白自学pandas–DataFrame数据读取的方法

一、直接用方括号[]取下标读取,DataFrame[列标签][行标签]

二、用DataFrame.loc[行标签,列标签]按照行/列标签名index读取

三、用DataFrame.iloc[行序列,列序列]按所在行/列号读取

四、DataFrame.ix[]

本人小白一枚,正在自学python,pandas模块的DataFrame数据类型是一个处理表格数据的强大工具,下面是我对读取DataFrame内指定数据的方法进行了初步学习与探索。

1、只用一个[],读取整列数据:

当DataFrame数据没有定义字符串列标签名时只能用序列数字读取对应列的数据。

当DataFrame数据定义了字符串列标签名时只能用列标签名读取对应列的数据。

[]内用列表读取多列数据。

Ps:[]内是数字切片时,无论DataFrame数据是否有列标签名,都按行序列读取对应范围的整行数据,遵循左开右闭原则。

2、用两个[],第一个[]是要选取的列标签,第二个[]是要选取的行标签:

无论DataFrame数据是否定义字符串行标签名,第二个[]都可以用数字序列表示对应的行。

第二个[]可以用序列号或行标签名切片选取范围,序列号切片左开右闭,行标签名切片左右均包含。

不能读取多列单/多行数据。

DataFrame数据重新排序后,第二个[]用的序列号依然是原来的index,不是新的行号。

下面用定义了行、列标签的df和没有定义行、列标签的df1进行代码示例:

import pandas as pd

df = pd.DataFrame(
    [[0, 1, 2, 3, 4],
     [10, 11, 12, 13, 14],
     [20, 21, 22, 23, 24],
     [30, 31, 32, 33, 34],
     [40, 41, 42, 43, 44]],
    columns=list('ACBDE'),
    index=list('abcde')
        )

df1 = pd.DataFrame(
    [[0, 1, 2, 3, 4],
     [10, 11, 12, 13, 14],
     [20, 21, 22, 23, 24],
     [30, 31, 32, 33, 34],
     [40, 41, 42, 43, 44]]
        )

print(df['A'])        # 读取A列数据
print(df['A':'C'])    # 返回空DataFrame,DataFrame数据有列标签时不能使用切片
print(df[['A', 'C']]) # 读取A、C两列数据
print(df[['A', 'B', 'C']]) # 读取A、B、C三列数据,列顺序按列表顺序重排

print(df1[0])         # DataFrame数据没有列标签时,读取第1列数据
print(df[0:3])       # 数字切片按行序列读取
print(df1[0:3])       # 数字切片按行序列读取
print(df1[[0, 2]])    # 读取第1、3两列数据
print(df1[[0, 2, 1]])    # 读取第1、3、2三列数据,列顺序按列表顺序重排

print(df['A'][0])     # 读取A列第一行数据,即A列a行数据
print(df['A']['a'])   # 读取A列a行数据,即A列第一行数据

print(df['A']['a':'c'])   # 读取A列a到c行数据,行标签名可以用切片,左右均包含
print(df['A'][0:3])   # 读取A列第一到三行数据,左开右闭
print(df['A'][[0, 3]])  # 读取A列第一、三行数据

print(df[['A', 'D']]['a'])  # KeyError: 'a',不能读取多列单行
print(df[['A', 'D']][0])    # KeyError: 0,不能读取多列单行

print(df['A':'B'][0:3])     # 返回空DataFrame,列标签名不能使用切片
print(df1[0:3][0:4])    # 读取第一到三行数据,第二个[]无效

逗号分割行标签和列标签。

定义了行或列标签名时,只能用标签名。

未定义行或列标签名时,用序列号。

列标签缺省时,读取整行数据,行标签不能缺省。

行/列标签均可以用列表和切片读取选定范围内的数据。

使用切片时,无论是标签名切片还是序列号切片都是左右均包含。

继续使用上面的两个DataFrame数据进行代码示例。

print(df1.loc[0])   # 读取整行数据
print(df.loc['a'])  # 读取整行数据
print(df.loc[['a', 'c', 'b']])    # 用列表读取多行数据,行顺序按列表顺序重排

print(df.loc[['a', 'c'], ['A', 'B']])  # 用列表读取选定范围内的数据
print(df.loc['a':'c', ['A', 'B']])    # 用标签名切片和列表读取选定范围内的数据
print(df.loc['a':'c', 'A':'B'])     # 可以用标签名切片读取选定范围内的数据,左右均包含。
print(df.loc['c':'a':-2, 'A':'B'])     # 切片可以设定步长。

print(df1.loc[0:2, 1:3])  # 用序列号切片同样是左右均包含。

逗号分割行序列和列序列,只能使用序列号,不能使用标签名。

用法与 _DataFrame.loc[行标签,列标签]_类似。

切片遵循左开右闭原则,与 _DataFrame.loc_的切片取值不同,需要加强注意。

print(df.iloc[0:2, 1:3])    # 切片左开右闭

pandas版本0.20.0以后弃用,不再进行学习。

Original: https://blog.csdn.net/m0_51367666/article/details/119062373
Author: 懒羊羊1257
Title: python基础:小白自学pandas–DataFrame数据读取的方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/674147/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球