python数据分析 pandas库的学习(2)

  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) #这里是行列互换

猜你喜欢

转载自www.cnblogs.com/zdl4/p/12506134.html