Pandas复习笔记(2021.2.4)

1.pd.read_csv 参数 filepath_or_buffer:文件路径及文件名 sep:指定分隔符,默认',',也可 '\t' header:指定行数用来作为列名,数据开始行数。如果文件中没有列名,则默认为0,否则设置为None names:用于结果的列名列表,如果数据文件中没有列标题行,就需要执行header=None dtype:每列数据的数据类型。例如 {‘a': np.float64, ‘b': np.int32} engine:使用分析的引擎,可选C和Python。C引擎快但是Python引擎功能更加完备 nrows:需要读取的行数(从文件头开始算起) encoding:指定字符集类型,通常指定为utf-8注:Python不区分单双引号2.Series 语法:pd.Series(a,index=list('abc')) 其中,a可以是字典、单个数字和列表,当a是字典时,不需要指定index3.DataFrame 语法:pd.DataFrame(data,columns=list1,index=list2) 其中,data可以是二维字典、二维列表和Series,columns指定列名,index指定索引名 当data是Series时,因为它本身有索引,故不需指定索引4.DataFrame 方法 df.rename(columns={"weight":"Weitght","height":"Height"},inplace=True)更改列名,inplace参数=True表示当前脚本中永久替换 df.replace({"Player":{"Curly Armstrong":"xiao"}},inplace=True)更改字段的值 df.sort_values(by=["collage","Height"],ascending=True,inplace=False)对df排序,默认升序 df.min()nax/min/sum/mean5.Series方法 s.unique() s.value_counts() s.isin(['a','b'])6.常用操作 df['class']=1新增列,注意这里不能写成df.class=1 df[(df.Height>=200) | (df.Height<=170)]或的条件 del df['class']删除列,注意这里不能写成del df.class df.sum(axis=0)对列求和 df.sum(axis=1)对行求和 df.sum()默认axis=0 注意;对数组使用sum函数,则a.sum()表示求所有的和,a.sum(axis=1)对行求和,a.sum(axis=0)对列求和7.缺失值 pd.isnull(df.Player)检测缺失值,返回布尔值 df.dropna(axis=0,how='any',inplace=False)删除任何一行中包含至少一个空值,how可选all,表示全为空值才删除行 df.fillna(value='https://www.it610.com/article/test',axis=None,inplace=False)填充空值8.文本数据str方法 s.str.strip()去除Series所有元素中前后的空格 s.str.upper()大写 s.str.endswith("a")返回布尔值 s[s.str.strip().str.endswith("a")] 应用场景:当index或columns有空格,可以 df.columns=df.columns.str.strip() df.Player.str.split(" ")使用空格分割,返回列表 df.Player.str.split(" ").str.get(1)使用get方法获取指定位置的元素 df.Player.str.split(" ",expand=True)expand参数返回一个DataFrame,否则返回Series df.Player.str[:3]截取Player字段的前三个字符9.索引选取 df[:5] df.loc[df.Height>170] df.loc[[2,5,6]] df.iloc[[2,4,6]] df1=df.set_index('Player')以Player列作为索引 df1.loc[['name2','name1']] df.iloc[:10,[0,1]]分别表示行、列的范围 df.loc[:10,['Player','Height']] 分别指定行、列10.数据过滤 df.loc[(df.height>=180)&(df.weight>=80),'flag']="high" df.loc[((df.height>=170)&(df.height<=180))&((df.weight>=70)&(df.weight<=80)),'flag']="msize" df.loc[~(((df.height>=180)&(df.weight>=80))|(((df.height>=170)&(df.height<=180))&((df.weight>=70)&(df.weight<=80)))),'flag']="small"11.多重索引 new_df=df.set_index(keys=['birth_city','birth_state'],append=True,drop=False)append表示是否将列附加到现有索引,即不删除原来索引 new_df.sort_index(na_position='last',inplace=True)排序 new_df.loc[(slice(None),['Akron','Ahvaz','Albany'],slice(None),:] idx=pd.IndexSlice new_df.loc[idx[0:500,['Brooklyn'],['Ohio','New York']],idx['Player']] 注意:python中等于要用==表示 12.分组计算 grouped=df.groupby('director_name') grouped.size() grouped.groups len(grouped) for name,group in grouped: print(name) print(type(group))13.统计计算 grouped.sum() grouped.mean() grouped.std()标准差 grouped.duration.sum()对某一列 grouped.duration.agg([np.mean,np.sum,np.std])对一列作用多个函数 grouped.agg({'duration':np.mean,'director_facebook_likes':np.sum}) 注意:使用numpy的函数时要先导入numpy14.transform df1=df.fillna(0) grouped=df1.groupby('director_name') z_score=lambda s:(s-s.mean())/s.std() grouped[['num_critic_for_reviews','duration','director_facebook_likes']].transform(z_score)15.过滤 grouped.filter(lambda s:s['duration'].mean()>=150)返回满足条件的组的所有数据16.表联结 pandas可以对index进行join (1) concat result=pd.concat(df1,df2,df3) (2) merge pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None) 参数解释: left和right分表表示联结的df how可选inner、outer、left和right,分别标识内联结、取并集和左右联结 on表示左右两边联结的字段名一样时的联结字段名,多个字段联结时为列表,如['A1','A2'] left_on和right_no表示左右两边联结的字段不一样时分别指定联结字段名称 left_index和right_index取值True时表示使用index联结 例: result = pd.merge(left, right, on='key') result = pd.merge(left, right, on=['key1', 'key2']) result = pd.merge(left, right, how='left/right/outer/inner', on=['key1', 'key2']) pd.merge(left,right,left_index=True,right_index=True) pd.merge(left,right,left_on = ['key1','key2'],right_on = ['key3','key4']) pd.merge(left,right,left_index = True,right_on=['key3','key4'])17.透视表 df.pivot_table(data,values,index,columns,aggfunc) 例:pd.pivot_table(df,values = ['duration','director_facebook_likes'],columns = ['director_name'],index=['color'],aggfunc=[np.sum,np.mean])

    推荐阅读