文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。
#示例数据
df = pd.read_csv("pokemon_data.csv",encoding="gbk")
df.head(10)
一.数据选取
Q1:选取第1行的数据(选取单行数据)
(1)按索引标签选取(loc做法)
df.loc[0] #返回的是Series
df.loc[[0]] #如果在里面多加一个方括号,那么返回的是DataFrame
(2)按索引位置选取(iloc做法)
df.iloc[0] #返回的是Series
df.iloc[[0]] #如果在里面多加一个方括号,那么返回的是DataFrame
相信你一定会很好奇:为什么在这里loc和iloc得到的结果是一样的?
下面会来解释
Q2:选取第2到第5行的数据(选取连续行的数据)
(1)按索引标签选取(loc做法)
df.loc[1:4]
你可能产生了一个疑问:不是说切片的末端是取不到的吗,也就是4这个索引所指向的第5行应该是取不到的
这是因为loc是按照索引标签来选取数据的,而不是根据位置来选取,举个例子:
#以姓名这一列作为索引列
df_name = df.set_index("姓名")
df_name
如果我要返回第2行到第5行的数据,该怎么做呢?
#如果按照刚刚的写法,就会出错
df_name.loc[1:4]
#因为loc是按照索引标签选取的,按照下面这种写法就对了
df_name.loc["Ivysaur":"Charmander"]
(2)按索引位置选取(iloc做法)
df.iloc[1:5]
我们需要返回的是第2行到第5行,因此对应的索引位置是1:4,但是由于iloc是按照位置来选取数据的,因此末端索引是取不到的,那么末端就需要再加1,这样就能确保第5行能取到了,而取不到第6行
为了能更直观地体现出loc和iloc的区别,接下来以df_name为示例数据
#示例数据
df_name.head(10)
Q3:选取第2行,第4行,第7行,第10行的数据(选取特定行的数据)
(1)按索引标签选取(loc做法)
df_name.loc[["Ivysaur","VenusaurMega Venusaur","Charizard","Squirtle"]]
(2)按索引位置选取(iloc做法)
df_name.iloc[[1,3,6,9]]
Q4:选取攻击力列(选取单列的数据)
(1)直接方括号+列名
#直接方括号输入列名即可,推荐这种方法
df_name["攻击力"]
#返回的是一个Series