dataframe类型是pandas的主要数据类型,其性质见下方
1.dataframe是由多种数据类型构成的二维表,由行索引、列索引和值组成。
2.dataframe的每一行可以由不同结构数据组成,但每一列的数据必须是同结构。
3.和series一样,找不到输入的数据就会用NAN(not a number)表示缺失值。
4.dataframe和数据库的sql语言一样可以进行类似操作。
下面是代码。
#下面开始进行dataframe的具体操作,首先是生成操作 #这就是dataframe函数最简单的形式,要记住里面有哪几个变量,是怎么分布的 data1=[[1,2,3], [4,5,6]] index1=['a','b'] columns1=['c','d','e'] df=pd.DataFrame(data=data1,index=index1,columns=columns1) '''print(df)''' #无行索引无列索引时,会自动生成数字索引 '''df=pd.DataFrame(np.arange(0,12).reshape(4,3)) print(df) #缺行或列都会自动生成 df=pd.DataFrame(np.arange(0,12).reshape(4,3),index=['a','b','c','d']) print(df)''' #由字典列表直接生成时,字典每一个键都是列索引 '''dict={'a':[1,2],'b':[3,4],'c':[5,6]} df=pd.DataFrame(dict) print(df)''' #行列齐全但是不完全对应,缺失值时,缺失值都会用空值填充 dict={'A':{'a':1,'b':2},'B':{'c':3,'d':4},'C':{'e':5,'f':6}} '''print(pd.DataFrame(dict))''' #由文件输入在下一章文件操作的时候再讲 #dataframe的各种操作,增删查改,以及对index和column1的操作 dictf=pd.DataFrame(dict) #最简单的查看方式是[],包含两种列操作两种行操作 '''print(dictf['A'])#一次性输出一列值 print(dictf[['A','C']])#以列表变量为索引,不能做区间检索 print(dictf[0:1])#能以数字对行做直接操作,但不能对列进行操作 print(dictf['a':'c'])#行索引的区间是全包区间,不能以分开单个行序列做检索 print(dictf[dictf>4])#以条件语句对其中的数据进行筛选,这个筛选在后面会很有用''' '''dataframe中基于loc的检索每行每列和series中是一样的, series中有四种(基于布尔值的操作我没讲),所以dataframe一共有16种,所以这里就不讲太多了''' '''print(dictf.loc['a','A'])#注意顺序,一定是行在前列在后 print(dictf.loc['a':'c','B'])#依然是全包区间 print(dictf.loc[['a','c'],'B']) #这种机制在对行列做筛选的时候异常方便''' '''基于iloc的取值,无视索引,直接按照位值进行操作, 这种操作和上面一样也有前后十六种,只讲最简单的几种''' '''print(dictf.iloc[0:2,0]) #还是前行后列,各个值都是具体的行列值 print(dictf.iloc[[1,2],[2,1]])# 从中筛选我们所需要的项''' #下面介绍增的操作,一般不会在这里面增加单个元素,都是一行一列加 '''df.loc['g']=[7,8,9] #直接增加一行 print(df)''' #这个操作其实就是将两个表直接拼接起来,无视缺失,axis参数取0是行拼接 '''print(pd.concat([df,dictf],axis=0)) ''' #直接增加一列 '''df['h']=[2,3] print(df)''' # 增加多列,其实也是拼接操作,axis取1是列拼接 '''print(pd.concat([df,df],axis=1))''' #下面介绍删减操作 '''del df['c'] df.pop('d') #这个有返回值 print(df) #上面两个操作都只对列有效''' #对行列都同时有效的方法是drop,axis取0是行,1是列 '''print(df.drop(['a'],axis=0)) print(df.drop(['c'],axis=1))''' #下面介绍dataframe的改操作 #改单个数据,保证行列顺序不要反 '''df.loc['a','c']=10 print(df) #inplace表示是否在df本身上做修改 print(df.replace(to_replace=10,value=100,inplace=False))''' #可以直接通过rename函数改索引,这个操作是通过字典替换完成的 print(df.rename(index={'a':'C'},columns={'c':'m'},inplace=False)) #这里介绍一些线性代数的操作,作为多维数组的dataframe'是有转置的 '''print(df.T)''' df[['c','d','e']]=df[['d','c','e']] print(df) #这里是行列互换