python:DataFrame的使用详解,数据的获取

在学完series后,我紧接着把DataFrame的创建也过了一遍,今天就开始整理之路了。
DataFrame里的数据是按照行和列来进行排列,现在我们一起来看下如何对DataFrame的数据按照行或者列进行选择、遍历以及修改。获取之前我们要清楚DataFrame中的数据情况,
首先数据的维度是一维还是二维的我们可以使用ndim查看,数据的行数和列数shape,以及行列的索引值index、columns。

import pandas as pd

df_dict = {
	'name':['ZhangSan','LiSi','WangWu','ZhaoLiu'],
	'age':['18','20','19','22'],
	'weight':['50','55','60','80']
}
df = pd.DataFrame(data=df_dict,index=['001','002','003','004'])
print(df)
# 获取行数和列数
print(df.shape)
# 获取行索引
print(df.index.tolist())
# 获取列索引
print(df.columns.tolist())
# 获取数据的维度
print(df.ndim)
         name age weight
001  ZhangSan  18     50
002      LiSi  20     55
003    WangWu  19     60
004   ZhaoLiu  22     80
(4, 3)
['001', '002', '003', '004']
['name', 'age', 'weight']
2

若数据量过大,则可以用以下两种方式:

获取前两条
df.head(2)
获取后两条
df.tail(2)

接下来讲一讲切片:

import pandas as pd

df_dict = {
	'name':['ZhangSan','LiSi','WangWu','ZhaoLiu'],
	'age':['18','20','19','22'],
	'weight':['50','55','60','80']
}
df = pd.DataFrame(data=df_dict,index=['001','002','003','004'])
# 通过位置索引切片获取一行
print(df[0:1])
# 通过位置索引切片获取多行
print(df[0:3])
# 获取多行里面的某几列
print(df[1:3][['name','age']])
# 获取DataFrame的列
print(df['name'])
# 如果获取多个列
print(df[['name','age']])
         name age weight
001  ZhangSan  18     50
         name age weight
001  ZhangSan  18     50
002      LiSi  20     55
003    WangWu  19     60
       name age
002    LiSi  20
003  WangWu  19
001    ZhangSan
002        LiSi
003      WangWu
004     ZhaoLiu
Name: name, dtype: object
         name age
001  ZhangSan  18
002      LiSi  20
003    WangWu  19
004   ZhaoLiu  22

这和series的切片差不多,类似的用法
df[]不支持直接输入标签索引获取行数据,例如:df[‘001’]
这种方式可以获取一列数据,列如:df[‘name’]
如果想获取多行里面的某几列可写成:df[行][列],例如:df[1:3][[‘name’,‘age’]],将列索引值放到同一个列表中,再将列表放到第二个方括号中.

当然我们也可以使用另外两个比较好用的方法进行获取数据:通过行标签索引筛选loc[],通过行位置索引筛选iloc[]:。
1.df.loc[] 通过标签索引获取行数据,它的语法结构是这样的:df.loc[[行],[列]],方括号中用逗号分隔,左侧是行、右侧是列。千万注意:如果行或者列使用切片的时候,要把方括号去掉,列df.loc[‘001’:‘003’,‘name’:‘weight’]。
2.df.iloc[] 通过位置索引获取行数据,他的操作和loc[]操作是一样的,只要将标签索引改成位置索引就好了。

# 取一行
print(df.iloc[1])
# 取连续多行
print(df.iloc[0:2])
# 取间断的多行
print(df.iloc[[0,2],:])
# 取某一列
print(df.iloc[:,1])
# 某一个值
print(df.iloc[1,0])

但是要注意!!的是:loc和iloc的切片操作在是否包含切片终点的数据有差异。loc[‘001’:‘003’]的结果中包含行索引003对应的行。iloc[0:2] 结果中不包含序号为2的数据,切片终点对应的数据不在筛选结果中。
我们还可以将数据遍历出来
iterrows(): 按行遍历,将DataFrame的每一行转化为(index, Series)对。index为行索引值,Series为该行对应的数据。

for index,row_data in df.iterrows():
    print(index,row_data)

iteritems:()按列遍历,将DataFrame的每一列转化为(column, Series)对。column为列索引的值,Series为该列对应的数据。

for col,col_data in df.iteritems():
    print(col)

大家可以自行去运行尝试,这里就不做演示了.
关于DataFrame的就到这里了,有不恰当的地方请指正。
觉得还行就点个赞呗,

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弈鸣coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值