Pandas:Series、DataFrame数据的loc、iloc、ix 查询 / 读取

一、DataFrame的数据查询 / 提取

 

1、对单列、多列进行访问读取

     -- 对单列数据的访问:DataFrame的单列数据为一个Series。根据DataFrame的定义可以知晓DataFrame 是一个带有标签的二维数组,每个标签相当每一列的列名;如:df.a df['a']

     --  对多列数据访问:访问DataFrame多列数据可以将多个列索引名称视为一个列表,df[['a','b']]

 

 2、对多行进行访问读取

 (1)如果只是需要访问DataFrame某几行数据的实现方式则采用数组的选取方式,使用“:”

 (2)head和tail也可以得到多行数据,但是用这两种方法得到的数据都是从开始或者末尾获取的连续数据;默认参数为访问5行,只要在方法后方的“()”中填入访问行数即可实现目标行数的查看。

  

3、查看访问DataFrame中的数据——loc,iloc方法介绍

 

(1)loc方法是针对DataFrame索引名称的切片方法,如果传入的不是索引名称,那么切片操作将无法执行;利用loc方法,能够实现所有单层索引切片操作。

         loc方法使用方法:DataFrame.loc[ 行索引名称或条件 , 列索引名称 ]   # 闭区间(含最后一个值)

(2)iloc和loc区别:是iloc接收的必须是行索引和列索引的位置。

         iloc方法的使用方法:DataFrame.iloc[ 行索引位置 ,  列索引位置 ]   # 开区间(不含最后一个值)

(3)注意点:

         -- 使用loc方法和iloc实现多列切片,其原理的通俗解释就是将多列的列名或者位置作为一个列表或者数据传入。

         --  使用loc,iloc方法可以取出DataFrame中的任意数据。

         --  loc内部还可以传入表达式,结果会返回满足表达式的所有值。

         - - loc更加灵活多变,代码的可读性更高,iloc的代码简洁,但可读性不高。具体在数据分析工作中使用哪一种方法,根据情况而定,大多数时候建议使用loc方法。

         -- 在loc使用的时候内部传入的行索引名称如果为一个区间,则前后均为闭区间;iloc方法使用时内部传入的行索引位置或列索引位置为区间时,则为前闭后开区间。
          


4、查看访问DataFrame中的数据——切片方法之ix

(1)ix方法更像是loc和iloc两种切片方法的融合。ix方法在使用时既可以接收索引名称也可以接收索引位置。

(2)其使用方法:DataFrame.ix[ 行索引的名称或位置或者条件, 列索引名称或位置 ]

(3)控制ix方法需要注意以下几点:

        Ø 使用ix方法时,当索引名称和位置存在部分重叠时,ix默认优先识别名称。
        Ø 尽量使用列索引名称,而非列索引位置,主要用来保证代码可读性。
        Ø 使用列索引位置时,需要注解,同样保证代码可读性。
        Ø 除此之外ix方法还有一个缺点,就是在面对数据量巨大的任务的时候,其效率会低于loc和iloc方法,所以在日常的数据分析工作中建议使用loc和iloc方法来执行切片操作。

代码1:

import pandas as pd

print("-------创建一维Series数据------------")
# 创建方式1:
# s1=pd.Series([90,86,70],index=['leo','kate','john'])
# print(s1)
# 创建方式2:
dict={'leo':90,'kate':86,'john':70}
s1=pd.Series(dict)
print(s1)

print("-----绝对位置查找----")
print(s1[0])

print("-----标签查找-----")
print(s1['kate'])

print("-----列表标签查找----")
print(s1[['john','kate']])

print("----条件表达式查找----")
print(s1[s1>80])

 

结果图:

 

 

 代码2:

import pandas as pd

print("=========创建一组DataFrame数据---使用date_range创建时间索引=======")
date
=pd.date_range('20100101',periods=6)
df
=pd.DataFrame(np.random.randn(6,4), index=date,
columns=list('abcd')) print(df.head()) print(df.index) # 打印数据框的索引 print(df.values) # 打印数据框内的元素值 print("---------读取单列、多列-------") print(df.a) print(df['a']) print(df[['a','b']]) # 读取多列 print("------读取多行-----------") print(df[0:4]) print(df.head(3)) # 打印前3行数据 print("------读取多行、多列-----------") print(df.loc['2010-01-01':'2010-01-04',['a','b']]) # loc是闭区间,尾部包含 print(df.iloc[:4,[0,1]]) # iloc是开区间,尾部不包含 print(df.ix[:4,['a','b']]) # ix 是开区间,尾部不包含 print(df.loc[df.index<'20100105',['a','b']]) # loc 第一个参数可以用条件提取

