Pandas
一、创建
import pandas as pd import numpy as np boolean=[True,False] gender=["男","女"] color=["white","black","yellow"] data=pd.DataFrame({ "height":np.random.randint(150,190,100), "weight":np.random.randint(40,90,100), "smoker":[boolean[x] for x in np.random.randint(0,2,100)], "gender":[gender[x] for x in np.random.randint(0,2,100)], "age":np.random.randint(15,90,100), "color":[color[x] for x in np.random.randint(0,len(color),100) ] } )
二、常用属性
#属性 data.columns data.index data.values data.shape ################################################### #统计信息 data.count() data.info() data.describe() #列累计和 data.cumsum() #列插值相减 data.diff(periods=1,axis=0) #相关系数 data.corr() #统计某列数据分布(数值和对应的数量) data['color'].value_counts() #枚举某一列 data['gender'].unique() #返回前N条,后M条 data.head(n=N) data.tail(n=M) ##选择数据, #第一种是根据位置,第二种是根据index和columns的名字选择 data.iloc[0,0] data.loc[2:4,['height','weight']]
三、方法
#根据布尔值筛选数据 data[data['gender']=='男'] #返回每个元素在当前列的排名,从小到大 data.rank() #根据列进行排序 data.sort_values(by=['height', 'weight'],ascending=False) #修改index data.reindex(index=np.arange(len(data))[::-1]) #重置index data.reset_index() #直接删除某一列 del data['height'] #删除指定列或行,axis删除列。inplace表示替换原数据 data.drop(['height','weight'],axis=1,inplace=True)
缺失值处理
dropna:删除缺失值
isna、notna:判断缺失值
fillna、interpolate:填补缺失值
dataFrame.dropna(axis = 0,how ='any',thresh = None,subset = None,inplace = False )
axis:确定删除缺失值的行或列。axis=0:删除包含缺失值的行。axis=1:删除包含缺失值的列。
how:删除方式。how=’any’:删除包含缺失值的行或列。how=’all’:只有行或列都为缺失值才会被删除。
thresh:设置需要的非缺失值。当thresh=2:保存包含至少有两个非缺失值的行或列。
subset:删除行时候,可选择某些列,subset=['height','weight']
inplace:是否对原数据集进行处理替换。inplace=True替换修改原对象。
dataFrame.isna()用来判断DataFrame是否缺失值。如果是缺失值则为True,否则为False。
dataFrame.notna()刚好相反,如果是缺失值则为False,否则为True。
DataFrame.fillna(value = None,method= None, inplace= False,limit =None)
value:用于指定用何值填充缺失值。可以是一个标量,如value=0,用0填补所有缺失值。可以是一个字典,键为需要填充的列名,值为需要填充的内容。
method:
pad/ffill:用前一个非缺失值去填充该缺失值
backfill/bfill:用下一个非缺失值填充该缺失值
None:指定一个值去替换缺失值(缺省默认这种方式),此时用value替换
inplace:是否替换原对象。
limit:在指定method时,控制向前或向后填充缺失值的最大数量。
四、高级方法
4.1 map
该函数对pandas的某一列执行函数。
#①使用字典进行映射 data["gender"] = data["gender"].map({"男":1, "女":0}) #②使用函数 def age_map(x): gender = x if x >50 else 50 return gender #注意这里传入的是函数名,不带括号 data["age"] = data["age"].map(age_map)
4.2 聚合groupby
https://baijiahao.baidu.com/s?id=1644900050125304030&wfr=spider&for=pc
浙公网安备 33010602011771号