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[col]:取列
data.loc[index]:取行
data.iloc[index,col]:取元素
data[index1:index2]:切行
data.iloc[:,col:col2]:切列
DataFrame的运算同Series,这里不在介绍。
声明:1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!