结果图:

 

 代码3:

import pandas as pd
# 创建DataFrame
df = pd.DataFrame([['Snow','M',22],['Tyrion','M',32],['Sansa','F',18],['Arya','F',14]], 
                  columns=['name','gender','age'])
print(df)
print("----------提取多行、多列-----------")
print(df[['gender','age']])
print(df.loc[1:3,['gender','age']])   # loc是闭区间,尾部包含
print(df.iloc[1:3,[1,2]])              # iloc是开区间,尾部不包含
print(df.iloc[:,1:3])
# 读取第1行到第2行的数据
print(df[1:3])
print(df.iloc[1:3])

#读取第1行和第3行,第0列到第2列,不包括第二列
print(df.iloc[[1,3],0:2])

#读取倒数第3行到倒数第1行的数据,iloc不包含最后一行
print(df[-3:-1])
print(df.iloc[-3:-1])

结果图:

 

 

转载于:https://www.cnblogs.com/wodexk/p/10316258.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用DataFrame类的lociloc方法获取最大的20个数据,代码示例如下:df.sort_values('column_name', ascending=False).head(20).loc[:, ['column_name']] ### 回答2: 要使用Pandas库的DataFrame类的lociloc方法截取最大的20个数据,可以按照以下步骤进行操作: 1. 首先,导入Pandas库并读取数据集,将其存储为一个DataFrame对象。例如,可以使用以下代码读取名为data的数据集: ```python import pandas as pd data = pd.read_csv("data.csv") ``` 2. 接下来,根据需要截取最大的20个数据。如果你想要基于某一列的值进行排序,并截取最大的20个数据,你可以使用sort_values方法。例如,假设你想要基于"column_name"列的值进行排序,可以使用以下代码: ```python sorted_data = data.sort_values(by="column_name", ascending=False) top_20 = sorted_data.head(20) ``` 3. 如果你仅想要基于DataFrame对象的索引进行截取,可以使用iloc方法。示例如下: ```python top_20 = data.iloc[:20] ``` 这将截取DataFrame对象中的前20行数据。 4. 如果要按照特定的条件截取最大的20个数据,你可以使用loc方法。例如,如果你想要基于"column_name"列的值大于某个特定值进行筛选,可以使用以下代码: ```python top_20 = data.loc[data["column_name"] > threshold].head(20) ``` 这将筛选出"column_name"列中大于阈值的数据,并截取最大的20个数据。 总之,根据具体需求,你可以根据值的大小进行排序,或者根据条件进行筛选,然后使用sort_values、head、ilocloc方法截取最大的20个数据。 ### 回答3: 使用Pandas库的DataFrame类的lociloc方法截取最大的20个数据可以按照以下步骤进行: 1. 首先,确保已经导入了Pandas库,并创建了一个DataFrame对象,假设对象名为df。 2. 使用sort_values()方法按照指定的列对DataFrame进行排序。假设我们要按照列名为'column_name'的列进行排序,则可以使用以下代码: df_sorted = df.sort_values(by='column_name', ascending=False) 3. 使用head()方法截取排序后的DataFrame的前20行。这将选择DataFrame的前20个最大值(根据排序条件)。代码示例如下: df_top20 = df_sorted.head(20) 4. 如果想要选择DataFrame中的特定列,可以在lociloc方法中使用切片操作。例如,要选择第一列和第三列,可以使用如下代码: df_top20_selected = df_top20.iloc[:, [0, 2]].copy() 这将获取df_top20的第一列和第三列的数据,并创建一个新的DataFrame对象df_top20_selected。 5. 最后,可以根据需要对df_top20_selected进行进一步的处理,例如可视化、分析等。 总结起来,使用Pandas库的DataFrame类的lociloc方法截取最大的20个数据需要进行排序、截取和选择列的操作。首先排序并截取前20行,然后根据需要选择特定的列。这样就可以获取到DataFrame中最大的20个数据,并对其进一步处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值