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列执行函数