pandas.DataFrame数据操作

导入数据

import pandas as pd
df = pd.DataFrame({'A':[1,4,7],'B':[2,5,8],'C':[3,6,9]},index=["a","b","c"])
print(df)
										   A  B  C
										a  1  2  3
										b  4  5  6
										c  7  8  9

索引

取值:
loc只接受name索引,iloc只接受位置索引,ix接受name索引和位置索引。

df.loc['b','B']            #取行号b列号B的值
df.iloc[1,1]               #取第2行第2列的值
df.ix['b','B']             #取行号b列号B的值
df.ix[1,1] 				   #取第2行第2列的值

选取多列:

df[['B','C']]              #取列号B、C数据
df.loc[:,'B':'C']          #取列号B至C数据
df.loc[:,['B','C']]        #取列号B、C数据
df.iloc[:,1:3]             #取第2至3列数据
df.iloc[:,[1,2]] 		   #取第2、3列数据
df.ix[:,'B':'C']           #取列号B至C数据
df.ix[:,['B','C']]         #取列号B、C数据
df.ix[:,1:3]               #取第2至3列数据
df.ix[:,[1,2]] 		       #取第2、3列数据

选取多行:

df['b':'c']			       #取行号b至c数据
df[1:3]    				   #取第2至3行数据
df.loc['b':'c'] 		   #取行号b至c数据
df.loc[['b','c']] 		   #取行号b、c数据
df.iloc[1:3] 			   #取第2至3行数据
df.iloc[[1,2]] 	           #取第2、3行数据
df.ix['b':'c'] 		 	   #取行号b至c数据
df.ix[['b','c']] 		   #取行号b、c数据
df.ix[1:3] 			 	   #取第2至3行数据
df.ix[[1,2]] 	           #取第2、3行数据
df.head(2)  			   #取前两行
df.tail(2)  			   #取后两行

选择区域:

df['b':'c'][['B','C']]     #取行号b至c,列号为B、C区域
df[1:3][['B','C']]         #取第2至3行,列号为B、C区域
df.loc['b':'c','B':'C']    #取行号b至c,列号B至C区域
df.iloc[1:3,1:3]           #取第2至3行,第2至3列区域
df.ix['b':'c','B':'C']     #取行号b至c,列号B至C区域
df.ix[1:3,1:3]             #取第2至3行,第2至3列区域

选取单列:

df['C']					   #选取第3列,使用类字典属性,返回Series类型
df.C					   #选取第3列,使用点属性,返回Series类型
df[['C']]				   #选取第3列
df.loc[:,'C']			   #选取第3列,返回Series类型
df.loc[:,['C']]     	   #选取第3列
df.iloc[:,2]			   #选取第3列,返回Series类型
df.iloc[:,[2]]			   #选取第3列
df.ix[:,'C']			   #选取第3列,返回Series类型
df.ix[:,['C']]			   #选取第3列
df.ix[:,2]		    	   #选取第3列,返回Series类型
df.ix[:,[2]]			   #选取第3列

选取单行:

df[1:2]    			       #选取第2行
df.loc['b']    			   #选取第2行,返回Series类型
df.loc[['b']] 			   #选取第2行
df.iloc[1]    			   #选取第2行,返回Series类型
df.iloc[[1]]   			   #选取第2行
df.ix[1] 	  			   #选取第2行,返回Series类型
df.ix[[1]] 	 			   #选取第2行
df.ix['b']     			   #选取第2行,返回Series类型
df.ix[['b']]  			   #选取第2行

数据统计

len(df)					   #统计行数
df.columns.size			   #统计列数
df.index     		       #行索引名称
df.columns       		   #列索引名称
df.mean(1)          	   #对每行数据求平均值
df.mean(0)          	   #对每列数据求平均值
df['C'].value_counts()     #统计列C中各值出现次数
df[df>5]      			   #选取数据集中大于5的数据
df[df.C>5]       		   #选取数据集中列C数据大于5的行
df[df['C'].isin(['3'])]    #选取数据集中列C数据含有’3‘的行
df.copy()				   #拷贝DataFrame
df.describe() 			   #对每列数据进行统计,包括计数,均值,std,最小值、最大值、各分位数。

数据处理

df['A']=df['A'].astype('float64')		   #A列数据格式转换成float64
pd.set_option('mode.use_inf_as_na', True)  #inf值转换成nan值

df.isnull()				 			       #判断是否有Null值
df.notnull()							   #判断是否有Null值
df.notnull().any()/all()        		   #判断每列是否有Null值
df.notnull().all(axis=1)				   #判断每行是否有Null值
df[df.notnull().all(axis=1)]		       #丢弃有Null值的行

df.dropna()							 	   #过滤NaN
df.dropna(how = 'all')    				   #丢弃全为NaN的行
df.dropna(axis = 1)     				   #丢弃有NaN的列
df.dropna(axis=1,how="all")				   #丢弃全为NaN的列
df.dropna(axis=0,subset = ["A", "B"]) 	   #丢弃A、B两列中有NaN的行    
df.fillna() 			 				   #填充NaN
df.fillna(0)							   #常数0填充NaN
df.fillna({’A‘:10,’B‘:20,’C‘:30})		   #字典填充NaN
df['A'].fillna(df['A'].mean(),inplace=True)#平均值填充NaN
# inplace参数:True为直接修改原对象,False为创建并修改副本,原对象不变
df['A'] = df['A'].apply() 				   #A列执行函数

你可能感兴趣的:(pandas,DataFrame,机器学习,深度学习)