dataframe数据结构的属性,基于上图中的表格数据创建dataframe对象
1个配置文件
DataFrame是python熊猫库中的数据结构,是类似excel的二维表格。
也许和matlab的矩阵差不多,但是matlab的矩阵只能包含数值。(当然,matlab也可以在cell中包含各种类型的数据。)。DataFrame的单元格可以包含数值、字符串等。这类似于excel中的表格。
此外,DataFrame可以设置列名columns和行名index。您还可以通过从位置(如matlab)检索数据,按列名和行名进行定位。具体方法后面会详细说明。
2创建数据框
首先,下面是一个使用Python 3 . 6 . 5版本的例子。Python2也是。(
当然,在执行所有操作之前,您应该导入所需的pandas库。Pandas经常和numpy一起用,所以一起导入。
进口熊猫作为pd
进口编号为NP
如果你还没有安装它,就通过pip安装在cmd上。如果有版本选择问题,请参考之前的帖子。
pip安装熊猫
pip安装数量
2.1直接生产
可以用熊猫的DataFrame函数直接创建。例如,然后随机创建一个4*4的数据帧。
1=PD . data frame(NP . random . randn(4,4),index=list)和columns=list (ABCD))
第一个参数是存储在DataFrame中的数据,第二个参数index是上述行的名称(第三个参数columns是上述列的名称)。
最后两个参数可以使用list输入,但是该列表的长度必须与DataFrame的大小一致。如果不一致,就会出错。当然,这两个参数是可选的。可能没有设置。
而且,这两个列表可以是相同的,但是发现每一行中的每一列的名称在索引或列中是唯一的。
使用python自己的shell符号创建的结果如下所示。
或者在jupyter看起来更酷。以后用jupyter输出显示。
当然,如果数据量小,也可以自己录入创建。
df2=PD.data帧([ 1,2,3,4 ],[ 2,3,4,5 ],
[ 3,4,5,6 ],[ 4,5,6,7 ],
index=list(ABCD),columns=list (ABCD))
您还会得到一个类似这样的数据框:
2.2用字典来写
虽然名为DataFrame的函数仍在使用,但字典中每个键的值代表一列,key是该列的列名。像这样说。
C1={ 姓名:[tzdfbx ,勇敢的枕头, qrdsg ,铁柱],年龄:[17,20,5,40],性别:[
df3=PD.dataframe(DIC1)))))))).
输出如下所示
3查看和过滤数据
没有matlab的工作空间,直接看变量和内容可能是python科学计算的缺点之一。因此,需要特殊代码。把最基本的直接变量名写出来打印出来,不言而喻。
3.1显示列数据类型
dtypes方法可以用来显示每一列的数据类型,比如刚才的df3。
df3.dtypes
输出结果如下。
3.2检查数据帧的头部和尾部
用head看前几行的数据。默认值是前五行,但也可以自己设置。
使用tail查看接下来几行中的数据。还有五个默认值,参数可以自己设置。
比如自由设置6*6数据,只看前五行。
df4=PD . data frame(NP . random . randn(6,6))
4.头部()。
比如只看前三行。
4.头部(3)。
比如看后面五行。
df4.tail()).
比如只看最后两行。
df4。尾巴(2).
3.3显示行名和列名
在索引中显示行名,在列中显示列名。从具体例子感受一下。
显示行名。
df1 .索引
显示列名。
df3 .列
p
3.4查看数据值
使用values查看DataFrame中的数据值,返回的数据是一个数组。
例如,查看所有数据值。
df3 .值
例如,查看某一列中的所有数据值。
df3[名称]。价值观念
还有一个操作,用loc或者iloc查看数据值(不过好像只能按行查看?)。区别在于,loc基于行名,iloc基于数字索引(即行号)。
像这样。
df1.loc[A]
或者这个。
df1.iloc[0]
按列索引数据时,也可以直接使用列名,但这种方法不适用于行索引。
df3[名称]
3.5检查行数和列数
使用形状查看行数和列数。参数0表示行数,参数1表示列数。
df3.shape[0]
df3.shape[1]
4基本操作
有些DataFrame方法可以直接进行数据统计、矩阵计算等基本操作。
4.1换位
直接信T,线性代数在线。
例如,转置先前的df2。
df3。T
4.2描述性统计
使用describe根据列对数据进行描述性统计。
例如,对df1进行描述性统计。
df1.describe()
如果某些列不是数字,将不会进行统计。
如果要对行进行描述性统计,请参考4.1(换位后描述!)
4.3计算
默认情况下使用sum对每列求和,sum(1)是对每行求和。例如
df3.sum()
可以发现,即使元素是字符串,用sum也会加起来。
df3.sum(1)
在一行中,如果有字符串和值,则只计算值。
例如,Apply用于数字乘法。
df2.apply(lambda x:x*2)
如果该元素是一个字符串,该字符串将再次重复。
幂运算类似于matlab,直接用两个*举例。
df2**2
如果幂运算的任何元素是字符串,它将报告一个错误。
4.4新增
列可以像字典一样直接展开,列名对应一个列表,但是注意列表的长度要和索引的长度一致。
df2[E]=[999 , 999 , 999 , 999]
df2
还可以使用insert,它可以指定要插入哪一列,并推迟其他列。
df2.insert(0, F ,[888,888,888,888])
df2
4.5合并
使用连接来合并两个数据框,但仅根据行和列名称,并基于其中一个活动数据框。如下所示,新的df7基于df2的行号索引。
df6=pd。DataFrame([my , name , is , a],index=list(ACDH ),columns=list(G ))
df6
df7=df2.join(df6)
df7
但是,join方法还有一个参数how,可以设置它来合并两个数据帧的交集或并集。参数“inner”表示交集,“outer”表示并集。
df8=df2.join(df6,how=inner )
df8
df9=df2.join(df6,how=outer )
df9
如果要合并多个数据框,可以使用list组装几个数据框,然后使用concat将其转换为新的数据框。
df10=pd。DataFrame([1,2,3,4],index=list(ABCD ),columns=[a])
df11=pd。DataFrame([10,20,30,40],index=list(ABCD ),columns=[b])
df12=pd。DataFrame([100,200,300,400],index=list(ABCD ),columns=[c])
list1=[df10。t,df11。t,df12。T]
df13=pd.concat(list1)
df13