Pandas的基础类型DataFrame的基本语法

鳄鱼君Ba

发表文章数:518

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » Python教程 » Pandas的基础类型DataFrame的基本语法

DataFrame是一个【表格型】的数据结构,DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维扩展到多维,DataFrame既有行索引,也有列索引。行索引(index)、列索引(columns)、值(values)。

DataFrame的创建

使用ndarray创建,或者字典创建

import pandas as pd
data=pd.DataFrame(data=[[1,2,3],[1,2,3]]) # 使用数组创建
print(data)

        0	1	2
——————————————————————————
0	1	2	3
1	1	2	3

dic={
    'name':['鳄鱼君Ba','www.e1yu.com'],
    'salary':['1200','3333']
}
data=pd.DataFrame(data=dic) # 使用字典创建
print(data)

	name	       salary
————————————————————————————
0	鳄鱼君Ba	1200
1	www.e1yu.com	3333

指定DataFrame数据的列顺序

dic={
    'name':['鳄鱼君Ba','www.e1yu.com'],
    'salary':['1200','3333']
}
data=pd.DataFrame(data=dic,columns=['salary','name']) # 使用字典创建
print(data)

   salary          name
————————————————————————
0   1200         鳄鱼君Ba
1   3333  www.e1yu.com

使用numpy创建一个随机的二维数组,并且指定行索引,列索引,上面的指定列顺序其实就是指定了列索引。

data=pd.DataFrame(data=np.random.randint(0,100,size=(3,2)),index=['a','b','c'],columns=['A','B'])
print(data)

        A	B
——————————————————
a	89	95
b	46	91
c	48	56

使用隐式索引就可以帮助我们完成索引或者切片操作,为什么要使用显式索引呢?因为显式索引可以增加表格的可读性,如果都用012来当做索引可读性较低!

DataFrame的属性

values(数组存储的元素)、columns(获取DataFrame数据的列名称)、index(返回行索引)、shape(返回形状)

data=DataFrame(data=np.random.randint(0,100,size=(3,2)),index=['a','b','c'],columns=['A','B'])
data.values
data.columns
data.index
data.shape

DataFrame索引操作

DataFrame是二维的,它跟二维的numpy数组的索引操作是不同的。首先创建一个5行4列的二维数组:

data=DataFrame(data=np.random.randint(0,100,size=(5,4)),index=['a','b','c','d','e'],columns=['A','B','C','D'])

        A	B	C	D
__________________________________
a	99	30	98	11
b	57	68	29	40
c	22	57	79	4
d	28	49	44	20
e	54	34	1	67

获取DataFrame数据中的某一列数据:

1.根据列索引(显式索引)

print(data['A']) # 中括号里面是列索引,不可以是行索引
a    99
b    57
c    22
d    28
e    54
Name: A, dtype: int32

print(data.A)
a    99
b    57
c    22
d    28
e    54
Name: A, dtype: int32

2.根据列编号(隐式索引)

data.iloc[:,0] # 隐式索引取列
a    99
b    57
c    22
d    28
e    54
Name: A, dtype: int32

获取DataFrame数据中某一行数据:

1.根据行编号(隐式索引012)

data.iloc[0]
A    99
B    30
C    98
D    11
Name: a, dtype: int32

2.根据行索引(显示索引)

data.loc['a']
A    99
B    30
C    98
D    11
Name: a, dtype: int32

切片得到的数据对应的还是原始数据,任何修改都会反应到原始数据中

data=pd.DataFrame(data=dic,columns=['salary','name']) 
slice_data=data['name']
slice_data[0]='大帅比'
print(data)

    salary          name
————————————————————————
0   1200           大帅比
1   3333  www.e1yu.com

想要一份副本不影响原始数据,还是使用copy方法,这里过多介绍,跟Series一样!

iloc(通过隐式索引取行)、loc(通过显式索引取行)。我们再来看一下取元素逗号左侧为行,右侧为列):

data.loc['a','A'] # 使用显式索引取出99
data.iloc[0,0] #使用隐式索引取出99
data.iloc[[0,1],2] # 使用隐式索引先取01行,再取第二列
a    98
b    29
Name: C, dtype: int32

DataFrame的切片操作

对行进行切片:

# 切行
data[0:2]
        A	B	C	D
——————————————————————————————————
a	99	30	98	11
b	57	68	29	40
# 切列
data.iloc[:,0:2]
        A	B
——————————————————
a	99	30
b	57	68
c	22	57
d	28	49
e	54	34

DataFrame索引和切片操作总结:

data索引和切片操作

索引:
data[col]:取列
data.loc[index]:取行
data.iloc[index,col]:取元素
 
切片:
data[index1:index2]:切行
data.iloc[:,col:col2]:切列

DataFrame的运算同Series,这里不在介绍。

未经允许不得转载:作者:鳄鱼君Ba, 转载或复制请以 超链接形式 并注明出处 鳄鱼君Ba
原文地址:《Pandas的基础类型DataFrame的基本语法》 发布于2020-05-24

分享到:
赞(0) 赏杯咖啡

评论 抢沙发

1 + 7 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册